在容器内获取Pod信息(Downward API)
简介
我们知道,每个Pod在被成功创建出来之后,都会被系统分配唯一 的名字、IP地址,并且处于某个Namespace中,那么我们如何在Pod的容 器内获取Pod的这些重要信息呢?答案就是使用Downward API。
Downward API可以通过以下两种方式将Pod信息注入容器内部。
(1)环境变量:用于单个变量,可以将Pod信息和Container信息注入容器内部。
(2)Volume挂载:将数组类信息生成为文件并挂载到容器内部。 下面通过几个例子对Downward API的用法进行说明。
环境变量方式:将Pod信息注入为环境变量
下面的例子通过Downward API将Pod的IP、名称和所在Namespace 注入容器的环境变量中,容器应用使用env命令将全部环境变量打印到 标准输出中:
注意到上面valueFrom这种特殊的语法是Downward API的写法。目 前Downward API提供了以下变量。
◎ metadata.name:Pod的名称,当Pod通过RC生成时,其名称是 RC随机产生的唯一名称。
◎ status.podIP:Pod的IP地址,之所以叫作status.podIP而非 metadata.IP,是因为Pod的IP属于状态数据,而非元数据。
◎ metadata.namespace:Pod所在的Namespace。

从日志中我们可以看到Pod的IP、Name及Namespace等信息都被正 确保存到了Pod的环境变量中
环境变量方式:将容器资源信息注入为环境变量
下面的例子通过Downward API将Container的资源请求和限制信息 注入容器的环境变量中,容器应用使用printenv命令将设置的资源请求 和资源限制环境变量打印到标准输出中
注意valueFrom这种特殊的Downward API语法,目前 resourceFieldRef可以将容器的资源请求和资源限制等配置设置为容器内 部的环境变量。
◎ requests.cpu:容器的CPU请求值。 ◎ limits.cpu:容器的CPU限制值。 ◎ requests.memory:容器的内存请求值。 ◎ limits.memory:容器的内存限制值。 运行kubectl create命令来创建Pod:
从日志中我们可以看到Container的requests.cpu、limits.cpu、 requests.memory、limits.memory等信息都被正确保存到了Pod的环境变 量中。
文章来源于k8s权威指南
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端