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

5.0 KiB
Raw Blame History

Kubernetesコントロールプレーンのブートストラップ

このラボでは、Kubernetesコントロールプレーンをブートストラップします。以下のコンポーネントがコントローラーマシンにインストールされますKubernetes API Server、Scheduler、およびController Manager。

前提条件

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

scp \
  downloads/kube-apiserver \
  downloads/kube-controller-manager \
  downloads/kube-scheduler \
  downloads/kubectl \
  units/kube-apiserver.service \
  units/kube-controller-manager.service \
  units/kube-scheduler.service \
  configs/kube-scheduler.yaml \
  configs/kube-apiserver-to-kubelet.yaml \
  root@server:~/

このラボのコマンドはすべてコントローラーインスタンスserver上で実行する必要があります。sshコマンドを使用してコントローラーインスタンスにログインします。例:

ssh root@server

Kubernetesコントロールプレーンのプロビジョニング

Kubernetes構成ディレクトリを作成します

mkdir -p /etc/kubernetes/config

Kubernetesコントローラーバイナリのインストール

Kubernetesバイナリをインストールします

{
  chmod +x kube-apiserver \
    kube-controller-manager \
    kube-scheduler kubectl

  mv kube-apiserver \
    kube-controller-manager \
    kube-scheduler kubectl \
    /usr/local/bin/
}

Kubernetes API Serverの構成

{
  mkdir -p /var/lib/kubernetes/

  mv ca.crt ca.key \
    kube-api-server.key kube-api-server.crt \
    service-accounts.key service-accounts.crt \
    encryption-config.yaml \
    /var/lib/kubernetes/
}

kube-apiserver.service systemdユニットファイルを作成します

mv kube-apiserver.service \
  /etc/systemd/system/kube-apiserver.service

Kubernetes Controller Managerの構成

kube-controller-manager kubeconfigを適切な場所に移動します

mv kube-controller-manager.kubeconfig /var/lib/kubernetes/

kube-controller-manager.service systemdユニットファイルを作成します

mv kube-controller-manager.service /etc/systemd/system/

Kubernetes Schedulerの構成

kube-scheduler kubeconfigを適切な場所に移動します

mv kube-scheduler.kubeconfig /var/lib/kubernetes/

kube-scheduler.yaml構成ファイルを作成します:

mv kube-scheduler.yaml /etc/kubernetes/config/

kube-scheduler.service systemdユニットファイルを作成します

mv kube-scheduler.service /etc/systemd/system/

コントローラーサービスの起動

{
  systemctl daemon-reload

  systemctl enable kube-apiserver \
    kube-controller-manager kube-scheduler

  systemctl start kube-apiserver \
    kube-controller-manager kube-scheduler
}

Kubernetes API Serverの完全な初期化まで最大10秒かかる場合があります。

検証

kubectl cluster-info \
  --kubeconfig admin.kubeconfig
Kubernetesコントロールプレーンはhttps://127.0.0.1:6443で実行中です

Kubelet認可のためのRBAC

このセクションでは、Kubernetes API Serverが各ワーカーードのKubelet APIにアクセスできるようにRBAC権限を構成します。Kubelet APIへのアクセスは、メトリクスの取得、ログの取得、およびポッドでのコマンドの実行に必要です。

このチュートリアルでは、Kubeletの--authorization-modeフラグをWebhookに設定します。Webhookモードでは、SubjectAccessReview APIを使用して認可を決定します。

このセクションのコマンドは、クラスタ全体に影響を与えるため、コントローラーノード上で実行する必要があります。

ssh root@server

system:kube-apiserver-to-kubelet ClusterRoleを作成し、Kubelet APIへのアクセス権限とポッドの管理に関連するタスクの実行権限を付与します

kubectl apply -f kube-apiserver-to-kubelet.yaml \
  --kubeconfig admin.kubeconfig

検証

この時点で、Kubernetesコントロールプレーンが稼働しています。jumpboxマシンから以下のコマンドを実行して検証します:

Kubernetesバージョン情報のHTTPリクエストを送信します

curl -k --cacert ca.crt https://server.kubernetes.local:6443/version
{
  "major": "1",
  "minor": "28",
  "gitVersion": "v1.28.3",
  "gitCommit": "a8a1abc25cad87333840cd7d54be2efaf31a3177",
  "gitTreeState": "clean",
  "buildDate": "2023-10-18T11:33:18Z",
  "goVersion": "go1.20.10",
  "compiler": "gc",
  "platform": "linux/arm64"
}

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