能否从kubernetes Pods确定托管云提供商/平台?如果是这样的话,是怎么做的?
现在,我只想找google cloud,aws和azure。他们是否在pod上挂载任何特定的文件,或者是否设置任何特定的环境变量,我可以从中识别云提供商/平台?
我不是在寻找一种通用的方式,不同的方式来找出不同的云提供商在这个时候也是很好的。
发布于 2021-12-01 11:08:06
有一个kubectl命令可以检索云提供商基础设施的详细信息:
kubectl describe infrastructure cluster例如,要知道集群部署在哪个平台上,我运行:
$ kubectl get infrastructure cluster -o jsonpath='{.status.platform}{"\n"}'
OpenStack发布于 2018-08-10 14:46:07
据我所知,没有环境变量或挂载,但linux内核版本字符串可以给您一个提示。uname或cat /proc/version提供的版本信息实际上是节点的版本信息,而不是实例的版本信息。
例如,在Azure kubectl exec my-pod-name -- uname -r收益率上:
4.15.0-1018-天蓝色
在GKE上,您应该会看到类似这样的内容
4.15.0-1018-gke
而AWS得到了
4.15.0-1018-aws
使用awk,您可以过滤出云提供商。当在pod中运行时,它会生成azure、gke或aws:
uname -r|awk -F"-" '{print $3}'发布于 2021-11-13 14:09:11
只有当你使用云提供商的镜像运行容器时,Markus的回答才有效。如果像许多人一样,你使用的是阿尔卑斯山,那么它不会起作用。我自己也在调查这个问题,并决定使用三大云提供商提供的实例元数据服务。所有提供商的IP地址都是相同的,但它们使用不同的接口:
对于GCP,您可以尝试解析metadata.google.internal,只有当您的容器在GKE (https://cloud.google.com/compute/docs/metadata/overview)
metadata.google.internal http://169.254.169.254/latest/meta-data/获取http://169.254.169.254/metadata/instance?api-version=2021-02-01希望这能有所帮助
https://stackoverflow.com/questions/51780093
复制相似问题