8.第七篇 驗證kube-apiserver及kubeconfig配置詳解


文章轉載自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483818&idx=1&sn=7572b7915ce5707e04fb8d3b556c1d4a&chksm=e9fdd45ede8a5d4834e62b30bd346555bf30e7f04e88c2bbdd0d49cabf499869ecee5952e5a5&cur_album_id=1341273083637989377&scene=189#wechat_redirect

安裝完了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進行二次開發時也會使用到此配置文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM