K8S-annotations 传递自定义参数使用
示例场景假设你有一个 Nginx Deployment需要通过annotations传递自定义参数比如日志级别、备份策略、告警阈值用一个简单的脚本读取这些参数执行对应的运维操作比如根据日志级别调整配置。第一步在 Deployment.yaml 中定义注解传递参数这里的annotations就是用来传递自定义参数的载体键名可以自定义建议加前缀避免冲突值可以是字符串、简单 JSON 等yamlapiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploy # 核心通过 annotations 传递自定义参数 annotations: # 自定义参数1日志级别字符串类型 ops/config/log-level: info # 自定义参数2是否开启自动备份布尔型字符串形式 ops/backup/enable: true # 自定义参数3备份保留天数数值型字符串形式 ops/backup/retention-days: 7 # 自定义参数4告警CPU阈值JSON格式存复杂参数 ops/alert/cpu-threshold: {warning: 80, critical: 95} spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80第二步读取注解中的参数脚本实现写一个简单的 Shell 脚本也可以用 Python/Go通过kubectl读取 Deployment 的annotations解析并使用这些参数bash运行#!/bin/bash # 脚本名read-annotations-params.sh # 功能读取 Deployment 的 annotations 参数并执行对应逻辑 # 定义要读取的 Deployment 名称 DEPLOYMENT_NAMEnginx-deploy NAMESPACEdefault # 1. 读取单个简单参数日志级别 LOG_LEVEL$(kubectl get deploy $DEPLOYMENT_NAME -n $NAMESPACE -o jsonpath{.metadata.annotations.ops/config/log-level}) # 2. 读取备份开关参数 BACKUP_ENABLE$(kubectl get deploy $DEPLOYMENT_NAME -n $NAMESPACE -o jsonpath{.metadata.annotations.ops/backup/enable}) # 3. 读取备份保留天数 RETENTION_DAYS$(kubectl get deploy $DEPLOYMENT_NAME -n $NAMESPACE -o jsonpath{.metadata.annotations.ops/backup/retention-days}) # 4. 读取复杂JSON参数需要 jq 解析 CPU_THRESHOLD_JSON$(kubectl get deploy $DEPLOYMENT_NAME -n $NAMESPACE -o jsonpath{.metadata.annotations.ops/alert/cpu-threshold}) # 解析JSON中的 warning 阈值 CPU_WARNING$(echo $CPU_THRESHOLD_JSON | jq -r .warning) # 打印读取到的参数模拟使用参数 echo 从 annotations 读取的参数 echo 日志级别$LOG_LEVEL echo 是否开启备份$BACKUP_ENABLE echo 备份保留天数$RETENTION_DAYS echo CPU告警警告阈值$CPU_WARNING% # 根据参数执行逻辑示例 if [ $BACKUP_ENABLE true ]; then echo ✅ 执行备份操作保留 $RETENTION_DAYS 天备份... # 这里可以写实际的备份命令比如备份Nginx配置 # cp /etc/nginx/nginx.conf /backup/nginx-$(date %Y%m%d).conf fi if [ $LOG_LEVEL debug ]; then echo 调整Nginx日志级别为debug... # 实际场景中可以修改Nginx配置并重启 fi第三步运行脚本验证效果先部署上面的 Deploymentbash运行kubectl apply -f deployment.yaml给脚本加执行权限并运行bash运行chmod x read-annotations-params.sh ./read-annotations-params.sh输出结果参数成功读取并使用plaintext 从 annotations 读取的参数 日志级别info 是否开启备份true 备份保留天数7 CPU告警警告阈值80% ✅ 执行备份操作保留 7 天备份...进阶场景控制器读取注解参数除了脚本K8s 自定义控制器比如 Operator也会通过注解读取参数比如yaml# 示例给 Deployment 加注解让自定义Ingress控制器读取转发规则 annotations: # 自定义参数Ingress域名 custom-ingress/domain: nginx.example.com # 自定义参数是否开启HTTPS custom-ingress/https-enable: true # 自定义参数证书名称 custom-ingress/tls-secret: nginx-tls-secret控制器会监听 Deployment 的注解变化自动创建对应的 Ingress 资源无需手动配置 —— 这就是注解传递参数的典型生产场景。一、Ingress 相关插件最常用Ingress 插件是读取注解做动态配置的典型代表几乎所有 Ingress 控制器都依赖注解实现自定义规则。1. Ingress-NGINX官方主流 Ingress 控制器通过注解可以动态配置路由规则、超时时间、SSL、限流等无需修改 Ingress 核心配置yamlapiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress annotations: # 动态设置连接超时时间核心参数 nginx.ingress.kubernetes.io/proxy-connect-timeout: 30s # 动态设置响应超时时间 nginx.ingress.kubernetes.io/proxy-read-timeout: 60s # 动态开启HTTPS重定向 nginx.ingress.kubernetes.io/ssl-redirect: true # 动态配置限流每秒10个请求 nginx.ingress.kubernetes.io/limit-rps: 10 # 动态设置跨域CORS nginx.ingress.kubernetes.io/enable-cors: true nginx.ingress.kubernetes.io/cors-allow-origin: * spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: nginx-service port: number: 802. Traefik轻量级 Ingress 控制器同样通过注解动态配置路由、负载均衡、健康检查等yamlmetadata: annotations: # 动态设置路由优先级 traefik.ingress.kubernetes.io/priority: 10 # 动态开启健康检查 traefik.ingress.kubernetes.io/service.healthcheck.path: /health traefik.ingress.kubernetes.io/service.healthcheck.interval: 10s # 动态配置负载均衡策略轮询/IP哈希 traefik.ingress.kubernetes.io/service.sticky.cookie: true二、监控 / 可观测性插件这类插件通过注解动态控制监控采集规则无需修改监控服务器配置。1. Prometheus监控采集通过注解动态决定是否采集 Pod/Deployment 的指标、采集端口 / 路径等yamlapiVersion: apps/v1 kind: Deployment metadata: name: app-deploy annotations: # 动态开启指标采集核心开关 prometheus.io/scrape: true # 动态指定采集端口 prometheus.io/port: 8080 # 动态指定采集路径 prometheus.io/path: /metrics # 动态添加采集标签用于分类 prometheus.io/label: appmyapp2. Grafana Agent轻量级监控采集类似 Prometheus通过注解动态配置采集规则yamlannotations: # 动态开启采集 grafana.com/scrape: true # 动态指定采集间隔 grafana.com/scrape-interval: 15s三、服务网格插件以 Istio 为代表通过注解动态配置流量治理规则。Istio服务网格通过注解动态控制流量路由、熔断、重试、镜像等yamlapiVersion: v1 kind: Service metadata: name: app-service annotations: # 动态开启流量镜像把10%流量镜像到测试服务 traffic.sidecar.istio.io/mirror: app-service-test traffic.sidecar.istio.io/mirror-percent: 10 # 动态配置重试策略最多重试3次间隔2秒 retries.istio.io/attempts: 3 retries.istio.io/perTryTimeout: 2s # 动态关闭Sidecar注入针对特定服务 sidecar.istio.io/inject: false四、调度 / 资源管理插件这类插件通过注解动态调整 Pod 调度、资源限制等规则。1. Kubernetes Descheduler重新调度插件通过注解动态标记 Pod 是否允许被重新调度yamlapiVersion: v1 kind: Pod metadata: annotations: # 动态禁止Descheduler删除该Pod descheduler.alpha.kubernetes.io/evict: false2. Vertical Pod Autoscaler (VPA)垂直扩缩容通过注解动态调整 VPA 策略yamlannotations: # 动态设置VPA更新策略立即更新/重启时更新 vpa-update-policy: immediate # 动态忽略某些容器的资源调整 vpa.exclude-containers: sidecar五、备份 / 存储插件VeleroK8s 备份工具通过注解动态控制备份策略yamlapiVersion: apps/v1 kind: Deployment metadata: name: app-deploy annotations: # 动态排除该资源不参与备份 velero.io/exclude-from-backup: true # 动态指定备份时的标签 velero.io/backup-label: envprod六、安全 / 权限插件PodSecurityPolicyPSP已被 PodSecurityContext 替代旧版本中通过注解动态控制 Pod 安全策略yamlannotations: # 动态指定Pod使用的安全策略 podsecuritypolicy.kubernetes.io/enforce: restricted核心使用原则注解前缀每个插件的注解都有固定前缀如nginx.ingress.kubernetes.io/、prometheus.io/避免冲突动态生效多数插件会监听注解变化修改注解后无需重启插件配置即可动态生效优先级注解配置 插件全局配置可实现 “全局默认 资源自定义” 的灵活策略。总结annotations传递参数的核心是把参数以键值对形式写在 metadata.annotations 中键名建议加自定义前缀如ops/避免冲突读取参数的方式通过kubectl jsonpath或 K8s API 获取注解值脚本 / 控制器解析后使用适用场景传递运维配置、自定义规则、第三方工具参数等无需修改资源核心配置即可扩展逻辑。

相关新闻

vue+nodejs+ElementUi的篮球CBA球队比赛管理系统的设计与实现

vue+nodejs+ElementUi的篮球CBA球队比赛管理系统的设计与实现

文章目录技术栈选择系统功能模块设计前端实现方案后端实现方案数据模型设计开发流程安排部署方案注意事项--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术栈选择 Vue.js作为前端框架,Node.js作为后…

2026/7/5 16:33:19 阅读更多 →
执行上下文 + 作用域:JavaScript 底层运行逻辑揭秘

执行上下文 + 作用域:JavaScript 底层运行逻辑揭秘

大家好,我是31岁、依然对代码充满好奇心的小米。 今天我们聊一个很多人“听过无数次,却总在面试时卡壳”的主题JavaScript:执行上下文与作用域。我不打算一上来就甩一堆抽象概念。我们换个角度讲故事。 把 JavaScript 想象成一家大型剧院。每一段代码,都是一场戏。而“执…

2026/5/17 6:58:00 阅读更多 →
正态分布族群之截断正态分布与折叠正态分布在质量管理的运用

正态分布族群之截断正态分布与折叠正态分布在质量管理的运用

正态分布是最受欢迎的分布之一,因为它可以应用于大多数领域。体重、身高、血压都是服从正态分布的例子。 正态分布的直方图与概率图 正态分布是有用的。根据中心极限定理,无论原始分布是什么,只要样本量足够大,从随机独立分布中抽…

2026/7/3 12:58:45 阅读更多 →

最新新闻

WeKnora智能知识平台:如何在3小时内构建企业级RAG与自主推理系统

WeKnora智能知识平台:如何在3小时内构建企业级RAG与自主推理系统

WeKnora智能知识平台:如何在3小时内构建企业级RAG与自主推理系统 【免费下载链接】WeKnora Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki. 项目地址: https://git…

2026/7/5 16:33:00 阅读更多 →
{{date}} 日志

{{date}} 日志

{{date}} 日志 【免费下载链接】OB_Template OB_Templates is a Obsidian reference for note templates focused on new users of the application using only core plugins. 项目地址: https://gitcode.com/gh_mirrors/ob/OB_Template 天气:☀️ 今日计划&…

2026/7/5 16:33:00 阅读更多 →
终极指南:如何用AI驱动的供应链瓶颈研究方法提升投资决策效率

终极指南:如何用AI驱动的供应链瓶颈研究方法提升投资决策效率

终极指南:如何用AI驱动的供应链瓶颈研究方法提升投资决策效率 【免费下载链接】serenity-skill Serenity-inspired Agent Skill for supply-chain bottleneck stock research 项目地址: https://gitcode.com/gh_mirrors/se/serenity-skill 在信息爆炸的投资时…

2026/7/5 16:24:58 阅读更多 →
Mac用户制作Windows启动盘的终极解决方案:WinDiskWriter完全指南

Mac用户制作Windows启动盘的终极解决方案:WinDiskWriter完全指南

Mac用户制作Windows启动盘的终极解决方案:WinDiskWriter完全指南 【免费下载链接】windiskwriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. 👾 UEFI &…

2026/7/5 16:22:58 阅读更多 →
终极IDM激活解决方案:3分钟永久解决激活弹窗问题

终极IDM激活解决方案:3分钟永久解决激活弹窗问题

终极IDM激活解决方案:3分钟永久解决激活弹窗问题 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager(IDM&a…

2026/7/5 16:22:58 阅读更多 →
Python列表反转的5种方式:性能、内存与生产陷阱

Python列表反转的5种方式:性能、内存与生产陷阱

1. 项目概述:为什么“反转列表”不是一句list.reverse()就能打发的事在Python日常开发中,我几乎每天都会遇到“把这组数据倒过来”的需求——可能是处理传感器采集的时序数据,想从最新一条开始分析;可能是清洗用户行为日志&#x…

2026/7/5 16:20:57 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻