概要
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
環境
# | ソフトウェア | バージョン |
1 | Rocky Linux | 9.1 |
2 | kubernetes | 1.25.5 |
3 | containerd.io | 1.6.14-3.1 |
4 | calico | 3.24.5 |
5 | helm | 3.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
コメント