如何判断我的容器是否在Kubernetes集群中运行?

CES*_*SCO 8 kubernetes

如何判断我是否在kubernetes集群中运行?使用泊坞窗,我可以检查是否/.dockerinit存在。有等同的吗?

Gaj*_*jus 12

您可以检查KUBERNETES_SERVICE_HOST环境变量。

始终在执行容器的环境中导出此变量。

请参阅https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#environment-variables

  • 接受的答案只是意味着解决了 OP 提出的问题。它并不以任何方式表明哪个是最合适的解决方案——使用投票来确定。 (3认同)
  • 海事组织,这应该是公认的答案。 (2认同)

ham*_*ady 6

使用默认配置时,Kubernetes会将serviceaccount机密安装到pod中。只需检查此文件夹是否存在: /var/run/secrets/kubernetes.io。无需设置环境变量。在红宝石中,我将执行以下操作:

if File.exists?('/.dockerenv')
  puts "I'm running in a docker container"
end

if File.exists?('/var/run/secrets/kubernetes.io')
  puts "I'm also running in a Kubernetes pod"
end
Run Code Online (Sandbox Code Playgroud)

  • 必须小心服务帐户的秘密;令牌文件通常存在,但从 k8s 1.6 开始,可以使用“automountServiceAccountToken: false”禁用它。 (2认同)

Yu-*_*ong 5

您可以在pod规范中将环境变量传递到您的容器。您甚至可以使用向下的API通过环境变量向容器公开一些容器信息。