找不到服务帐户“默认”的API令牌

时间:2018-03-15 09:34:40

标签: kubernetes kubernetes-security

无法在Kubernetes中创建Pod 版本:v1.10.0-beta.3

当我在主节点上创建pod时,我遇到以下错误:

kubectl create -f ./nginx-rc.yaml

ERROR:
No API token found for service account \"default\", retry after the token is automatically created and added to the service account\
  1. 执行命令:openssl genrsa -out /tmp/serviceaccount.ket 2048

  2. 修改了/ etc / kubernetes / apiserver文件以添加以下内容:

    KUBE_API_ARGS="--service_account_key_file=/tmp/serviceaccount.key"
    
  3. 修改了/ etc / kubernetes / controller-manager并添加以下内容:

    KUBE_CONTROLLER_MANAGER_ARGS="--
    service_account_private_key_file=/tmp/serviceaccount.key"
    
  4. 重新启动了Kubernetes,但我仍面临同样的错误:

    No API token found for service account \"default\", retry after the token is automatically created and added to the service account\
    
  5. 另一种方法是删除apiservice上的SecurityContextDeny,ServiceAccount 之前:

    KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
    

    后:

    KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,LimitRanger,ResourceQuota"
    

    仍然是错误:

    No API token found for service account \"default\", retry after the token is automatically created and added to the service account\
    

    我该如何解决?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并遵循了以下步骤。

  1. 检查下一页的最后一部分,并根据您的Kubernetes版本匹配--admission-control https://kubernetes.io/docs/admin/admission-controllers/
  2. Kube-Api服务器必须具有" - service-account-key-file"它应该指向API服务器用于身份验证的公钥
  3. Kube-Controller必须有" - service-account-private-key-file"它应该指向API服务器用于身份验证的私钥
  4. 确保首先启动API Server,然后启动Controller服务,并确保Controller服务在启动时不会引发任何错误。
  5. 验证以下内容

    1. kubectl get serviceaccounts - >输出必须显示具有一个秘密的默认帐户。 enter image description here

    2. kubectl获取秘密 - >输出必须具有服务帐户的默认令牌 enter image description here

    3. kubectl描述秘密/ default-token-qxxw6 - >它必须在“数据”部分下显示ca.crt和token enter image description here

    4. 如果无效则停止群集,主服务器和节点上的所有服务。 然后删除干净的ETCD DB,将网络配置加载到ETCD并将群集作为新群集启动。