You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用kops在AWS搭建集群后如何获取永久证书访问kubectl

kops AWS集群获取永久访问权限的解决方案

过期原因

你当前使用的kubeconfig存在有效期,通常是两种情况导致:

  • 配置中使用了AWS IAM生成的临时访问凭证,最长有效期不超过12小时
  • kops默认生成的管理员客户端TLS证书默认有效期为18个月,到期后自动失效

解决方案1:使用永久有效的服务账号凭证(推荐)

该方案生成的凭证只要不主动删除对应服务账号和密钥,就永久有效:

  • 登陆到可正常访问集群的设备,首先创建管理员权限的服务账号:
    kubectl create serviceaccount permanent-admin -n kube-system
  • 为服务账号绑定集群管理员权限:
    kubectl create clusterrolebinding permanent-admin-binding --clusterrole=cluster-admin --serviceaccount=kube-system:permanent-admin
  • 针对K8s 1.24及以上版本,需要手动创建服务账号对应的密钥(1.24以下版本可跳过该步):
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: permanent-admin-token
  namespace: kube-system
  annotations:
    kubernetes.io/service-account.name: permanent-admin
type: kubernetes.io/service-account-token
EOF
  • 提取服务账号token:
    kubectl get secret permanent-admin-token -n kube-system -o jsonpath='{.data.token}' | base64 --decode
  • 提取集群CA证书:
    kubectl get secret permanent-admin-token -n kube-system -o jsonpath='{.data.ca\.crt}'
  • 提取集群API服务地址:
    kubectl config view -o jsonpath='{.clusters[0].cluster.server}'
  • 将上述三个参数填入本地kubeconfig配置文件即可,无需再同步服务端的配置。

解决方案2:生成长期客户端TLS证书

如果希望继续使用证书认证的方式,可以通过kops命令生成有效期更长的kubeconfig:

  • 执行以下命令生成有效期为10年的admin用户kubeconfig:
    kops get kubeconfig --user=admin --lifetime=87600h
  • 将输出的配置替换本地kubeconfig即可,证书到期前重新执行该命令更新即可。

注意事项

  • 永久权限凭证泄露会导致集群完全被控制,建议将本地kubeconfig文件权限设置为chmod 600 ~/.kube/config,避免泄露
  • 若不需要集群全量权限,可根据实际需求为服务账号绑定最小必要权限,降低安全风险

内容的提问来源于stack exchange,提问作者confusedWarrior

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:51:01