kubernetesをインストールしてみました

ITのブログ

概要

kubernetesの知識をつけたいと思い、検証してみました。kubernetesのマニュアルの手順を忠実に実施したいと思いましたが、上手くいかず、トライアンドエラーが必要でした。色々な方が手順を公開していますが、私はこちらの手順で動作させることが出来ました。
本記事には、calico、helmのインストールも記載しています。

kubernetesの1.26は以下の仕様変更によりうまくインストールできなかったため、1.25.5にしました。
https://kubernetes.io/blog/2022/11/18/upcoming-changes-in-kubernetes-1-26/#cri-api-removal

環境

#ソフトウェアバージョン
1Rocky Linux9.1
2kubernetes1.25.5
3containerd.io1.6.14-3.1
4calico3.24.5
5helm3.10.3

手順

kubernetesのインストール

事前設定

1.firewalldの停止
systemctl disable --now firewalld

2.swapの無効化
swapoff -a
sed -e '/swap/s/^/#/g' -i /etc/fstab

3.iptablesがブリッジを通過するトラフィックを処理できるようにする
cat <<EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

3.その他設定①
cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

4.その他設定②
cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

5.その他設定④
sysctl --system

6.SELinuxの無効化
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

CRIのインストール

1.Containerdのインストール
yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

yum update -y && yum install -y containerd.io

mv /etc/containerd/config.toml /etc/containerd/config.toml.orig
containerd config default > /etc/containerd/config.toml
vi /etc/containerd/config.toml
[plugins]
           SystemdCgroup = true

systemctl enable --now containerd.service

kubernetesのインストール

1.kubernetesのrepoの設定

cat > /etc/yum.repos.d/k8s.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

2.kubelet、kubectl、kubeadmのインストール

dnf install -y kubelet-1.25.5-0 --disableexcludes=kubernetes
dnf install -y kubectl-1.25.5-0 --disableexcludes=kubernetes
dnf install -y kubeadm-1.25.5-0 --disableexcludes=kubernetes

サーバ固有設定

1.と2.と3.の設定はOSテンプレートに入れることも可能です。

1.ホスト名の設定
hostnamectl set-hostname <ホスト名>

2.hostsの修正
vi /etc/hosts
※必要な名前解決を追加

masterを構成

1.masterの接続するIPアドレスの指定
vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=--node-ip=<IPアドレス>
masterサーバで接続するIPアドレスを指定したい場合は設定する。

2.masterの構成
kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=<IPアドレス>
※apiserer-advertise-addressは接続するIPアドレスを指定したい場合は設定する。

3.ユーザでkubectlを使用するための設定
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf

workerの参加

kubeadm initの実行結果で表示された「kubeadm join」を実行する。

躓いた箇所

  • masterのメモリを8GBとした場合、kubectlで繋がらなくなる事象がありました。そのため、メモリを16GBに変更しました。
  • 最初はdockerを使うことを考えましたが、上手く構成できなかったためcontainerdに変更しました。kubernetesの現在のバージョンではcontainerdの方が優先的に選択されるようです。

calicoのインストール

コンテナ・ネットワーク・インターフェース(CNI)はcalicoを選択しました。calicoのインストールはマニュアルの通りに実施できました。

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/tigera-operator.yaml

curl https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/custom-resources.yaml -O

kubectl create -f custom-resources.yaml

helmのインストール

tarのインストール

dnf install tar

gitのインストール

dnf install git

helmのインストール

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

コメント

タイトルとURLをコピーしました