K8S集群增加新node - kubeadm 生成 token

本文介绍如何在Kubernetes(K8S)集群中增加新节点,包括生成及使用token,更新CA证书hash值,以及如何给新节点打上角色标签。确保集群的稳定性和扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

K8S集群增加新节点 - kubeadm 生成 token

通过kubeadm初始化后,都会提供node加入的token。

可通过下面命令查看

kubeadm token create --print-join-command
但是默认token的有效期为24小时,当过期之后,该token就不可用了。

生成新的token。

[root@k8s-master ~]# kubeadm token create
iuv3h7.9yhwvfm9f3phpfcl
[root@k8s-master ~]# kubeadm token list
TOKEN                     TTL       EXPIRES                     USAGES                   DESCRIPTION   EXTRA GROUPS
iuv3h7.9yhwvfm9f3phpfcl   23h       2019-05-14T10:26:50+08:00   authentication,signing   <none>        system:bootstrappers:kubeadm:default-node-token
获取ca证书sha256编码hash值
[root@k8s-master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
91ca783858fbe9806560e8253ec47fe734addba3c8ee64ddbeace077a5101aee
这个ca证书是不会变的。可使用默认生成的
kubeadm join 192.168.6.190:6443 --token ty8a90.l4shqmrypvx1xmqz \
    --discovery-token-ca-cert-hash sha256:91ca783858fbe9806560e8253ec47fe734addba3c8ee64ddbeace077a5101aee

可以愉快的添加新node了。

[root@k8s-master ~]# kubectl get node
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   3d18h   v1.14.1
k8s-node1    Ready    node1    3d18h   v1.14.1
k8s-node2    Ready    node2    3d18h   v1.14.1
k8s-node3    Ready    <none>   14s     v1.14.1

再打个角色标签。 完美

[root@k8s-master ~]# kubectl label nodes k8s-node3 node-role.kubernetes.io/node3=
node/k8s-node3 labeled
[root@k8s-master ~]# kubectl get node
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   3d18h   v1.14.1
k8s-node1    Ready    node1    3d18h   v1.14.1
k8s-node2    Ready    node2    3d18h   v1.14.1
k8s-node3    Ready    node3    71s     v1.14.1
<think>好的,用户遇到了后台管理控制台中显示token无效或过期的问题,具体是关于backend-k8s-console的Kubernetes认证问题。我需要逐步分析可能的原因并提供解决方案。 首先,用户提到token无效或过期。在Kubernetes中,ServiceAccount的token确实有有效期,默认情况下可能是一年,但具体情况可能因集群配置而异。首先应该检查token是否确实过期。用户可以通过查看Secret的创建时间来判断,使用kubectl describe secret命令。如果已经超过有效期,就需要更token。 其次,用户可能需要重生成token。如果原来的Secret被删除或失效,可以手动创建一个的Secret并关联到对应的ServiceAccount。比如创建一个类型为kubernetes.io/service-account-token的Secret,并添加注解引用ServiceAccount。之后,更kubeconfig文件中的token字段。 另外,权限问题也可能导致认证失败。需要确认ServiceAccount是否有正确的角色绑定。使用kubectl get rolebinding和kubectl get clusterrolebinding来检查,必要时创建或更RoleBinding。 还有可能是Kubernetes API服务器的证书问题。检查master节点的证书是否过期,特别是如果集群证书是自签名的,可能需要更证书。使用openssl命令查看证书有效期,必要时重生成证书并重启API服务。 另外,用户可能使用了错误的kubeconfig文件,或者配置中的token字段有误。验证kubeconfig文件中的context、cluster和user配置是否正确,特别是证书路径和token内容。 最后,建议用户检查相关组件的日志,比如API服务器、controller-manager的日志,使用kubectl logs命令或者直接查看系统日志,以获取更详细的错误信息。 需要提醒用户操作时注意权限,确保有足够的集群管理权限,并且备份重要配置,避免操作失误导致其他问题。如果用户对某些步骤不熟悉,可以参考提供的引用资料中的视频教程或官方文档,比如引用[1]和[3]提到的K8S学习资源,帮助更深入理解集群管理。</think>### 后台管理控制台Token无效/过期的解决方案 #### 1. **检查Token有效期** Kubernetes的ServiceAccount Token默认有效期为1年(取决于集群配置)。若Token过期,需重生成: ```bash # 查看Token关联的Secret信息(替换<secret-name>) kubectl describe secret <secret-name> -n <namespace> ``` 若输出中`Age`显示超过有效期,需更Token[^3]。 #### 2. **重生成Token** **方法一:删除旧Secret自动生成Token** ```bash kubectl delete secret <secret-name> -n <namespace> # 等待K8S自动创建Secret(约1分钟) kubectl get secrets -n <namespace> ``` **方法二:手动创建Token Secret** ```yaml apiVersion: v1 kind: Secret metadata: name: backend-k8s-console-token annotations: kubernetes.io/service-account.name: backend-k8s-console type: kubernetes.io/service-account-token ``` 应用后更kubeconfig文件中的Token字段[^2]。 #### 3. **验证ServiceAccount权限** 确保ServiceAccount有正确的RBAC权限: ```bash # 查看RoleBinding/ClusterRoleBinding kubectl get rolebinding -n <namespace> kubectl get clusterrolebinding # 示例:绑定admin角色(按需调整) kubectl create rolebinding backend-console-rolebinding \ --clusterrole=admin \ --serviceaccount=<namespace>:backend-k8s-console \ --namespace=<namespace> ``` #### 4. **检查API Server证书** 若集群证书过期会导致所有认证失效: ```bash # 检查master节点证书有效期 openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -dates # 若过期需重生成证书(需在master节点操作) kubeadm certs renew apiserver systemctl restart kubelet ``` #### 5. **更kubeconfig配置** 确保kubeconfig中使用的Token与Secret一致: ```yaml # kubeconfig示例片段 users: - name: backend-user user: token: <new-token-from-secret> ``` #### 6. **检查组件日志** 通过日志定位具体错误: ```bash # 查看API Server日志 kubectl logs -n kube-system kube-apiserver-<node-name> # 查看控制台组件日志 kubectl logs -n <namespace> <backend-console-pod-name> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值