コントロールプレーンの初期化
kubeadm の初期化
コントロールプレーンノードの初期化は kubeadm init
で実行します。
また、何らかの理由でコントロールプレーンをリセットしたい場合は、sudo kubeadm reset
⇒ sudo kubeadm init
のようにリセットコマンドを実行してください。
$ sudo kubeadm init --pod-network-cidr=192.168.0.0/16
[init] Using Kubernetes version: v1.28.2
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
・・・
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.62.130:6443 --token 153nr1.z3bvctgay3myz86h \
--discovery-token-ca-cert-hash sha256:c237ca998bca7ca18116c0d78c366d7ee0f3edd9a396550b3d8b8e8f2241a277
初期化コマンドの最後に表示される kubeadm join
コマンドは、このコントロールプレーンノードの K8s クラスタにノードを追加する時に必要になります。
このコマンドを確認するコマンドもありますので、それほど重要な情報ではありません。
-
よくある?問題
-
containerd 関連のエラーが出る
$ sudo kubeadm init --pod-network-cidr=192.168.0.0/16 [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-12T12:27:45Z" 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
-
対処方法
-
その 1
containerd ⇒ containerd.io に更新します。
-
その 2
元々 containerd.io だった場合は config.toml を無効にして再起動します。
config.toml が原因だった場合、config.toml を元に戻して containerd を再起動すれば同じエラーが再現するようになるはずですが、一度、エラーが発生しない状態になると、config.toml を戻しても、それまでのエラーは発生しなくなるようです。
-
-
kubeadm のコンフィグ設定
設定ファイルをコピーしてパーミッションを設定するだけです。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl コマンドの補完
-
bash
kubectl completion bash > $HOME/.bashrc_k8s echo "source $HOME/.bashrc_k8s" >> $HOME/.bashrc source $HOME/.bashrc
kubectl [tabキー]
で、kubectl のサブコマンドの候補が表示されれば正しく設定ができています。
Calico ネットワークプラグインのインストール
Quickstart for Calico on Kubernetes | Calico Documentation
-
インストール
-
watch kubectl get pods -n calico-system
を実行して、STATUS
がRunning
になるまでしばらく待つ。
概ね 3 分くらい。 -
自ノードの状態確認