为什么我在 kubernetes 上没有默认的 serviceAccount?
Why don't I have a default serviceAccount on kubernetes?
我正在尝试在一些本地机器上安装 Kubernetes 运行ning 运行ning CoreOS。我松散地关注 this guide。一切似乎都正常 运行ning,我可以通过 kubectl 连接到 api。但是,当我尝试创建一个 pod 时,出现了这个错误:
Pod "redis-master" is forbidden: Missing service account default/default: <nil>
执行 kubectl get serviceAccounts
确认我没有任何 ServiceAccounts:
NAME SECRETS
根据documentation,每个命名空间都应该有一个默认的ServiceAccount。 运行 kubectl get namespace
确认我有默认命名空间:
NAME LABELS STATUS
default <none> Active
我是 Kubernetes 和 CoreOS 的新手,所以我确定我忽略了一些东西,但我终究无法弄清楚发生了什么。如果有任何指点,我将不胜感激。
更新
kube-controller-manager 似乎没有 运行ning。当我尝试 运行 它时,我收到此消息:
I1104 21:09:49.262780 26292 plugins.go:69] No cloud provider specified.
I1104 21:09:49.262935 26292 nodecontroller.go:114] Sending events to api server.
E1104 21:09:49.263089 26292 controllermanager.go:217] Failed to start service controller: ServiceController should not be run without a cloudprovider.
W1104 21:09:49.629084 26292 request.go:302] field selector: v1 - secrets - type - kubernetes.io/service-account-token: need to check if this is versioned correctly.
W1104 21:09:49.629322 26292 request.go:302] field selector: v1 - serviceAccounts - metadata.name - default: need to check if this is versioned correctly.
W1104 21:09:49.636082 26292 request.go:302] field selector: v1 - serviceAccounts - metadata.name - default: need to check if this is versioned correctly.
W1104 21:09:49.638712 26292 request.go:302] field selector: v1 - secrets - type - kubernetes.io/service-account-token: need to check if this is versioned correctly.
由于我 运行 在本地进行此操作,因此我没有云提供商。我试图定义 --cloud-provider=""
但它仍然抱怨同样的错误。
每个命名空间的默认服务帐户由服务帐户控制器创建,它是一个循环,是 kube-controller-manager 二进制文件的一部分。因此,验证二进制文件是否为 运行,并检查其日志中是否有任何表明它无法创建服务帐户的信息,确保将“--service-account-private-key-file=somefile”设置为具有有效 PEM 密钥的文件。
或者,如果您想在没有服务帐户的情况下取得一些进展,稍后再回来,您可以通过从您的 api-服务器的 --admission-controllers
标志。但您可能想稍后再回来解决这个问题。
这对我有用
--disable-admission-plugins=ServiceAccount
我正在尝试在一些本地机器上安装 Kubernetes 运行ning 运行ning CoreOS。我松散地关注 this guide。一切似乎都正常 运行ning,我可以通过 kubectl 连接到 api。但是,当我尝试创建一个 pod 时,出现了这个错误:
Pod "redis-master" is forbidden: Missing service account default/default: <nil>
执行 kubectl get serviceAccounts
确认我没有任何 ServiceAccounts:
NAME SECRETS
根据documentation,每个命名空间都应该有一个默认的ServiceAccount。 运行 kubectl get namespace
确认我有默认命名空间:
NAME LABELS STATUS
default <none> Active
我是 Kubernetes 和 CoreOS 的新手,所以我确定我忽略了一些东西,但我终究无法弄清楚发生了什么。如果有任何指点,我将不胜感激。
更新
kube-controller-manager 似乎没有 运行ning。当我尝试 运行 它时,我收到此消息:
I1104 21:09:49.262780 26292 plugins.go:69] No cloud provider specified.
I1104 21:09:49.262935 26292 nodecontroller.go:114] Sending events to api server.
E1104 21:09:49.263089 26292 controllermanager.go:217] Failed to start service controller: ServiceController should not be run without a cloudprovider.
W1104 21:09:49.629084 26292 request.go:302] field selector: v1 - secrets - type - kubernetes.io/service-account-token: need to check if this is versioned correctly.
W1104 21:09:49.629322 26292 request.go:302] field selector: v1 - serviceAccounts - metadata.name - default: need to check if this is versioned correctly.
W1104 21:09:49.636082 26292 request.go:302] field selector: v1 - serviceAccounts - metadata.name - default: need to check if this is versioned correctly.
W1104 21:09:49.638712 26292 request.go:302] field selector: v1 - secrets - type - kubernetes.io/service-account-token: need to check if this is versioned correctly.
由于我 运行 在本地进行此操作,因此我没有云提供商。我试图定义 --cloud-provider=""
但它仍然抱怨同样的错误。
每个命名空间的默认服务帐户由服务帐户控制器创建,它是一个循环,是 kube-controller-manager 二进制文件的一部分。因此,验证二进制文件是否为 运行,并检查其日志中是否有任何表明它无法创建服务帐户的信息,确保将“--service-account-private-key-file=somefile”设置为具有有效 PEM 密钥的文件。
或者,如果您想在没有服务帐户的情况下取得一些进展,稍后再回来,您可以通过从您的 api-服务器的 --admission-controllers
标志。但您可能想稍后再回来解决这个问题。
这对我有用
--disable-admission-plugins=ServiceAccount