版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangjun0210/article/details/86690633
kubeadm join原理
join:将node加入集群
kubeadm join 172.28.65.239:6443 --token 40dup1.urffu06eu0u1hzy3 --discovery-token-ca-cert-hash sha256:9536338df40c12f9287a15d4764fb02041b5e5cd2b0700fddeea32cfbab4cd83
1. master节点IP+端口
172.28.65.239:6443
命令第一部分为master节点IP+端口
2. token:用于Master验证Node身份
--token 40dup1.urffu06eu0u1hzy3
主要是在/etc/kubernetes/manifests/kube-apiserver.yaml中的–enable-bootstrap-token-auth=true设置了为true
token格式由两段组成:token-id.token-serect
- 查看有前缀的secret对象(token-id)
kubectl get secret -n kube-system | grep bootstrap
bootstrap-token的后缀与kubeadm join --token 的token-id一致- 查看secret对象的具体内容
kubectl get secret/bootstrap-token-40dup1 -n kube-system -o yaml
token-secret是一个base64编码的字符串,解码
echo dXJmZnUwNmV1MHUxaHp5Mw== | base64 -d
解码后的内容与kubeadm join --token 的token-serect一致
3. discovery-token-ca-cert-hash : 用于Node验证Master身份
根据CA的公钥证书数据来计算出hash值
openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -pubkey | openssl rsa -pubin -outform DER 2>/dev/null | sha256sum | cut -d' ' -f1
这里的计算结果,跟join加入的discovery-token-ca-cert-hash后面接的结果是一样的,一致就可以说加入正确