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

无需Token从Linux登录K8s,如何通过Shell脚本访问部署文件并更新副本集?

无需Token登录Kubernetes的可行方法

1. 客户端证书认证

Kubernetes支持通过客户端证书完成身份验证,你可以在Linux服务器上配置kubeconfig文件,直接引用证书文件实现无Token登录:

  • 从集群管理员处获取三个核心文件:client.crt(客户端证书)、client.key(客户端私钥)、ca.crt(集群CA证书)
  • 在服务器上创建~/.kube/config文件,写入以下配置(替换路径和集群地址):
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /opt/k8s/certs/ca.crt
    server: https://192.168.1.100:6443
  name: prod-cluster
contexts:
- context:
    cluster: prod-cluster
    user: deploy-user
  name: prod-context
current-context: prod-context
users:
- name: deploy-user
  user:
    client-certificate: /opt/k8s/certs/client.crt
    client-key: /opt/k8s/certs/client.key
  • 给私钥设置严格权限:chmod 600 /opt/k8s/certs/client.key,之后直接运行kubectl命令即可操作集群,无需输入Token。

2. ServiceAccount密钥文件自动加载

如果服务器需要访问集群,可利用ServiceAccount的密钥文件实现无手动Token输入的认证:

  • 创建或选择一个具备副本集更新权限的ServiceAccount,比如rs-update-sa
  • 获取该ServiceAccount关联的密钥名称:
    kubectl get serviceaccount rs-update-sa -o jsonpath='{.secrets[0].name}'
    
  • 导出密钥中的CA证书、Token文件和命名空间:
    kubectl get secret <secret-name> -o jsonpath='{.data.ca\.crt}' | base64 -d > /opt/k8s/sa/ca.crt
    kubectl get secret <secret-name> -o jsonpath='{.data.token}' | base64 -d > /opt/k8s/sa/token
    
  • 在kubeconfig中配置Token文件引用:
    users:
    - name: sa-update-user
      user:
        tokenFile: /opt/k8s/sa/token
    
    这种方式无需手动输入Token,kubectl会自动读取文件内容完成认证。

3. Kerberos集成认证(集群需支持)

如果你的Kubernetes集群配置了Kerberos认证体系,可在Linux服务器上配置Kerberos客户端实现无Token登录:

  • 安装Kerberos客户端工具:Debian/Ubuntu用apt-get install krb5-user,RHEL/CentOS用yum install krb5-workstation
  • 修改/etc/krb5.conf,配置KDC服务器地址和域信息
  • 获取Kerberos票据:kinit k8s-deploy@YOUR-DOMAIN.COM
  • 在kubeconfig中配置Kerberos认证:
    users:
    - name: kerberos-deploy-user
      user:
        auth-provider:
          name: kerberos
    
    后续运行kubectl时会自动使用Kerberos票据完成认证,无需输入Token。

4. OIDC自动刷新认证(集群需支持)

若集群支持OpenID Connect(OIDC),可通过配置OIDC客户端实现自动Token刷新,避免手动输入:

  • 安装OIDC辅助工具(比如oidc-login)
  • 在kubeconfig中配置OIDC认证参数:
    users:
    - name: oidc-deploy-user
      user:
        auth-provider:
          name: oidc
          config:
            client-id: "k8s-deploy-client"
            client-secret: "xxxxxx"
            idp-issuer-url: "https://your-oidc-server.com"
            refresh-token-file: /opt/k8s/oidc/refresh-token
    
    首次认证后会生成刷新令牌文件,后续kubectl会自动刷新Token,无需手动干预。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:52:52