kubernetes-the-hard-way/docs/ja/09-bootstrapping-kubernetes...

5.0 KiB
Raw Blame History

Kubernetesワーカーードのブートストラップ

このラボでは、2つのKubernetesワーカーードをブートストラップします。以下のコンポーネントがインストールされます: runc, container networking plugins, containerd, kubelet, および kube-proxy

前提条件

Kubernetesバイナリとsystemdユニットファイルを各ワーカーインスタンスにコピーします:

for host in node-0 node-1; do
  SUBNET=$(grep $host machines.txt | cut -d " " -f 4)
  sed "s|SUBNET|$SUBNET|g" \
    configs/10-bridge.conf > 10-bridge.conf

  sed "s|SUBNET|$SUBNET|g" \
    configs/kubelet-config.yaml > kubelet-config.yaml

  scp 10-bridge.conf kubelet-config.yaml \
  root@$host:~/
done
for host in node-0 node-1; do
  scp \
    downloads/runc.arm64 \
    downloads/crictl-v1.28.0-linux-arm.tar.gz \
    downloads/cni-plugins-linux-arm64-v1.3.0.tgz \
    downloads/containerd-1.7.8-linux-arm64.tar.gz \
    downloads/kubectl \
    downloads/kubelet \
    downloads/kube-proxy \
    configs/99-loopback.conf \
    configs/containerd-config.toml \
    configs/kubelet-config.yaml \
    configs/kube-proxy-config.yaml \
    units/containerd.service \
    units/kubelet.service \
    units/kube-proxy.service \
    root@$host:~/
done

このラボのコマンドは各ワーカーインスタンス(node-0node-1)で実行する必要があります。sshコマンドを使用してワーカーインスタンスにログインします。例:

ssh root@node-0

Kubernetesワーカーードのプロビジョニング

OS依存関係をインストールします:

{
  apt-get update
  apt-get -y install socat conntrack ipset
}

socatバイナリはkubectl port-forwardコマンドのサポートを有効にします。

スワップの無効化

デフォルトでは、swapが有効になっているとkubeletは起動に失敗します。Kubernetesが適切なリソース割り当てとサービス品質を提供できるようにするために、スワップを無効にすることが推奨されています。

スワップが有効かどうかを確認します:

swapon --show

出力が空であればスワップは有効ではありません。スワップが有効であれば、次のコマンドを実行してスワップを即座に無効にします:

swapoff -a

再起動後もスワップが無効のままであることを確認するには、Linuxディストリビューションのドキュメントを参照してください。

インストールディレクトリを作成します:

mkdir -p \
  /etc/cni/net.d \
  /opt/cni/bin \
  /var/lib/kubelet \
  /var/lib/kube-proxy \
  /var/lib/kubernetes \
  /var/run/kubernetes

ワーカーバイナリをインストールします:

{
  mkdir -p containerd
  tar -xvf crictl-v1.28.0-linux-arm.tar.gz
  tar -xvf containerd-1.7.8-linux-arm64.tar.gz -C containerd
  tar -xvf cni-plugins-linux-arm64-v1.3.0.tgz -C /opt/cni/bin/
  mv runc.arm64 runc
  chmod +x crictl kubectl kube-proxy kubelet runc
  mv crictl kubectl kube-proxy kubelet runc /usr/local/bin/
  mv containerd/bin/* /bin/
}

CNIネットワークの構成

bridgeネットワーク構成ファイルを作成します:

mv 10-bridge.conf 99-loopback.conf /etc/cni/net.d/

containerdの構成

containerd構成ファイルをインストールします:

{
  mkdir -p /etc/containerd/
  mv containerd-config.toml /etc/containerd/config.toml
  mv containerd.service /etc/systemd/system/
}

kubeletの構成

kubelet-config.yaml構成ファイルを作成します:

{
  mv kubelet-config.yaml /var/lib/kubelet/
  mv kubelet.service /etc/systemd/system/
}

Kubernetesプロキシの構成

{
  mv kube-proxy-config.yaml /var/lib/kube-proxy/
  mv kube-proxy.service /etc/systemd/system/
}

ワーカーサービスの起動

{
  systemctl daemon-reload
  systemctl enable containerd kubelet kube-proxy
  systemctl start containerd kubelet kube-proxy
}

検証

このチュートリアルのコンピュートインスタンスではこのセクションを完了する権限がありません。jumpboxマシンから次のコマンドを実行してください。

登録されているKubernetesードをリストします:

ssh root@server \
  "kubectl get nodes \
  --kubeconfig admin.kubeconfig"
NAME     STATUS   ROLES    AGE    VERSION
node-0   Ready    <none>   1m     v1.28.3
node-1   Ready    <none>   10s    v1.28.3

次: リモートアクセス用のkubectlの構成