K8S存储卷之DownwardAPI和Projected实战

news/2025/2/13 0:53:11/文章来源:https://www.cnblogs.com/yinzhengjie/p/18712356

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

目录
  • 一.DownwardAPI实战案例
    • 1.DownwardAPI概述
    • 2.可向容器注入的元数据
    • 3.downwardAPI实战案例
  • 二.Projected实战案例
    • 1.Projected卷概述
    • 2.Projected实战案例

一.DownwardAPI实战案例

1.DownwardAPI概述

与ConfigMap和Secret不同,DownwardAPI自身并非一种独立的API资源类型。DownwardAPI只是一种将Pod的metadata、spec或status中的字段值注入到其内部Container里的方式。DownwardAPI提供了两种方式用于将POD的信息注入到容器内部- 环境变量:用于单个变量,可以将POD信息和容器信息直接注入容器内部- Volume挂载:将 POD 信息生成为文件,直接挂载到容器内部中去

2.可向容器注入的元数据

可向容器注入的元数据 作用 是否可用于环境变量 是否可用卷
metadata.name Pod的名称 true true
metadata.namespace Pod的名称空间 true true
metadata.uid Pod的UID true true
metadata.labels Pod的标签 false true
metadata.labels['key'] 引用指定key的value true true
metadata.annotations Pod资源注解 false true
spec.nodeName Pod运行的节点名称 true false
spec.serviceAccountName Pod使用的sa名称 true false
status.podIP Pod的IP地址 true false
requests.cpu 容器期望的CPU资源 true true
requests.memory 容器期望的内存资源 true true
requests.ephermera-storage 容器期望的临时卷资源 true true
limits.cpu 容器的CPU上限 true true
limits.memory 容器的内存上限 true true
limits.ephemeral-storage 容器的临时卷上限 true true
在容器上基于DownwardAPI引用Pod元数据,可通过两种字段完成。- fieldRef:引用常规的元数据- resourceFieldRef:引用同资源限制和资源需求相关的元数据这些信息都能够基于环境变量和卷的方式注入到容器中。

3.downwardAPI实战案例

	1.编写资源清单
[root@master231 yinzhengjie-k8s]# cat 01-downloadAPI-volumes.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: downloadapi-demo
spec:replicas: 1selector:matchLabels:apps: v1template:metadata:labels:apps: v1spec:volumes:- name: data01downwardAPI:items:- path: pod-name# 仅支持: annotations, labels, name and namespace。fieldRef:fieldPath: "metadata.name"- name: data02downwardAPI:items:- path: pod-nsfieldRef:fieldPath: "metadata.namespace"- name: data03downwardAPI:items:- path: containers-limists-memory# 仅支持: limits.cpu, limits.memory, requests.cpu and requests.memoryresourceFieldRef:containerName: c1resource: "limits.memory"containers:- name: c1image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1resources:requests:cpu: 0.2memory: 300Milimits:cpu: 0.5memory: 500MivolumeMounts:- name: data01mountPath: /yinzhengjie-xixi- name: data02mountPath: /yinzhengjie-haha- name: data03mountPath: /yinzhengjie-hehe- name: c2image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v2command:- tailargs:- -f- /etc/hostsresources:limits:cpu: 1.5memory: 1.5Gi
[root@master231 yinzhengjie-k8s]# 2.创建资源
[root@master231 yinzhengjie-k8s]# kubectl apply -f 01-downloadAPI-volumes.yaml
deployment.apps/downloadapi-demo created
[root@master231 yinzhengjie-k8s]# 3.验证测试
[root@master231 yinzhengjie-k8s]# kubectl exec -it downloadapi-demo-5c696b958c-s9jm6 -c c1 -- cat /yinzhengjie-xixi/pod-name | more 
downloadapi-demo-5c696b958c-s9jm6
[root@master231 yinzhengjie-k8s]# 
[root@master231 yinzhengjie-k8s]# kubectl exec -it downloadapi-demo-5c696b958c-s9jm6 -c c1 -- cat /yinzhengjie-haha/pod-ns  | more 
default
[root@master231 yinzhengjie-k8s]# 
[root@master231 yinzhengjie-k8s]# echo `kubectl exec -it downloadapi-demo-5c696b958c-s9jm6 -c c1 -- cat /yinzhengjie-hehe/containers-limists-memory`/1024/1024 | bc
500
[root@master231 yinzhengjie-k8s]# 

二.Projected实战案例

1.Projected卷概述

Projected Volume是一种特殊的卷类型,它能够将已存在的多个卷投射进同一个挂载点目录中。Projected Volume仅支持对如下四种类型的卷(数据源)进行投射操作,这类的卷一般都是用于为容器提供预先定义好的数据:- Secret:投射Secret 对象。- ConfigMap:投射ConfigMap对象。- DownwardAPI:投射Pod元数据。- ServiceAccountToken:投射ServiceAccount Token。

2.Projected实战案例

	1.编写资源清单
[root@master231 yinzhengjie-k8s]# cat 01-projected-volumes.yaml 
apiVersion: v1
kind: ConfigMap
metadata:name: yinzhengjie-cm
data:blog: "https://www.cnblogs.com/yinzhengjie"k8s: "https://space.bilibili.com/600805398/channel/series"---apiVersion: v1
kind: Secret
metadata:name: yinzhengjie-secrets
stringData:username: adminpassword: yinzhengjie---
apiVersion: apps/v1
kind: Deployment
metadata:name: projected-demo
spec:replicas: 1selector:matchLabels:apps: v1template:metadata:labels:apps: v1spec:volumes:- name: data01projected:sources:- downwardAPI:items:- path: containers-limists-memoryresourceFieldRef:containerName: c1resource: "limits.memory"- configMap:name: yinzhengjie-cm- secret:name: yinzhengjie-secrets- serviceAccountToken:path: yinzhengjie-tokencontainers:- name: c1image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1resources:limits:cpu: 0.5memory: 500MivolumeMounts:- name: data01mountPath: /yinzhengjie-xixi
[root@master231 yinzhengjie-k8s]# 2.创建资源
[root@master231 yinzhengjie-k8s]# kubectl apply -f  01-projected-volumes.yaml 
configmap/yinzhengjie-cm created
secret/yinzhengjie-secrets created
deployment.apps/projected-demo created
[root@master231 yinzhengjie-k8s]# 3.验证测试
[root@master231 yinzhengjie-k8s]# kubectl get pods -o wide
NAME                              READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
projected-demo-6b7b48f98d-j27ph   1/1     Running   0          46s   10.100.140.127   worker233   <none>           <none>
[root@master231 yinzhengjie-k8s]# 
[root@master231 yinzhengjie-k8s]# kubectl exec -it projected-demo-6b7b48f98d-j27ph -- sh
/ # ls -l /yinzhengjie-xixi/
total 0
lrwxrwxrwx    1 root     root            11 Feb 12 15:31 blog -> ..data/blog
lrwxrwxrwx    1 root     root            32 Feb 12 15:31 containers-limists-memory -> ..data/containers-limists-memory
lrwxrwxrwx    1 root     root            10 Feb 12 15:31 k8s -> ..data/k8s
lrwxrwxrwx    1 root     root            15 Feb 12 15:31 password -> ..data/password
lrwxrwxrwx    1 root     root            15 Feb 12 15:31 username -> ..data/username
lrwxrwxrwx    1 root     root            24 Feb 12 15:31 yinzhengjie-token -> ..data/yinzhengjie-token
/ # 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/882807.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spacedesk: 轻松实现手机控制电脑

这款强大的软件可以将您手头的手机或平板变身为电脑的第二块显示屏,轻松实现屏幕面积的扩展。告别昂贵的外接显示器,Spacedesk 为您打造无限可能的工作空间。最大的亮点在于,Spacedesk 不仅能扩展屏幕,还支持触控操作。您可以在手机或平板上直接进行各种操作,体验全新的交互方式…

DeepSeek开启AI办公新模式,WPS/Office集成DeepSeek-R1本地大模型!

从央视到地方媒体,已有多家媒体机构推出AI主播,最近杭州文化广播电视集团的《杭州新闻联播》节目,使用AI主持人进行新闻播报,且做到了0失误率,可见AI正在逐渐取代部分行业和一些重复性的工作,这一现象引发很多人的关注;前两天分享了一篇关于如何在Office和WPS中使用Deep…

vue+.net 利用signalR实现实时推送和显示通知消息

后端(.net) 创建SignalR Hub 创建类SysNoticeHub.cspublic class SysNoticeHub : Hub{}模拟接口发送在线通知 [Route("api/sysnotice")] [ApiController] public class SysNoticeController : BaseController {private readonly IHubContext<SysNoticeHub> _…

【SpringBoot代码审计】拿到了 SpringBoot 开发的系统,该如何代码审计分析漏洞?

众所周知,Java 语言生态在中大型企业中的使用率居高不下,可谓是如日中天,经久不衰。 使用 SpringBoot 架构来开发的 JavaWeb 系统,更是数不胜数,也因此我们渗透测试中一部分的挑战,可以说是来对抗 Java 代码。 如果我们拿到了基于 SpringBoot 开发的系统,想要进行代码审…

分组密码工作模式-ECB

一般分组密码加密分组大小为一固定长度,如128比特。如果消息长度超过固定分组长度时,在进行加密前,消息将被按照分组长度进行分块;如果消息长度不是分组长度的整数倍,则在分块后必须将其填充为分组长度的整数倍。 ECB模式是一种最直接的消息加密方法 ECB模式的加密和解密流…

BIT rating round #1 summary

历程和部分题解BIT 校赛定段赛第一场总结solved 9/12,rk3 , 罚时15发(乐历程 先拿掉 4 道签到,其中 J 题还被重边自环卡了 2 发,原本以为直接 BFS 可以忽略的。 快速扫题时,发现 G 题是做过的题,大概思路还记得,于是快快的写完首杀了(但也用了 30min)。 过完 5 题开始…

【Gitlab】企业级Gitlab监控面板:代码仓库的守护者

随着DevOps文化的普及,持续集成和持续部署(CI/CD)成为软件开发不可或缺的一部分。GitLab作为支持完整DevOps生命周期管理的平台,其企业级监控面板为企业提供了一种强大的工具来监督和优化这些过程。通过实时的数据可视化、性能分析和自动化告警功能,GitLab帮助企业更高效地…

【tomcat】IDEA 在远程 Tomcat 上调试项目简单吗?坑超多!

场景 本地通过IDEA调试云服务器上的项目,这个项目部署在云服务器的tomcat容器内(如下图),看着很简单,但是折磨了好久~一、Tomcat 开启远程调试端口 访问云服务器并通过docker exec -it <container_name> bash进入tomcat容器,修改bin目录下的calatina.sh文件,增加:…

编译luacurl

curlcurl - Download这边下载的是MinGW的预编译库解压文件lua5.1库参考这边:lua包管理器luarocks使用luacurlGitHub - alekmarinov/luacurl: Binds libCURL to Lua, 下载源码并解压修改CMakeLists.txt注意:curl要用libcurl.dll.a这个静态库,不能用libcurl.a,对外接口全在li…

JUC并发—1.Java集合包底层源码剖析

大纲 1.为什么要对JDK源码剖析 2.ArrayList源码一:基本原理以及优缺点 3.ArrayList源码二:核心方法的原理 4.ArrayList源码三:数组扩容以及元素拷贝 5.LinkedList源码一:优缺点和使用场景 6.LinkedList源码二:双向链表数据结构 7.LinkedList源码三:插入元素的原理 8.Link…

【GraalPython】是一个JVM(Java虚拟机)上的Python实现,支持将Python应用编译成独立的原生可执行文件

什么是GraalPython? GraalPython是基于GraalVM构建的Python 3.11兼容运行时环境。它是一个JVM(Java虚拟机)上的Python实现,这意味着它可以充分利用JVM的优势,例如强大的垃圾回收机制、成熟的工具链以及与Java生态系统的无缝集成。 与传统的CPython解释器相比,GraalPython…