从 master 在 Kubernetes 节点上执行命令

D.J*_*Joe 2 kubernetes

我想在主节点上执行命令。例如,假设我有工作节点:kubenode01

现在,一个 pod(pod-test)正在该节点上运行。在 master 上使用“kubectl get pods --output=wide”显示 pod 正在该节点上运行。尝试从主节点在该 pod 上执行命令会导致错误,例如:

kubectl exec -ti pod-test -- cat /etc/resolv.conf

结果是:

Error from server: error dialing backend: dial tcp 10.0.22.131:10250: i/o timeout

任何想法?提前致谢

Ric*_*ico 5

kubectl只要kubeconfig配置为使用正确的凭据指向正确的集群 URL ( kube-apiserver ),并且防火墙允许连接到 kube-apiserver 端口,您就可以从任何地方执行命令。

\n

就您而言,我会检查您的 kube-apiserver 是否10.0.22.131:10250是真实的IP:PORT并且您可以访问它。

\n

请注意,它在Podkubectl exec -ti pod-test -- cat /etc/resolv.conf上运行,而不是在 Node 上运行。如果您想在节点上运行,只需使用SSH即可。

\n

更新:

\n

这里还有另外两种选择:

\n
    \n
  1. 您可以使用专门使该 pod 在特定节点上运行的nodeSelector创建一个 pod(或调试 pod) 。

    \n
  2. \n
  3. 如果您尝试调试已在特定节点上运行的 pod 上的某些内容,您还可以尝试创建调试临时容器

    \n
  4. \n
\n

在较新版本的 Kubernetes 上,您可以使用调试 Pod 在特定节点上运行某些内容

\n

\xe2\x9c\x8c\xef\xb8\x8f

\n

  • 我相信他问的是在节点而不是 Pod 上执行命令。 (3认同)