为什么80%的码农都做不了架构师?>>>
在添加了CA证书并部署了kube-apiserver
,kube-controller-manager
以及kube-scheduler
几个k8s的master组件后,添加kubelet
组件,同时生成证书认证的配置文件.
kubelet 启动时向 kube-apiserver 发送 TLS bootstrapping 请求,需要先将 bootstrap token 文件中的 kubelet-bootstrap 用户赋予 system:node-bootstrapper 角色,然后 kubelet 才有权限创建认证请求(certificatesigning requests)。
文件token.csv
内容:
e21b2365eb6e3c86a670dec0bdb511cc,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
#正常情况下只需创建一次认证即可.配置根据token.csv中的内容自行修改.
kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
得到kubelet kubeconfig
文件后,使用命令kubectl get csr
可以看到还未认证的节点. 使用命令kubectl certificate approve {NodeName}
可以加入TLS认证. 再使用命令kubectl get csr
可以看到CONDITION项已经由Pending
变为Approved
:
NAME | AGE | REQUESTOR | CONDITION |
---|---|---|---|
node-csr-Tju4S-Nabh5S-rinQVhIylvAv0_6eIJOtXalWgGO4_A | 25m | kubelet-bootstrap | Approved,Issued |
但若是无意中修改了证书,或者以前的kubelet的bootstrap.kubeconfig
配置文件未删除,使用命令kubectl get csr
则会显示No Resources Found
,这时请检查:
- 1.
kubelet
使用的bootstrap.kubeconfig
文件中User 是否是kubelet-boostrap
,是否包含token
; - 2.
token
是否位于kube-apiserver
使用的token.csv
文件中;
若还是不行,则可能以前有以前认证过的配置残留,尝试删除/etc/kubernetes/bootstrap.kubeconfig
文件后,重启kubelet
即可.