k8s之Dowanward API详细理解及使用

Kubernetes资源对象之Downward API篇 Kubernetes资源对象Downward API的详解 阅读详情

Downward API介绍

  作用:让Pod里的容器能够直接获取到这个Pod API对象本身的信息

 

Downward API可以通过以下两种方式将Pod信息注入容器内部

1.环境变量:用于单个变量,可以将Pod信息和Container信息注入到容器内部

2. Volume挂载:通过文件挂载到容器内部

 

Downward API支持的常用字段

1. 使用fieldRef可以声明使用:

spec.nodeName - 宿主机名字

status.hostIP - 宿主机IP

metadata.name - Pod的名字

metadata.namespace - Pod的Namespace

status.podIP - Pod的IP

spec.serviceAccountName - Pod的Service Account的名字

metadata.uid - Pod的UID

metadata.labels['<KEY>'] - 指定<KEY>的Label值

metadata.annotations['<KEY>'] - 指定<KEY>的Annotation值

metadata.labels - Pod的所有Label

metadata.annotations - Pod的所有Annotation

 

2. 使用resourceFieldRef可以声明使用:

limits.cpu-容器的CPU limit 

requests.cpu-容器的CPU request

limits.memory-容器的memory limit

requests.memory容器的memory request

 

Downward API使用

1.环境变量方式——将pod和容器信息注入为环境变量

# test-downwardapi-vars.yaml
apiVersion: v1
kind: Pod
metadata:
 name: test-downwardapi-vars
spec:
 containers:
 - name: test-container
   image: busybox
   imagePullPolicy: IfNotPresent
   command: [ "sh" , "-c" ]
   args:
   - while true; do
      echo -en '\n';
      printenv MY_POD_NAME
      printenv MY_POD_IP
      printenv MY_CPU_REQUEST MY_CPU_LIMIT;
      printenv MY_MEM_REQUEST MY_MEM_LIMIT;
      sleep 3600;
    done;
   resources:
    requests:
     memory: "32Mi"
     cpu: "125m"
    limits:
     memory: "64Mi"
     cpu: "250m"
   env:
   - name: MY_CPU_REQUEST
     valueFrom:
       resourceFieldRef:
        containerName: test-container
        resource: requests.cpu
   - name: MY_CPU_LIMIT
     valueFrom:
       resourceFieldRef:
        containerName: test-container
        resource: limits.cpu
   - name: MY_MEM_REQUEST
     valueFrom:
       resourceFieldRef:
        containerName: test-container
        resource: requests.memory
   - name: MY_MEM_LIMIT
     valueFrom:
       resourceFieldRef:
        containerName: test-container
        resource: limits.memory
   - name: MY_POD_NAME
     valueFrom:
        fieldRef:
          fieldPath: metadata.name
   - name: MY_POD_IP
     valueFrom:
       fieldRef:
         fieldPath: status.podIP
 restartPolicy: Never

#创建pod

$ kubectl create -f test-downwardapi-vars.yaml

#查看容器的日志输出(即注入的环境变量)

$ kubectl logs test-downwardapi-vars

 

2.Volume挂载方式

# test-downwardapi-volume.yaml
apiVersion: v1
kind: Pod
metadata:
  name: test-downwardapi-volume
  labels:
    zone: us-est-coast
    cluster: test-cluster1
    rack: rack-22
spec:
  containers:
    - name: client-container
      image: busybox
      imagePullPolicy: IfNotPresent
      command: ["sh", "-c"]
      args:
      - while true; do
          if [[ -e /etc/podinfo/labels ]]; then
            echo -en '\n\n'; cat /etc/podinfo/labels; fi;
          sleep 500;
        done;
      volumeMounts:
        - name: podinfo
          mountPath: /etc/podinfo
          readOnly: false
  volumes:
    - name: podinfo
      projected:
        sources:
        - downwardAPI:
            items:
              - path: "labels"
                fieldRef:
                  fieldPath: metadata.labels

#创建pod

kubectl create -f test-downwardapi-volume.yaml

 

#查看日志输出

kubectl logs test-downwardapi-volume

理解了Dowanward API的妙用,轻松拿捏kubernetes环境变量 引言 前两天,公司有个新同事愁眉苦脸,看起来心事重重,我去问他怎么回事,原来是有个需求犯了难:一次部署起四个pod,每个pod名称还不一样,怎么判断是哪个pod产生的日志呢?听到这,我微微一笑,给他讲解了Dowanward API的妙用,他一听,紧缩的眉头缓缓舒展开来,眼看着他将日志名称写成$MY_POD_NAME.log,我轻轻点头表示满意。答应的周末请客吃饭把我也乐了。今天就将Dowanward API的功能介绍给大家。 总体思路 通过配置环境变量或者挂载Dowanward API卷的形式来暴露pod的 阅读详情

相关推荐

kubernetes入门之Downward API

在不与Kubernetes过度耦合的情况下,容器拥有自身的信息是很有用的。DownwardAPI允许容器在不使用客户端或API服务器情况下获得自己或集群信息。作为环境变量作为downwardAPI卷中的文件这两种暴露Pod和容器字段的方式统称为DownwardAPI。......

蛐蛐的博客 859

K8S---Downward API

Downward API 容器内部获取pod级别的信息,包括Pod级别的Pod名称、Pod IP、Node IP、Label、Annotation、容器级别的资源限制等 Downward API 在容器内获取Pod信息 Downward API将Pod和容器的元数据信息注入容器内部的两种方式 环境变量:将Pod或Container信息设置为容器内的环境变量 Volume挂载:将Pod或Container信息以文件的形式挂载到容器内部 环境变量方式 将Pod信息设置为容器内的环境变量 通过Down

liao__ran的博客 962

15 | 深入解析Pod对象(二):使用进阶 笔记

它的作用,是帮你把 Pod 想要访问的加密数据,存放到 Etcd 中。然后,你就可以通过在 Pod 的容器里挂载 Volume 的方式,访问到这些 Secret 里保存的信息了。 在这个 Pod 中,我定义了一个简单的容器。它声明挂载的 Volume,并不是常见的 emptyDir 或者 hostPath 类型,而是 projected 类型。而这个 Volume 的数据来源(sources),则是名为 user 和 pass 的 Secret 对象,分别对应的是数据库的用户名和密码。这里用到的数据库的用户

山巅 835

Downward API

前面我们从pod的原理到生命周期介绍了pod的一些使用,作为kubernetes中最核心的对象,最基本的调度单元,我们可以发现pod中的属性还是非常繁多的,前面我们使用过一个volumes的属性,表示声明一个数据卷,我们可以通过命令kubectl explain pod.sec.volumes去查看该对象下面的属性非常多,前面我们只是简单的使用了hostpath和empryDir{}这两种模式,其中还有一种叫做downwardAPI这个模式和其他模式不一样的地方在于它不是为了存放容器的数据也不是用来进行容器

ens160的博客 1682

【WebLogic】Linux图形化界面安装WebLogic 14.1.2.0

Linux系统图形化界面安装WebLogic 14.1.2.0.0版本

cnskylee的博客 840

在ubuntu20.04上配置VINS_Fusion(亲测有效,一应俱全)

最近在做科研训练的时候配置了HKUST-Aerial-Robotics实验室的VINS_Fusion代码项目,经历了一些编译报错的问题,在网上查找的时候博客内容良莠不齐,且实质针对性意见不多,于是在此记录下自己配置期间遇到的一些共性问题,留作自己日后参考和大家的交流学习。

wyr1849089774的博客 8270

k8s—Downward API

downward api

qinxue722的博客 1107

CST新手必看:共面波导色散曲线绘制全流程(附参数设置详解)

本文为CST新手提供了绘制共面波导色散曲线的完整流程与参数设置详解。从模型搭建、周期性边界条件设置,到本征模求解器配置和参数扫描技巧,逐步解析关键步骤,并分享后处理与结果验证方法,帮助用户高效完成仿真任务。

j0k1l2m3n的博客 425

kubernetes Downward API

kubernetes 官方Downward API 有两种方式可以将Pod信息呈现: 环境变量 卷文件 一、可提供的信息 下面这些信息可以通过环境变量和 downwardAPI 卷提供给容器: fieldRef 环境变量 名称 metadata.name Pod 名称 metadata.namespace Pod 名称空间 metadata.uid Pod的UID resourceFieldRef 容器的 CPU 约束值 容器的 CPU 请求值 容器的内存约束值 容器的内存

qq_37377136的博客 1709

基于Multisim设计电子密码锁

一、设计任务与要求:(可软件仿真实现)1)基本要求:设计一个数字密码锁,要求只有按正确的顺序,输入正确的密码,方能输出开锁信号,实现开锁。设置三个正确的密码键和若干个伪键,任何伪键按下后,密码锁都无法打开。每次只能接受四次按键信号,而且第四个键只能是“确定”或者“重输键”,其他无效。能显示已输入键的个数2)扩展要求:第一次密码输错后,可以输入第二次,但是连续三次输错,密码将被锁,必须按复位键才能解锁。

ablinger的博客 4418

乐企增值税及附加税费(一般纳税人适用)申报表填报能力说明文档V3.009

申报表填报,是指企业在自有业务系统中将算税结果数据按预填规则要求加工汇总后,进行申报表填报的过程。申报表填报前对纳税申报所需的前提条件进行校验。校验通过后,应用前序算税结果数据及预填规则进行纳税申报表预填,生成申报表数据。申报表数据通过申报业务规则校验后,经纳税人确认即完成申报表填报业务。

记录点滴 347

Kubernetes 存储 Downward API

我们可以调取当前kubernetes内部的一些需要的数据 以此去修改 让我得到一个最稳妥的恰当的运行方式 这都是我们的 downward API 可以去实现可以去用到的的一种情况 比如我们的CPU实际的真实数量的传入。相当于把我们apiserver 服务器做了 类似于nginx 在外面桥接一次 把https 转化为 http 你就不需要提供证书了 而且基于这样的端口访问的时候 是不需要做授权的判断的 更简单。这是另一种获取pod相关属性的方式。创建 12.pod.yaml。这样就获取到官方的接口文档了。

qq_53374893的博客 842

目标检测YOLO实战应用案例100讲-基于数据融合的SAR图像中海上目标检测与跟踪(中)

本文使用的数据集为欧空局(European Space Agency, ESA)提供的Sentinal-1 数据集,Sentinel-1是欧洲“哥白尼计划”的SAR卫星机群,主要是用于陆地和海 洋服务的极地轨道全天候昼夜雷达成像任务[ 34]。Sentinel-1A于2014年4月3日发 射升空,Sentinel-1B于2016年4月25日发射升空,每颗卫星都携带C波段SAR, 共同提供地球表面的全天候、昼夜图像。

qq_36130719的博客 359

K8S 的Downward API能力

K8S 的Downward API能力

baxia2020的博客 216

C#调用企业微信JS-Sdk实现扫描二维码

企业微信JS-SDK是企业微信面向网页开发者提供的基于企业微信内的网页开发工具包。通过使用企业微信JS-SDK,网页开发者可借助企业微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用企业微信分享、扫一扫等企业微信特有的能力,为企业微信用户提供更优质的网页体验提示:生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是H5应用调用企业微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。

清浅 937

Vue2 - 最新详细实现接入天地图详细配置流程及示例代码教程,提供获取用户当前定位的城市名称及省市区数据、精准经纬度信息、IP属地定位、地图搜索标点等示例,解决天地图跨域报错/页面白屏/定位不准问题

vue2,nuxt2,天地图,使用教程,vue接入国家天地图,定位api,ip属地定位,获取用户当前位置数据,省市区,地图不显示,白屏,报错,vue2如何使用天地图,地图选点,cors跨域,白名单设置了还是不行,vue项目调用天地图api实现定位,Vue2中使用天地图,详细教程,天地图申请密钥key教程,经纬度,经纬度不准确,一直定位北京,定位在北京不准怎么办,nuxt项目天地图,网站,网页,h5页面,地图显示不全,获取当前定位,如何使用天地图,拿到客户ip地址定位城市名称,距离计算,实时搜索地址逆解析,天

🏆 前端领域优质创作者 5328

K8s DownwardAPI:容器如何获取自身元数据

Kubernetes DownwardAPI摘要 DownwardAPI是Kubernetes提供的一种轻量级机制,允许容器获取自身Pod的元数据(如名称、命名空间、标签、资源限制等),而无需直接调用Kubernetes API。它主要通过两种方式暴露数据:环境变量和Volume挂载。 核心作用: 提供Pod基础信息(名称、IP等)用于日志标记 获取资源配置(CPU/内存限制)以优化应用行为 读取标签/注解实现动态配置 避免直接调用API带来的复杂性和开销 优势: 解耦应用与平台 轻量级数据获取 支持动态感

2301_81841155的博客 1028

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

k8s教程(pod篇)-容器获取pod信息(Downward API)

超详细讲解Kubenetes使用Downward API的方式,使容器能通过环境变量及volume的方式来获取pod的信息。

阿甘兄 8047

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

k8s 向容器提供配置 变量信息总结configmap

以下将介绍向容器提供配置信息的几种方法 通过命令行参数进行配置 在制作Docker镜像时,Dockerfile中的ENTRYPOINT和CMD指令可用于指定容器启动时要运行的程序及相关参数。CMD指令以列表的形式指定要运行的程序和相关参数,但是如果同时存在ENTRYPOINT指令,则CMD指令中列表的所有元素都将被作为由ENTRYPOINT指定程序的命令行参数。另外在基于某镜像使用Docker命令创建容器时,可以在命令行向ENTRYPOINT中的程序传递额外的自定义参数,甚至还可以修改...

码农崛起 7982

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

第七章 Kubernetes 存储-Downward API

Downward API是kubernetes中的一个功能,它允许容器在运行时从kubernetes API Server获取有关它们自身的信息。这些信息可以作为容器内部的环境变量或文件注入到容器中,以便容器可以获取有关其运行环境的各种信息,比如pod名称、命名空间、标签等。

1214

Kubernetes Downward API的介绍及使用

我们都知道,Pod的逻辑概念在容器之上,K8s 在成功创建Pod之后,会为Pod和容器设置一些额外的信息,例如Pod级别的Pod 名称,Pod IP ,Label,Annotation,容器级别的资源限制等。 在很多应用场景中,这些信息对容器内的应用来说都很有用,例如使用Pod名称作为日志记录的一个字段用于标识日志来源,为了在容器内获取Pod级别的这些信息,k8s 提供了Downward API 机制来将Pod 和容器的某些元数据信息注入容器环境内,供容器应用方便地使用。 Downward API 可以通过

tom的博客 972

Kubernetes(K8s)_07_获取数据

Kubernetes(K8s)容器获取集群元数据

爱喝可乐的w 1800

k8s学习随笔 - pod篇 - 上

读《Kubernetes权威指南》整理而来的笔记

qq_24251607的博客 439

Kubernetes-Downward API

Downward API 是 Kubernetes 中让 Pod “感知自身” 的轻量工具,通过环境变量或卷挂载的方式,可便捷地将 Pod 元数据、资源配置传递到容器内部。相比调用 Kubernetes API,它更简单、更可靠,是日常开发中获取 Pod 自身信息的首选方案。

hxd030228的博客 589

带你玩转kubernetes-k8s(第14篇:k8s-深入掌握Pod-在容器内获取Pod信息)

哈喽~大家好!昨天我们讲解了ConfigMap的使用,今天我来继续深入的讨论Pod的概念及其用法。 现在我们进入正题。 Downward API 我们知道,每个Pod在被成功创建出来之后,都会被系统分配唯一的名字、IP地址,并且处于某个Namespace中,那么我们如何在Pod的容器内获取Pod的这些重要信息呢?答案就是使用Downward API。 Down...

坚持的道路注定孤独 6093

kubernetes之download api

download api作用: 可以通过环境变量或Volume挂载将pod信息注入到容器内部 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 1 template...

weixin_30698297的博客 1237
上一篇: k8s之ConfigMap详细理解及使用
下一篇: Golang 使用RPC
思维的深度
博客等级 码龄11年 2万+粉丝 391原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值