关键点1:
kubelet 是最最最底层的组件,无法pod化。运行初始的kubelet特别需要注意,虽然此时受其托管的apiserver还未启动,但是
相应的kubelet的各种配置参数也【必须要】与后续启动的apiserver的各种配置参数相对应——尤其是安全认证相关的参数。
特别的,初始化的kubelet的tls参数必须显式的提供:--tls-cert-file, --tls-private-key-file, --client-ca-file:这3个参数必须是apiserver的签发ca证书及这个ca签发给初始kubelet的证书。
关键点2:
初始kubelet的启动运行,【必须不是】bootstrap方式!该结论是我测试过的了。如果使用bootstrap,初始kubelet会先与apiserver连接以便获取分配给自己的apiserver客户端访问证书,而此时,apiserver还尚未启动呢!
就是,不允许有参数:--bootstrap-kubeconfig
特点1:
kubelet可以独立运行,无论apiserver是否运行正常,但是,在apiserver重置、重启后,kubelet可能会出现各种问题,强烈建议重启kubelet!
特点2:
静态pod方式部署apiserver,即使重启kubelet,只要后台的contariner runtime未重启或设置了不kill掉container的进程方式,控制平面(尤其apiserver)其实是正常运行的,不用担心。