Contents
概要
kubectlはKubernetesの導入時に合わせてインストールされますが、Kubernetesのノードに直接SSHさせたくない場合は、他のホストからリモートでkubectlを実行する必要があります。
kubectlのインストール
公式サイトを参考にkubectlをインストールします。
[root@centos ~]# curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" [root@centos ~]# chmod +x ./kubectl [root@centos ~]# mv ./kubectl /usr/local/bin/kubectl [root@centos ~]# kubectl version --client
リモートのKubernetesに接続
認証情報の取得
リモートのKubernetesに接続するには、接続先Kubernetesの認証情報を取得する必要があります。
root@k8s-01:~# kubectl config view --raw
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: xxxxxxxx
server: https://192.168.68.11:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: xxxxxxxx
client-key-data: xxxxxxxx
クライアントに認証情報を追加
クライアントに同じ認証情報を追加することでローカルと同じように扱うことができます。
[root@centos ~]# mkdir /root/.kube [root@centos ~]# cat <<EOF > /root/.kube/config apiVersion: v1 clusters: - cluster: certificate-authority-data: xxxxxxxx server: https://192.168.68.11:6443 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes current-context: kubernetes-admin@kubernetes kind: Config preferences: {} users: - name: kubernetes-admin user: client-certificate-data: xxxxxxxx client-key-data: xxxxxxxx EOF
リモートのKubernetesの操作
単に作成したCluster上でkubectlを使用する場合は、そのClusterに対してのアクセスのみとなる為、あまり意識する必要はありませんが、リモートの場合は複数のクラスタを切り替えて使うケースが想定されます。
現在の接続先
[root@centos ~]# kubectl config current-context
kubernetes-admin@kubernetes
利用可能な接続先
本稿では1つの接続先しかありませんが、/root/.kube/configに接続先を追記することで複数表示されます。
[root@centos ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin
接続先の切り替え
get-contextsのNAMEに表示された値を引数とすることで接続先のClusterを切り替えられます。
[root@centos ~]# kubectl config use-context kubernetes-admin@kubernetes
Switched to context "kubernetes-admin@kubernetes".
対象Clusterの状態確認
リモートでもローカルと同じようにkubectlを使用できます。
[root@centos ~]# kubectl get all NAME READY STATUS RESTARTS AGE pod/centos 0/1 ImagePullBackOff 1 (4h30m ago) 92d pod/centos-mc-pod 0/2 ImagePullBackOff 2 (4h30m ago) 92d pod/centos-min-pod 0/1 ImagePullBackOff 0 (4h30m ago) 90d pod/centos-pri-pod 0/1 ImagePullBackOff 0 (4h30m ago) 90d pod/centos8 1/1 Running 4 (4h30m ago) 96d pod/mc-pod 0/2 ImagePullBackOff 2 (4h30m ago) 92d pod/mc1-pod 0/2 ImagePullBackOff 2 (4h30m ago) 92d pod/nginx-min-pod 0/1 ImagePullBackOff 0 (4h30m ago) 89d pod/samplepod 0/1 ImagePullBackOff 2 (4h30m ago) 95d NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1443/TCP 97d
Kubernetes kubectlの導入