无法在Kubernetes中创建Pod

12
我按照官方 Kubernetes 安装指南 在 Fedora 22 服务器上安装了 Kubernetes,安装过程中一切都正常。
安装完成后,我可以看到所有的节点都在运行并连接到主节点。然而,按照 101 指南 创建一个简单的 pod 时却一直失败。
$ create -f pod-nginx.yaml 

服务器错误:创建“pod-nginx.yaml”时出错:禁止使用默认/default服务帐户找不到API令牌的Pod“nginx”,请等待自动创建并添加到服务帐户后重试。

我需要创建 API 令牌吗?如果需要,该如何创建?

我在谷歌搜索中查找了此问题,但没有找到有用的结果。看起来我是这个星球上唯一遇到这个问题的人。

有人对此有什么想法吗?

2个回答

18

服务账户 Admission Controller 防止在其命名空间中初始化它们的服务账户之前创建 Pod。

如果使用适当的参数启动 controller-manager,它将自动为命名空间填充默认服务账户,并自动创建该服务账户的 API 令牌。

看起来这篇指南需要更新,加入来自这个评论的信息: https://github.com/GoogleCloudPlatform/kubernetes/issues/11355#issuecomment-127378691


14
  1.  

    openssl genrsa -out /tmp/serviceaccount.key 2048
    
  2.  

    vim /etc/kubernetes/apiserver:
    KUBE_API_ARGS="--service_account_key_file=/tmp/serviceaccount.key"
    
  3.  

    vim /etc/kubernetes/controller-manager
    KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/tmp/serviceaccount.key"
    systemctl restart kube-controller-manager.service
    

1
我需要在哪里进行操作?在主服务器上还是所有节点/从属服务器上?我在主服务器上按照这些步骤进行了操作,但是没有改变任何东西(Kubernetes 1.2.0 在 Debian Jessie (8.3) 上)。我仍然收到那个错误信息。 - BlaM
1
不确定这些命令适用于哪个环境,但在我的情况下,我需要查看 /etc/default/kube-controller-manager 和 /etc/default/kube-apiserver 文件(基于 init.d 的服务启动),以指定 service_account_(private_)key_file。 - BlaM
你为什么在/tmp目录下创建了这个密钥? - Sisir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接