|NO.Z.00067|——————————|^^ 部署 ^^|——|KuberNetes&二進位制部署.V20|3臺Server|---------------------------------------|TLS_BootStrapping|證書生成流程|
阿新 • • 發佈:2022-03-29
[CloudNative:KuberNetes&二進位制部署.V20] [Applications.KuberNetes] [|DevOps|k8s|**3節點**|二進位制1.20|Kubelet啟動過程|TLS BootStrapping|] [Node自動頒發證書|CSR申請和證書頒發原理|證書自動續期原理|]
一、TLS Bootstrapping證書詳解
### --- 證書詳解 ~~~ 此環境中ControllerManager/Scheduler元件是手動頒發的證書。 ~~~ TLS Bootstrapping:是為node節點自動的生成 和管理證書的。 ~~~ Node節點為什麼不去手動的生成證書和管理證書:因為node節點動態性比較強, ~~~ 不像master節點下的ControllerManager/Scheduler這類元件部署之後就不會動。 ~~~ 而Keepalived的主機名和node節點的主機名是有繫結的, ~~~ 所以說當手動管理證書的情況下,叢集規模很大的時候,管理起來就比較麻煩。 ~~~ controller-manager安裝的時候為每個k8s的元件都生成了一個controller-manager.kubeconfig檔案; ~~~ 這個檔案儲存了apiserver的資訊及去連線apiserver是所需要的證書。
### --- 檢視apiserver儲存的證書資訊 [root@k8s-master01 ~]# cat /usr/lib/systemd/system/kube-controller-manager.service --kubeconfig=/etc/kubernetes/controller-manager.kubeconfig \ //在這個檔案指定了controller-manager.kubeconfig [root@k8s-master01 ~]# ls /etc/kubernetes/controller-manager.kubeconfig /etc/kubernetes/controller-manager.kubeconfig
### --- 這個元件在啟動的時候會拿著這個檔案達到認證的作用,通訊是加密的。
~~~ 檢視kubelet.kubeconfig
[root@k8s-master01 ~]# ls /etc/kubernetes/kubelet.kubeconfig
/etc/kubernetes/kubelet.kubeconfig
### --- kubelet也有自己的證書。
~~~ kubelet不建議手動去頒發管理證書。所以引入了TLS Bootstrapping;
~~~ 它會為kubelet自動的去頒發一個kubelet.kubeconfig證書。
二、TLS BootStrapping證書生成流程### --- TLS證書生成原理
~~~ 在配置一個Node節點的時候,Node節點上是沒有這個檔案的。
~~~ # 生成原理:通過bootstrap-kubelet.kubeconfig該檔案和ApiServer進行互動然後自動的去申請一個kubelet.kubeconfig 檔案
~~~ 若是Node節點再啟動的時候,沒有kubelet.kubeconfig這個檔案,
~~~ 它會拿這個bootstrap-kubelet.kubeconfig檔案也就是BootStrapping認證的kubeconfig
~~~ 去申請一個kubelet.kubeconfig,然後在去啟動它的程序。
三、TLS證書生成流程
### --- 檢視kubernetes證書檔案並刪除原有的kubelet.kubeconfig配置檔案
~~~ # 檢視kubernetes證書檔案
[root@k8s-node02 ~]# ls /etc/kubernetes/
bootstrap-kubelet.kubeconfig
kubelet.kubeconfig
~~~ # 刪除原有的 kubelet.kubeconfig檔案
[root@k8s-node02 ~]# rm -rf /etc/kubernetes/kubelet.kubeconfig
### --- 檢視kubelet.conf的配置
~~~ # 檢視配置檔案
[root@k8s-node02 ~]# cat /etc/systemd/system/kubelet.service.d/10-kubelet.conf
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.kubeconfig --kubeconfig=/etc/kubernetes/kubelet.kubeconfig"
~~~ 注:解釋說明
--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.kubeconfig // 指定的kubeconfig檔案
--kubeconfig=/etc/kubernetes/kubelet.kubeconfig" // 生成的檔案
### --- 重啟kubelet並生成證書檔案
~~~ # 重啟kubelet
[root@k8s-node02 ~]# systemctl restart kubelet
~~~ # 檢視生成的kubeconfig證書檔案,生成完之後就會和ApiServer進行互動
[root@k8s-node02 ~]# ll /etc/kubernetes/kubelet.kubeconfig
-rw------- 1 root root 2369 Apr 11 18:46 /etc/kubernetes/kubelet.kubeconfig
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)