首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kubernetes Downward API 基本用法

(图片来源:https://unsplash.com/photos/HWbxSLvmSww)

前面在微信群里面有朋友问到如何在容器中获取 POD 的基本信息,其实原生就提供了支持的,那就是。

介绍

提供了两种方式用于将 POD 的信息注入到容器内部:

环境变量:用于单个变量,可以将 POD 信息和容器信息直接注入容器内部。

挂载:将 POD 信息生成为文件,直接挂载到容器内部中去。

环境变量的方式

我们通过来将 POD 的 IP、名称以及所对应的 namespace 注入到容器的环境变量中去,然后我们在容器中打印全部的环境变量来进行验证,对应的yaml文件如下:(test-env-pod.yaml)

我们可以看到上面我们使用了一种新的方式来设置env的值:。另外我们需要注意的是 POD 的 name 和 namespace 属于元数据,是在 POD 创建之前就已经定下来了的,所以我们使用 metata 获取就可以了,但是对于 POD 的 IP 则不一样,因为我们知道 POD IP 是不固定的,POD 重建了就变了,它属于状态数据,所以我们使用 status 去获取。

除了使用获取 POD 的基本信息外,还可以通过去获取容器的资源请求和资源限制信息。

接下来我们利用工具创建上面的 POD:

POD 创建成功后,我们可以查看日志:

我们可以看到 POD 的 IP、NAME、NAMESPACE 都通过环境变量打印出来了。

Volume 挂载

除了提供环境变量的方式外,还提供了通过挂载的方式去获取 POD 的基本信息。接下来我们通过将 POD 的 Label、Annotation 等信息通过 Volume 挂载到容器的某个文件中去,然后在容器中打印出该文件的值来验证。

新建文件 yaml 文件:(test-volume-pod.yaml)

我们将元数据 labels 和 annotaions 以文件的形式挂载到了目录下,创建上面的 POD :

然后查看日志:

我们通过打印出来的日志可以看到 POD 的 Labels 和 Annotations 信息都被挂载到 目录下面的 lables 和 annotations 文件了。

在实际应用中,如果你的应用有获取 POD 的基本信息的需求,一般我们就可以利用来获取基本信息,然后编写一个启动脚本或者利用将 POD 的信息注入到我们容器中去,然后在我们自己的应用中就可以正常的处理相关逻辑了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180302G16IAQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券