kubeadm
Note
- 1 台あたり 2 GB以上のメモリ
- 2 コア以上の CPU
- クラスター内のすべてのマシン間で通信可能なネットワーク
- ユニークな hostname、MACアドレス、と product_uuid
 物理マシンの場合は気にする必要はないですが、仮想マシンの場合は気を付けましょう。
- マシン内の特定のポートが開いていること。
- Swapがオフであること。kubeletが正常に動作するためにはswapは必ずオフでなければなりません。 のような感じで、swap パーティション/swap ファイルのマウント設定を解除して再起動すると Swap をオフにできます。
kubeadm、kubelet、kubectlのインストール
- 
Kubernetes の apt リポジトリ利用のためのパッケージ追加 
- 
リポジトリ公開鍵のダウンロード 
- 
Kubernetes の apt リポジトリの追加 
- 
kubelet、kubeadm、kubectlをインストール 
ネットワーク設定
echo "net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-arptables = 1" | \
    sudo tee /etc/sysctl.d/99-bridge-nf-call-iptables
sudo sysctl -p /etc/sysctl.d/99-bridge-nf-call-iptables 
初期設定
- 
コントロールプレーンノードの初期化 コントロールプレーンノードの初期化は kubeadm initで実行します。
 また、何らかの理由でコントロールプレーンをリセットしたい場合は、sudo kubeadm reset⇒sudo kubeadm initのようにリセットコマンドを実行してください。ネットワークプラグインに Calico を使用するため、 -pod-network-cidrオプションで CIDR を指定します。
 初期化コマンドの最後に表示されるkubeadm joinコマンドは、このコントロールプレーンノードの K8s クラスタにノードを追加する時に必要になるので控えておきます。このコマンドを実行して下記のようなエラーが出る場合は containerd を疑ってください。 $ sudo kubeadm init [init] Using Kubernetes version: v1.28.2 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: time="2023-10-03T12:48:44Z" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService" , error: exit status 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher- 
containerd が古い場合 containerd ⇒ containerd.io に更新します。 
- 
元々 containerd.io だった場合 sudo mv /etc/containerd/config.toml /etc/containerd/config.toml.bak sudo systemctl restart containerdconfig.toml が原因だった場合、config.toml を元に戻して containerd を再起動すれば同じエラーが再現するようになるはずですが、一度、エラーが発生しない状態になると、config.toml を戻しても、それまでのエラーは発生しなくなるようです。 
 
- 
- 
kubeadm の初期設定 
- 
Calico ネットワークプラグインのインストール Quickstart for Calico on Kubernetes | Calico Documentation - 
インストール 
- 
watch kubectl get pods -n calico-systemを実行して、STATUSがRunningになるまでしばらく待つ。 概ね 5 分くらい。
- 
自ノードの状態確認 kubectl get nodes -o wideコマンドで自ホスト名の STATUS が Ready になっていれば Calico が正しくインストールできています。
 
- 
- 
Control Plane ノードで Pod を起動できるようにする セキュリティ上の理由で、Control Plane ノードでは Pod を起動しない方がよいらしい。 kubectl taint nodes --all node-role.kubernetes.io/control-plane- kubectl taint nodes --all node-role.kubernetes.io/master-- 
pod の起動 
- 
サービスの起動 
 ブラウザで http://localhost:30829/を参照すると 2048 を楽しめると思います。
- 
- 
K8s にワーカーノードを追加する sudo kubeadm join 10.0.2.15:6443 --token sa25p1.iha95ow1vmn9q6gy \ --discovery-token-ca-cert-hash sha256:8fe1116f607aca35238bd76c80b73e56c386b996d2039fb41b61490d79332758token と ハッシュ値が分からなくなった場合は、コントロールプレーンノードで下記コマンドを実行してください。 - 
token の値が分からなくなった場合 
- 
token を再発行する場合 
- 
--discovery-token-ca-cert-hashのハッシュ値が分からない場合
 
-