2022 年 8 月時点
これから作成した仮想マシン 3 台にそれぞれセットアップをしていきます。
構築するにあたり、公式のクラスタ作成及び管理ツールである kubeadm を利用します。
また、このドキュメントは間違ったことを書いているかもしれません。
詳しくは公式ドキュメントをお読み下さい。
パッケージ | バージョン | 役割 |
---|---|---|
Kubernetes | 1.24.4 | Kubernetes |
containerd | 1.6.7 | CRI |
flannel | 0.19.1 | CNI |
予め管理者権限に切り替えておくと便利です。
kubelet が正常に動作するためには swap は必ずオフでなければなりません。
swapoff -a
再起動すると Swap 領域がもとに戻ってしまうので、/etc/fstab
の Swap 領域に関する部分をコメントアウトします。
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
レガシーバイナリがインストールされていることを確認
sudo apt-get install -y iptables arptables ebtables
レガシーバージョンに切り替え
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo update-alternatives --set arptables /usr/sbin/arptables-legacy
sudo update-alternatives --set ebtables /usr/sbin/ebtables-legacy
Kubernetes v1.24 から kubelet から dockershim コンポーネントが削除されました。
Docker エンジンを使用する場合は、cri-dockerd を利用する必要があります。
今回は containerd を使用します。
cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
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
sysctl --system
apt-get update && apt-get install -y apt-transport-https ca-certificates curl software-properties-common
Docker 公式の GPG 鍵を追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Docker の apt リポジトリの追加
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
containerd のインストール
apt-get update && apt-get install -y containerd.io
containerd の設定
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
containerd の再起動
systemctl restart containerd
systemdcgroup ドライバの構成
/etc/containerd/config.toml
のファイルに記載されている
SystemdCgroup = false
を変更する
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
...
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
containerd の再起動
systemctl restart containerd
Kubernetes apt リポジトリを使用するために必要なパッケージをインストール
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl
Google Cloud 公開署名鍵をダウンロードし、Kubernetes apt リポジトリを追加
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
バージョンを固定
sudo apt-mark hold kubelet kubeadm kubectl
Bash による補完はbash-completion
をインストールしている必要があります。
sudo apt-get install bash-completion
すべてのシェルセッションにて kubectl の補完スクリプトを source できるようにするには 2 つの方法があります。
- 補完スクリプトを
/etc/bash_completion.d
ディレクトリに追加する
kubectl completion bash >/etc/bash_completion.d/kubectl
- 補完スクリプトを
~/.bashrc
内で source する
echo 'source <(kubectl completion bash)' >>~/.bashrc
Next> Kubernetes クラスタ構築(2)
ドキュメント作成にあたりkubeadm のインストール (公式)を参考にしています