1. 程式人生 > 其它 >在node節點部署kubectl管理k8s叢集

在node節點部署kubectl管理k8s叢集

感謝!原文連結:https://blog.csdn.net/sinat_35930259/article/details/79994078


kubectl是k8s的客戶端程式,也是k8s的命令列工具,kubectl提供了大量的子命令可以讓使用者和叢集進行互動。
kubectl不一定部署在master上,可在master或node節點上執行,使用者通過kubectl連線到master上然後將命令通過master分發到叢集的node節點上。

預設情況下是在執行k8s叢集安裝的master節點,預設連線本地的apiserver。在其他master節點下,未執行HTTPS連線叢集時會有如下報錯:
[root@k8smaster02 ~]# kubectl get pod
The connection to the server localhost:8080 was refused - did you specify the right host or port?

使用apiserver安全的HTTPS協議(8443)連線叢集,操作如下:
1、先將kubectl命令傳到相應master或node節點上
scp /usr/local/bin/kubectl root@k8node02:/usr/local/bin/kubectl

2、將所需的證書傳到相應master或node節點上
scp admin*pem root@k8node02:/root
scp ca.pem root@k8snode02:/root

3、生成kubectl配置檔案
kubectl config set-cluster kubernetes --server=https://192.168.217.236:8443 --certificate-authority=/root/ca.pem
Cluster "kubernetes" set.
(建立完成後會生成一個.kube隱藏目錄,並在其中生成一個config檔案)

4、設定使用者項
kubectl config set-credentials kubernetes-admin --certificate-authority=/root/ca.pem --client-key=/root/admin-key.pem --client-certificate=/root/admin.pem
User "kubernetes-admin" set.

5、設定環境項中預設上下文
kubectl config set-context kubernetes-admin@kubernetes --cluster=kubernetes --user=kubernetes-admin
Context "kubernetes-admin@kubernetes" created.

6、設定預設環境項
kubectl config use-context kubernetes-admin@kubernetes

最終就在當前目錄下.kube隱藏目錄下生成了一個config檔案,後面就是通過這個檔案訪問叢集,其內容如下:

[root@k8snode02 ~]# more /root/.kube/config 
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /root/ca.pem
    server: https://192.168.217.236:8443
  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: /root/admin.pem
    client-key: /root/admin-key.pem

此時,kubectl在node節點上能正常連線到apiserver

[root@k8snode02 ~]# kubectl get pod
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   42         41d