初始化令牌过期后加入群集?

Ola*_*avT 5 kubernetes

几天前我创建了一个Kubernetes集群,其中包含1个Master和1个worker Node.现在我想向集群添加另一个节点,但是主服务器上原始"kubeadm init"打印的令牌已过期(默认情况下,24小时后).

"kubeadm join"命令有一个"--discovery-file".它需要一个配置文件,我尝试使用我在这里找到的格式:

https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.8.md

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <really long certificate data>
    server: https://10.138.0.2:6443
  name: ""
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
Run Code Online (Sandbox Code Playgroud)

我从工作的kubectl配置文件中复制了相应的数据,并创建了一个本地文件"a.config".

但是,当我尝试命令"sudo kubeadm join --discovery-file a.conf"时,它失败并显示以下错误消息:

[discovery: Invalid value: "": token [""] was not of form ["^([a-z0-9]{6})\\.([a-z0-9]{16})$"], discovery: Invalid value: "": token must be of form '[a-z0-9]{6}.[a-z0-9]{16}']
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

知道在我的情况下工作的程序是什么?我不想拆除群集并再次重新加入群集.

sil*_*fox 14

创建一个新的引导令牌并加入

使用kubeadm token create创建一个新的引导标志,见kubeadm:管理令牌.

# login to master node
# create a new bootstrap token
$ kubeadm token create
abcdef.1234567890abcdef

# get root ca cert fingerprint
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
e18105ef24bacebb23d694dad491e8ef1c2ea9ade944e784b1f03a15a0d5ecea 

# login to the new worker node
# join to cluster 
$ kubeadm join --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:e18105ef24bacebb23d694dad491e8ef1c2ea9ade944e784b1f03a15a0d5ecea 1.2.3.4:6443
Run Code Online (Sandbox Code Playgroud)

注意:--discovery-token-ca-cert-hash在Kubernetes 1.8及以上版本中是首选.

(备选方案)使用发现文件建立信任

--discovery-file 提供了一种在带主节点和自举节点之间建立信任根的带外方式.

如果要使用kubeadm构建自动配置,请考虑使用此模式.

发现文件不提供有效令牌,因此我们仍需要kubeadm token create创建一个新令牌.

kubeadm join --token abcdef.1234567890abcdef --discovery-file a.conf
Run Code Online (Sandbox Code Playgroud)


Man*_*Ali 8

我知道的将新节点加入现有集群的最简单方法是

kubeadm token create --print-join-command
Run Code Online (Sandbox Code Playgroud)

这将给出这样的输出。

kubeadm join 192.168.10.15:6443 --token l946pz.6fv0XXXXX8zry --discovery-token-ca-cert-hash sha256:e1e6XXXXXXXXXXXX9ff2aa46bf003419e8b508686af8597XXXXXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)