我们的集群中有一项服务,我们通过 ssh(测试环境等)调用该服务。在这个容器中,当我们使用 ssh 连接或使用 kubectl 连接时,我们有不同的环境变量。
有人可以解释一下 kubectl exec 命令还设置了什么吗?
作为示例,从这两种环境中摘录一小段。
kubectl exec: (printenv | grep KU)
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT_443_TCP=tcp://10.4.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.4.0.1
KUBERNETES_SERVICE_HOST=10.4.0.1
KUBERNETES_PORT=tcp://10.4.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
ssh 进入同一个容器:(printenv | grep KU) dev-xxxxx:~$ printenv | grep KU
dev-xxxxx:~$
最佳答案
kubectl exec
command 允许您在 pod 的现有容器内远程运行任意命令。 kubectl exec
和使用 SSH
没什么区别在远程系统上执行命令。 SSH
和 kubectl
应该都适用于 99% 的 CLI 应用程序。在环境变量方面,我能找到的唯一区别是:
kubectl
将始终设置在启动时提供给容器的环境变量SSH
主要依赖于系统登录 shell 配置(但也可以通过 PermitUserEnvironment or SendEnv/AcceptEnv 接受用户环境)回答你的问题:
Can someone explain me what else is set here with the kubectl exec command?
它们应该产生相同的输出(假设您已正确键入两个命令并在同一个容器上执行它们)。
您会在下面找到一些关于
kubectl exec
的有用资源命令:编辑:
如果您想了解更多有关
kubectl exec
之间差异的信息和 SSH
我推荐 this article .它涵盖以下主题:关于linux - 使用 ssh 或 kubectl exec 的不同环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67277994/