在Kubernetes环境中引用变量的方法

简介: 总结一下,在Kubernetes环境中引用变量主要有两种方式:一种是通过环境变量,另一种是通过ConfigMaps。前者适合于简单、直接地设置和获取值;后者则更适合于存储和管理复杂、多样化的配置信息。

在Kubernetes环境中,变量的引用主要通过环境变量和ConfigMaps来实现。这两种方式都可以让你在Pod的定义中引用变量,从而使你的应用更加灵活和可配置。

首先,我们来看看如何使用环境变量。Kubernetes允许你在Pod定义中设置环境变量。这些可以是硬编码值,也可以是其他Kubernetes资源(如其他Pods或Secrets)的值。

例如,在下面的YAML文件中:

apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
spec:
  containers:
    - name: envar-demo-container
      image: gcr.io/google-samples/node-hello:1.0
      env:
        - name: DEMO_GREETING   # 环境变量名字 
          valueFrom:
            fieldRef:
              fieldPath : status.podIP   # 引用podIP作为DEMO_GREETING 的值 
​

上述代码片段创建了一个名为 envar-demo 的pod,并设置了一个名为 DEMO_GREETING 的环境变量,其值从 pod 自身状态信息 status.podIP 中获取。

其次, 我们来看一下ConfigMaps。ConfigMap 是 Kubernetes 提供给我们存储配置信息并供应给 pods 使用的一种资源对象. 定义 ConfigMap 后, 我们就能够将它挂载到 pod 中去.

例如,在下面创建 ConfigMap 的 YAML 文件:

apiVersion : v1
kind : ConfigMap
metadata :
  name : game-demo 
data :
  # 属性类似于键值对 
  player_initial_lives: "3"
  ui_properties_file_name: "user-interface.properties"
​

然后在 Pod 中引用这个 ConfigMap:

apiVersion: v1
kind: Pod
metadata:
  name: configmap-demo-pod 
spec:
 containers:
   - name : demo-container 
     image : gcr.io/google-samples/node-hello:1.0  
     envFrom :
       - configMapRef :
           # 引用上面创建的ConfigMap game-demo  
           name : game-demo   
​

在这个例子中,我们创建了一个名为 game-demo 的ConfigMap,其中包含两个键值对。然后我们在Pod定义中通过 envFromconfigmapRef 引用了这个ConfigMap。结果是Pod内的容器将拥有两个新的环境变量:player_initial_livesui_properties_file_name, 它们的值分别是"3"和"user-interface.properties"。

总结一下,在Kubernetes环境中引用变量主要有两种方式:一种是通过环境变量,另一种是通过ConfigMaps。前者适合于简单、直接地设置和获取值;后者则更适合于存储和管理复杂、多样化的配置信息。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
搜索推荐 物联网 定位技术
IP定位技术的功能和服务概述
总结而言,虽然不能达到GPS那样精确度但是基于成本效益考虑,在多种场景下都证明了其价值。随着移动计算、物联网(IoT)及普适计算领域快速扩张将进一步推动相关研究进步使得未来几年内我们预见会有更加精确便捷高效普适解决方案面市满足日益增长需求。
100 16
|
1月前
|
存储 Kubernetes 微服务
Dapr:用于构建分布式应用程序的便携式事件驱动运行时
Dapr 是一个可移植、事件驱动的运行时,简化了分布式应用程序的开发。它支持多语言、多框架,适用于云和边缘计算环境,提供服务调用、状态管理、消息发布/订阅等构建模块。通过 sidecar 模式,Dapr 帮助开发者轻松应对微服务架构的复杂性,实现弹性、可扩展的应用部署。
137 8
Dapr:用于构建分布式应用程序的便携式事件驱动运行时
|
1月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
357 64
搭建ELK日志收集,保姆级教程
|
2天前
|
存储 安全 编译器
RT-Thread框架中利用FAL组件实现STM32F407内置Flash的读写操作
通过以上步骤,可以在RT-Thread框架下使用FAL组件实现STM32F407内置Flash的高效读写操作。这不仅提高了代码的可移植性和可维护性,还使得Flash的管理更加灵活和安全。
161 99
|
1月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
187 86
|
2天前
|
Java Linux Apache
在CentOS服务器上编译并部署NiFi源码
部署Apache NiFi在CentOS上是一个涉及细节的过程,需要注意Java环境、源码编译、配置调整等多个方面。遵循上述步骤,可以在CentOS服务器上成功部署和配置Apache NiFi,从而高效地处理和分发数据。
66 17
|
2天前
|
缓存 负载均衡 算法
深入解析Nginx的Http Upstream模块
Http Upstream模块是Nginx中一个非常重要的功能模块,它通过有效的负载均衡和故障转移机制,提高了网站的性能和可靠性。正确配置和优化这一模块对于维护大规模、高可用的网站至关重要。
66 19
|
1月前
|
运维 监控 自动驾驶
低代码运维平台:是“运维福音”,还是“甩手掌柜”?
低代码运维平台:是“运维福音”,还是“甩手掌柜”?
95 29
|
15天前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
442 19
|
26天前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
177 17