前言
在部署k8s node节点时,kubelet要与apiserver交互,在双方没有互信的情况下,如何通过master的认证鉴权?kubelet bootstrap就解决了这个问题,本文使用Bootstrap Token Authentication的认证方式,使得kubelet通过apiserver的认证、获取apiserver的CA证书,并成功注册到集群中
1. 创建kubelet bootstrap的kubeconfig
1.1 master节点192.168.18.142上执行create-bootstrap-kubeconfig.sh脚本
先创建bootstrap-token,再生成bootstrap.kubeconfig,再创建clusterrolebinding
|
|
- token的name必须是
bootstrap-token-<token-id>
的格式 - token的type必须是
bootstrap.kubernetes.io/token
- token的token-id和token-secret分别是6位和16位数字和字母的组合
auth-extra-groups
定义了token代表的用户所属的额外的group,而默认group名为system:bootstrappers
- 这种类型token代表的用户名为
system:bootstrap:<token-id>
expiration
字段定义token的过期时间
1.2 将生成的bootstrap.kubeconfig分发到计算节点192.168.18.160上
|
|
2. 计算节点配置并启动kubelet
|
|
2.1 创建kubelet.service
|
|
/root/k8s-1.14.6/kubelet/kubelet.conf
是kubelet.service启动后生成的kubeconfig文件,用于访问apiserver
2.2 创建kubelet配置文件config.yaml、/etc/sysconfig/kubelet
|
|
2.3 配置docker的cgroupdriver为systemd
|
|
2.4 安装cni网络插件
kubelet参数中
--network-plugin=cni
启用cni网络插件--cni-conf-dir
指定networkconfig目录,默认路径是:/etc/cni/net.d
--cni-bin-dir
指定插件可执行文件目录,默认路径是:/opt/cni/bin
|
|
2.5 创建cni配置文件
本文的k8s集群使用flannel网络插件,修改配置如下:
|
|
2.6 启动kubelet.service
|
|