如何判断我是否在 Kubernetes 集群内运行?使用 Docker,可以检查 /.dockerinit
是否存在。在 Kubernetes 中是否有相应的方法呢?
如何判断我是否在 Kubernetes 集群内运行?使用 Docker,可以检查 /.dockerinit
是否存在。在 Kubernetes 中是否有相应的方法呢?
您可以检查KUBERNETES_SERVICE_HOST
环境变量。
该变量始终在容器执行的环境中导出。
您可以在Pod规范中向容器传递环境变量。您甚至可以使用Downward API通过环境变量将一些Pod信息暴露给容器。
使用默认配置,Kubernetes将在Pod中挂载serviceaccount secrets。只需检查此文件夹的存在即可:/var/run/secrets/kubernetes.io
。无需设置环境变量。在Ruby中,我会执行以下操作:
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
一种选择是检查/etc/hosts
文件,通常会有一个注释说明该文件由K8s维护。
无论如何,最好的方法是在部署中定义自己的环境变量,使用一些模板工具例如helm生成部署并定义一些通用模板。