linux - 使用 ssh 或 kubectl exec 的不同环境变量

标签 linux kubernetes containers

我们的集群中有一项服务,我们通过 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 没什么区别在远程系统上执行命令。 SSHkubectl应该都适用于 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 的有用资源命令:
  • Get a Shell to a Running Container
  • kubectl-commands#exec docs
  • How does 'kubectl exec' work?

  • 编辑:
    如果您想了解更多有关 kubectl exec 之间差异的信息和 SSH我推荐 this article .它涵盖以下主题:
  • 验证/z
  • 壳牌用户体验
  • 非外壳功能,以及
  • 表现
  • 关于linux - 使用 ssh 或 kubectl exec 的不同环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67277994/

    相关文章:

    Kubernetes 系统 :serviceaccount can't access service

    git - 有没有一种方法可以让VS Code在开发容器中使git正常工作?

    docker - Kubernetes 环境变量到容器

    regex - 在 Bash 中替换斜线

    c - 将客户端绑定(bind)到本地端口

    linux - Shell 脚本输出日期之间的整个间隔

    kubernetes - 如何在 Kubernetes Ingress 中为两个服务配置 Path?

    logging - 将日志输出发送到 Sentry

    html - Floated Div 正在外出并位于 Outline-container 下方

    c - Linux内核列表中的WRITE_ONCE