5.0 KiB
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"
}