安裝完了kube-apiserver組件,但是我們並沒有訪問,測試是否正常,本篇我們通過kubectl命令行工具來完成測試。
kubectl是kubernetes命令行客戶端,一般情況集群都開啟了TLS認證,kubectl或其它客戶端每次與集群kube-apiserver交互都少不了身份驗證,目前有兩種常用認證方式,使用證書和token,這兩種方式也是最通用的方式,本節簡單說下kubectl客戶端如何使用證書的認證方式訪問集群。
使用證書的方式,一般情況下我們需要創建一個kubeconfig配置文件,這個文件用來組織有關集群、用戶、命名空間和身份認證機制的信息。kubectl使用kubeconfig配置文件來查找選擇集群所需信息,並且集群kube-apiserver進行通信,kubectl默認查到${HOME}/.kube目錄下面的config文件,當然也可以通過設置KUBECONFIG環境變量或者在命令行使用--kubeconfig參數指定kubeconfig配置文件。
下載kubectl客戶端
#!/bin/bash
cd /data/k8s/work
wget https://dl.k8s.io/v1.17.0/kubernetes-client-linux-amd64.tar.gz
tar -zxf kubernetes-client-linux-amd64.tar.gz
# 這里只需要在中控機使用kubectl命令,只需要把它copy到/data/k8s/bin目錄即可
cp kubernetes/client/bin/kubectl /data/k8s/bin/
創建kubeconfig配置文件
#!/bin/bash
cd /data/k8s/work
source /data/k8s/bin/env.sh
# 1. 集群參數配置
kubectl config set-cluster kubernetes \
--certificate-authority=/data/k8s/work/ca.pem \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=kubectl.kubeconfig
# 2. 客戶端認證參數配置
kubectl config set-credentials admin \
--client-certificate=/data/k8s/work/admin.pem \
--client-key=/data/k8s/work/admin-key.pem \
--embed-certs=true \
--kubeconfig=kubectl.kubeconfig
# 3. 上下文參數配置
kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=admin \
--kubeconfig=kubectl.kubeconfig
# 4. 設置kubectl使用的哪個上下文
kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig
配置詳情
使用kubeconfig配置文件
創建默認路徑並把配置文件copy成config
mkdir /root/.kube/
cp kubectl.kubeconfig /root/.kube/config
查看配置
[root@calico-master-1 ~]# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://100.66.208.10: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: REDACTED
client-key-data: REDACTED
[root@calico-master-1 ~]#
查看使用情況
[root@master01 ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
etcd-2 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
etcd-0 Healthy {"health":"true"}
[root@master01 ~]#
總結
kubeconfig配置很簡單,就是先創建集群信息、再創建客戶端信息、再把集群與客戶聯系起來,然后設置當前使用的上下文即可,理解這個過程后,就可以快速方便的創建kubeconfig配置文件,並且DevOps使用SDK進行二次開發時也會使用到此配置文件。