kubernetes - kubectl exec 失败,出现 "container <command> is not valid for pod <pod_name>"

标签 kubernetes kubectl minikube

我正在使用 Minikube,并且我有一个带有一个容器的 Alpine pods 。
当我运行时:kubectl exec -it -v=6 alpinec1-7c65db48b4-v2gpc /bin/sh
我收到一个 shell,我可以在其中运行任何命令( ifconfig 等)。

但是当我尝试运行 sh-c它失败了:

root:~# kubectl exec -it -v=6 alpinec1-7c65db48b4-v2gpc /bin/sh -c 'ifconfig'
I0722 05:45:25.091111   80392 loader.go:357] Config loaded from file /home/root/.kube/config
I0722 05:45:25.111876   80392 round_trippers.go:405] GET https://192.168.190.143:8443/api/v1/namespaces/default/pods/alpinec1-7c65db48b4-v2gpc 200 OK in 16 milliseconds
I0722 05:45:25.232564   80392 round_trippers.go:405] POST https://192.168.190.143:8443/api/v1/namespaces/default/pods/alpinec1-7c65db48b4-v2gpc/exec?command=%2Fbin%2Fsh&container=ifconfig&container=ifconfig&stdin=true&stdout=true&tty=true 400 Bad Request in 13 milliseconds
                                                                     I0722 05:45:25.232921   80392 helpers.go:201] server response object: [{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "container ifconfig is not valid for pod alpinec1-7c65db48b4-v2gpc",
  "reason": "BadRequest",
  "code": 400
}]
F0722 05:45:25.233095   80392 helpers.go:119] Error from server (BadRequest): container ifconfig is not valid for pod alpinec1-7c65db48b4-v2gpc

最佳答案

kubectl 解释 -c标记不作为 ifconfig 的标记, 但作为 kubectl exec 的标志命令本身——它指定了应该在其中执行命令的 Pod 的确切容器;这也是 kubectl 的原因在您的 Pod 中查找名为“ifconfig”的容器。见 the documentation了解更多信息。

相反,请使用 --表示不应由 kubectl exec 解释的标志而是按原样传递给调用的命令( ifconfig ,在这种情况下):

$ kubectl exec -it -v=6 alpinec1-7c65db48b4-v2gpc -- /bin/sh -c 'ifconfig'

另请注意,在这种情况下,您实际上不需要从 shell 调用 ifconfig ;您也可以直接调用ifconfig不使用 /bin/sh :
$ kubectl exec -it -v=6 alpinec1-7c65db48b4-v2gpc -- ifconfig

关于kubernetes - kubectl exec 失败,出现 "container <command> is not valid for pod <pod_name>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51465297/

相关文章:

kubernetes - 如何使用 kubectl cp 覆盖目录

Kubernetes kubectl 访问环境变量

docker - 使用Docker的Kubernetes无法从默认端口80更改

amazon-web-services - "eksctl create iamserviceaccount"在 EKS 集群上做了什么?

kubernetes - 通过Ansible将DataDog日志注释放置在部署中的问题

kubernetes - 在 Kubernetes 中,我们还需要多进程/gunicorn 吗?

kubernetes - 具有 1 个 CPU 不足错误的 GCloud kubernetes 集群

amazon-web-services - 如何在启用 MFA 的情况下将 Docker 镜像从 AWS ECR 拉取到 Minikube Kubernetes 集群

mysql - 访问托管在 minikube 集群之外的 Mysql 数据库

kubernetes - Minikube 集群中的 Pod 状态为 `CreateContainerConfigError`