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後面接的結果是一樣的,一致就可以說加入正確