k8s pod MySQL环境变量_23. Kubernetes深入Pod-Pod命令及变量

释放双眼,带上耳机,听听看~!

command命令

创建Pod资源时,可以在容器中自定义要运行的命令以及选项和参数。

在容器的配置上下文中,使用command字段指定要运行的程序,而args字段则可用于指定传递给程序的选项和参数。在配置文件中定义command和args会覆盖镜像文件中相关的默认设定,这类程序会被直接运行,而不会由shell解释器解释运行,因此与sehll相关的特性均不被支持,如命令行展开符号 {}、重定向等操作。

下面是定义在 command-demo.yaml 文件中的Pod资源示例,它在容器 command-demo-container中将busybox镜像文件中默认运行的命令 ["/bin/sh", "-c"]修改为["httpd"],并为其额外传递了["-f"]选项。

资源清单编辑之后创建Pod对象,然后查看容器所运行的程序,结果如下父进程为 httpd -f

事实上,我们也可以只在容器配置的上下文提供 args 字段,以实现向默认运行的程序提供额外的参数,如果默认的命令为Shell解析器或 entrypoint 启动脚本,那么这些参数本身甚至还可以是要运行的命令及其参数,例如,下面的容器配置,表示要运行的程序为/bin/sh -c httpd -f,实现了shell解释器解释运行执行的程序之目的。

创建Pod对象,并查看容器的父进程

由上述的示例可见,Kubernetes配置文件中的command对应于Dockerfile中的ENTRYPOINT,而配置文件的args则对应于Dockerfile中的CMD。在Kubernetes中只给出command字段时,他会覆盖Dockerfile中的ENTRYPOINT和CMD,只给出args字段时,它仅覆盖CMD,而同时给出command和args时,它会对应覆盖ENTRYPOINT和CMD。

ENV变量

在Kubernetes中使用镜像启动容器时,可以在Pod资源或Pod模版资源为容器配置使用env参数来定义所使用的环境变量列表,即便容器中的应用本身不处于环境变量,也一样可以向容器传递环境变量,只不过它不被使用罢了。

环境变量配置容器化应用时,需要在容器配置段中嵌套使用env字段,它的值是一个由环境变量构建的列表。环境变量由name和value(或valueFrom)字段构成。

name:环境变量的名称,必须字段。

value:环境变量的值,通过 ${VAR_NAME} 引用,默认值为空。

valueFrom:环境变量值的引用源,例如,当前Pod资源的名称、名称空间、标签等,不能与非空值的value字段同时使用,即环境变量的值要么源于value字段,要么源于valueFrom字段,二者不可同时提供数据。valueFrom字段可引用的值有多种来源,包括当前Pod资源的属性值,容器相关的系统资源配置、ConfigMap对象中的Key以及Secret对象中的Key,它们应分别使用不同的嵌套字段进行定义。

fieldRef:当前Pod资源的指定字段,目前支持使用的字段包括 metadata.name、metadata.namespace、metadata.labels、metadata.annotations、spec.nodeName、spec.serviceAccountName、status.hostIP和status.podIP。

configMapKeyRef:ConfigMap对象中的特定Key。

secretKeyRef:Secret对象中的特定Key。

resourceFieldRef:当前容器的特定系统资源的最小值(配额)或最大值(限额),目前支持的引用包括limits.cpu、limts.ephemeral-storage、requests、cpu、requests.memory、requests.ephemeral-storage。

下面是定义在配置文件 env-demo.yaml 中的Pod资源,其通过环境变量引用当前Pod资源及其所在节点的相关属性值配置容器,fieldRef字段的值是一个对象,它一般由apiVersion(创建当前Pod资源的API版本)或fidldPath嵌套字段所定义:

创建Pod对象

然后打印它的环境变量列表

容器的启动脚本或应用程序调用或处理这些环境变量、即可实现容器化应用的配置。相较于命令行参数的方式来说,使用环境变量的配置方式更清晰、易懂,尤其是对于首次使用相关容器的用户来说,这种方式能够快速了解容器的配置方式,不过这两种配置方式有一个共同缺陷:无法在容器应用运行过程中更新环境变量从而达到更新应用目的。这通常意味着用户不得不为production、development和qa等不同的环境分别配置Pod资源。好在,用户还有ConfigMap资源可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值