1. 程式人生 > 其它 >|NO.Z.00067|——————————|^^ 部署 ^^|——|KuberNetes&二進位制部署.V20|3臺Server|---------------------------------------|TLS_BootStrapping|證書生成流程|

|NO.Z.00067|——————————|^^ 部署 ^^|——|KuberNetes&二進位制部署.V20|3臺Server|---------------------------------------|TLS_BootStrapping|證書生成流程|



[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)