網站建設圖片怎么做免費b站網頁推廣
我們通過 kubectl
命令行連接 k8s apiserver 時需要依賴 kubeconfig
文件。
kubeconfig
文件通常包含了 context
(上下文)列表,每個 context
又會引用 cluster
和 user
,最后通過 current-context
指定當前 kubeconfig 使用哪個 context。
kubeconfig
文件的默認存放位置為 ~/.kube/config
,文件結構示例如下:
apiVersion: v1
kind: Config
clusters:
- name: "k8s-180"cluster:# 忽略證書insecure-skip-tls-verify: trueserver: https://192.168.1.180:6443#certificate-authority-data: "LS0tLS1CRUdJ......ZJQ0FURS0tLS"users:
- name: "k8s-admin"user:client-certificate-data: "LS0tLS1CRUdJTi......VEUtLS0tLQo="client-key-data: "LS0tLS1CRUdJTi......qTVAKdWRiQXZmM1JiajRuSmxZ\b3V3NEJ5YkppNVFLRj......IUXpSb0pvaTNFMC9oc2x\QUxnPT0KLS0tLS1......SVElGSUNBVEUtLS0tLQo="#token: "kubeconfig-user-rmz6q.c-97hgz:29z89ns8whhgq8......gl57cfvwlv"contexts:
- name: "k8s-180"context:user: "k8s-admin"cluster: "k8s-180"current-context: "k8s-180"
1、其中 client-certificate-data
的內容為文件 kube-node.pem
或 node-node1.pem
的內容,獲取文件內容的方法可以使用命令 base64 /etc/kubernetes/ssl/kube-node.pem
或 cat /etc/kubernetes/ssl/node-node1.pem | base64 -w 0
,內容可以單行或者使用\
進行換行。
2、其中 client-key-data
的內容為文件 kube-node-key.pem
或 node-node1-key.pem
的內容,獲取文件內容的方法可以使用命令 base64 /etc/kubernetes/ssl/kube-node-key.pem
或 cat /etc/kubernetes/ssl/node-node1-key.pem | base64 -w 0
,內容可以單行或者使用\
進行換行。
3、另外,如果 user 中使用 token,則可以不配置 client-certificate-data
和 client-key-data
。
4、以上配置文件中的證書通過字符串的方式配置在 config 文件中,如果不想寫具體的字符串,本地有證書文件,則可以通過 client-certificate
和 client-key
來設置證書路徑的方式使用,如下某集群示例所示:
apiVersion: v1
kind: Config
clusters:
- cluster:api-version: v1certificate-authority: /etc/kubernetes/ssl/kube-ca.pemserver: "https://127.0.0.1:6443"name: "local"
contexts:
- context:cluster: "local"user: "kube-controller-manager-local"name: "local"
current-context: "local"
users:
- name: "kube-controller-manager-local"user:client-certificate: /etc/kubernetes/ssl/kube-controller-manager.pemclient-key: /etc/kubernetes/ssl/kube-controller-manager-key.pem
該示例文件為 RKE 創(chuàng)建的 K8s 集群的 config 配置文件
/etc/kubernetes/ssl/kubecfg-kube-controller-manager.yaml
的內容
最后實操 kubectl
命令驗證配置:
[root@k8s-node1 ~]# kubectl config current-context
k8s-180
[root@k8s-node1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-node1 Ready controlplane,etcd,worker 448d v1.21.5
k8s-node2 Ready controlplane,etcd,worker 448d v1.21.5
k8s-node3 Ready controlplane,etcd,worker 448d v1.21.5
k8s-node4 Ready worker 413d v1.21.5
k8s-node5 Ready worker 413d v1.21.5
k8s-node6 Ready worker 413d v1.21.5
(END)