在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

浙公網安備 33010602011771號