kubeadm join

kubeadm join用于将当前的节点加入到kubelet集群当中去。

kubeadm join 148.70.251.10:6443 --token nh819o.pzcpohatm7p3a5cm --discovery-token-ca-cert-hash sha256:55254659ea80b335a09dd627757d6aecd10b2c6fbdaddc63dd9bae9ec353cc49

--discovery-token-ca-cert-hash:用于Node验证master身份。
执行join时,API Server会下发ca.crt,这个证书会被node存放在/etc/kubernetes/pki目录下。
然后kubeadm join再用ca设置公钥证书的hash值,与discovery-token-ca-cert-hash的值进行比对。
确定是否为正确的master。可以通过以下方法计算hash值。

ubuntu@VM-0-3-ubuntu:~$ openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -pubkey | openssl rsa -pubin -outform DER 2>/dev/null | sha256sum | cut -d' ' -f1
55254659ea80b335a09dd627757d6aecd10b2c6fbdaddc63dd9bae9ec353cc49

--token:用于Master验证Node身份。
要想集群首次引导启动时,支持bootstrap-token验证,APIServer需要开启下面的配置选项:
  --enable-bootstrap-token-auth=true  

root@VM-16-6-ubuntu:/etc/kubernetes/manifests# kubectl get secret -n kube-system|grep bootstrap-token
bootstrap-token-nh819o                           bootstrap.kubernetes.io/token         7         2d

nh819o是token的id。pzcpohatm7p3a5cm是secret。
当kubeadm join访问APIServer,会在请求的header中携带这一token。APIServer会根据token进行身份验证。
API会查询是否有bootstrap-token的前缀的secret对象。
我们可以查看secret对象的内容。

root@VM-16-6-ubuntu:~# kubectl get secret/bootstrap-token-nh819o -n kube-system -o yamlapiVersion: v1
data:
  auth-extra-groups: c3lzdGVtOmJvb3RzdHJhcHBlcnM6a3ViZWFkbTpkZWZhdWx0LW5vZGUtdG9rZW4=
  description: VGhlIGRlZmF1bHQgYm9vdHN0cmFwIHRva2VuIGdlbmVyYXRlZCBieSAna3ViZWFkbSBpbml0Jy4=
  expiration: MjAxOS0wNi0yMFQxMToyNDoyOCswODowMA==
  token-id: bmg4MTlv
  token-secret: cHpjcG9oYXRtN3AzYTVjbQ==
  usage-bootstrap-authentication: dHJ1ZQ==
  usage-bootstrap-signing: dHJ1ZQ==
kind: Secret
metadata:
  creationTimestamp: 2019-06-19T03:24:28Z
  name: bootstrap-token-nh819o
  namespace: kube-system
  resourceVersion: "160"
  selfLink: /api/v1/namespaces/kube-system/secrets/bootstrap-token-nh819o
  uid: bea32cfa-9241-11e9-a613-52540095a842
type: bootstrap.kubernetes.io/token

对token-secret进行解码:

root@VM-16-6-ubuntu:~# echo cHpjcG9oYXRtN3AzYTVjbQ==|base64 -d
pzcpohatm7p3a5cm

这个与token参数的secret值一致。

原文地址:https://www.cnblogs.com/yangmingxianshen/p/12626783.html