Kubernetes the Hard Way on Azure : 10. kubectl
こんにちは。
引き続き、Kubernetes the Hard Way on Azure を進めていきます。
ついに 10/15 まできたぞ〜!
10. Configuring kubectl for Remote Access
このラボでは、管理者のユーザ資格情報に基づいて、kubectl
コマンドラインユーティリティ用の kubeconfig
ファイルを生成します。
このラボのコマンドは、前回までに生成したクライアント認証を保管しているディレクトリで実行してください。
今回はこのあたり。
途中躓いたので、参考にされる場合は注意して読み進めてください。
The Admin Kubernetes Configuration File
各 kubeconfig には、接続する Kubernetes APIサーバ情報が必要です。高可用性をサポートするために、Kubernetes APIサーバの前にある外部ロードバランサに割り当てられたIPアドレスが使用されます。
静的IPアドレス [kubernetes-the-hard-way] を取得します。
KUBERNETES_PUBLIC_ADDRESS=$(az network public-ip show -g kubernetes \ -n kubernetes-pip --query ipAddress -otsv)
admin ユーザとしての認証に合わせた kubeconfig ファイルを生成します。
kubectl config set-cluster kubernetes-the-hard-way \ --certificate-authority=ca.pem \ --embed-certs=true \ --server=https://${KUBERNETES_PUBLIC_ADDRESS}:6443 kubectl config set-credentials admin \ --client-certificate=admin.pem \ --client-key=admin-key.pem kubectl config set-context kubernetes-the-hard-way \ --cluster=kubernetes-the-hard-way \ --user=admin kubectl config use-context kubernetes-the-hard-way
Verification
リモートKubernetes クラスタのヘルスチェックを行います。
kubectl get componentstatuses The connection to the server localhost:6443 was refused - did you specify the right host or port?
おや・・・出ないぞ・・・kubeconfig の設定状況を確認してみます。
# 設定確認 kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://kubernetes.docker.internal:6443 name: docker-desktop contexts: - context: cluster: docker-desktop user: docker-desktop name: docker-desktop - context: cluster: docker-desktop user: docker-desktop name: docker-for-desktop - context: cluster: kubernetes-the-hard-way user: admin name: kubernetes-the-hard-way current-context: kubernetes-the-hard-way kind: Config preferences: {} users: user: client-certificate-data: REDACTED client-key-data: REDACTED
[kubernetes-the-hard-way] クラスタの設定ができていない・・・?
admin ユーザとしての認証に合わせた kubeconfig ファイルを生成します。
これが気になるので、kubectl config
群の全てのコマンドを sudo
で再度実行してから確認してみます。
kubectl config view # 出力結果 apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://kubernetes.docker.internal:6443 name: docker-desktop - cluster: certificate-authority-data: DATA+OMITTED server: https://**.***.**.**:6443 name: kubernetes-the-hard-way contexts: - context: cluster: docker-desktop user: docker-desktop name: docker-desktop - context: cluster: docker-desktop user: docker-desktop name: docker-for-desktop - context: cluster: kubernetes-the-hard-way user: admin name: kubernetes-the-hard-way current-context: kubernetes-the-hard-way kind: Config preferences: {} users: - name: admin user: client-certificate: /Users/hoge/HardWay/admin.pem client-key: /Users/hoge/HardWay/admin-key.pem - name: docker-desktop user: client-certificate-data: REDACTED client-key-data: REDACTED
ほっ・・・出てくるようになりました。
ここでもう一度試します。
kubectl get componentstatuses # 出力結果 NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health":"true"} etcd-1 Healthy {"health":"true"}
よしっ。ノード一覧も確認します。
Kubectl get nodes # 出力結果 NAME STATUS ROLES AGE VERSION worker-0 Ready <none> 50m v1.15.0 worker-1 Ready <none> 50m v1.15.0
自分の端末からAPIサーバに接続し、各ワーカーノードの状態を確認できるようになりました。
まとめ
- リモートからKubernetes クラスタを操作できるようにする
- ロードバランサの外部IPを指定してkubeconfigに設定
- admin ユーザとして行うこと
- ロードバランサの外部IPを指定してkubeconfigに設定
11.に続きます。