我之前运行kubeadm init
时,我已经失去了原始的'kubeadm join'命令。
如何再次获取该值?
答案 0 :(得分:12)
kubeadm token create --print-join-command
答案 1 :(得分:9)
这可能不适用于旧的 Kubernetes 版本,但我尝试使用新版本并且对我有用。
打印工作节点/从节点的加入命令,
kubeadm token create --print-join-command
但是如果您需要加入一个新的控制平面节点,这将不起作用,因为您需要为控制平面加入命令重新创建一个新密钥。这可以通过三个简单的步骤来完成。
01.) 在已经工作的主节点中重新上传证书
sudo kubeadm init phase upload-certs --upload-certs
它将生成一个新的证书密钥。
02.) 在已经工作的主节点中打印加入命令
kubeadm token create --print-join-command
03.) 添加 --control-plane --certificate-key
并执行。
<join command from step 02> --control-plane --certificate-key <key from step 01>
完成。
答案 2 :(得分:1)
以@Abhishek Jain的答案为基础,这是一个脚本,可在kubeadm join
的帮助下打印jq
命令:
# get the join command from the kube master
CERT_HASH=$(openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt \
| openssl rsa -pubin -outform der 2>/dev/null \
| openssl dgst -sha256 -hex \
| sed 's/^.* //')
TOKEN=$(kubeadm token list -o json | jq -r '.token' | head -1)
IP=$(kubectl get nodes -lnode-role.kubernetes.io/master -o json \
| jq -r '.items[0].status.addresses[] | select(.type=="InternalIP") | .address')
PORT=6443
echo "sudo kubeadm join $IP:$PORT \
--token=$TOKEN --discovery-token-ca-cert-hash sha256:$CERT_HASH"
答案 3 :(得分:0)
要创建板条联接命令,请运行以下命令- 第1步:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2> / dev / null | openssl dgst -sha256 -hex | sed's /^.* //'
此命令将为您提供公钥
步骤2: kubeadm令牌列表,这将为您提供令牌,因此请在令牌下复制令牌值,其描述为“'kubeadm init'生成的默认引导令牌。”
步骤3: 现在,使用以下语法在不创建新令牌的情况下创建JOIN命令
kubeadm join --token(步骤2中的令牌副本)--discovery-token-ca-cert-hash sh2256:(复制与步骤1中的副本相同的值< / strong>)
“ kubeadm令牌创建”命令将创建没有任何描述的新令牌,因此,您可以选择具有DESCRIPTION为“ kubeadm init”的令牌,而不创建任何其他令牌。...
答案 4 :(得分:0)
如果要加入控制平面节点,那么在命令中也将需要证书密钥:
kubeadm token create \
--print-join-command \
--certificate-key \
$(kubeadm alpha certs certificate-key)
kubeadm alpha certs certificate-key
命令将根据文档here
要加入工作程序节点,接受的答案中给出的命令kubeadm token create --print-join-command
就足够了