原文地址:Kubernetes Objects | Pod(永久地址,保存网址不迷路 🙃)
常用 Pod 文件模板
这是我们常用的 Pod 文件的模板,能够根据需要进行剪裁:
apiVersion: v1
kind: Pod
metadata:
name: dapi-envars-fieldref
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
# 字段 command 对应镜像的 entrypoint 指令;
command: [ "sh", "-c"]
# 字段 args 对应镜像的 CMD 指令;
args:
- while true; do
echo -en '\n';
printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
sleep 10;
done;
# 总是拉取镜像
imagePullPolicy: Always
# 使用环境变量
env:
# 直接定义环境变量
- name: FOO
valueFrom:
fieldRef:
fieldPath: spec.nodeName
# 引用定义中的变量作为环境变量
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
定义容器启动命令(command)及参数(args)
Define a Command and Arguments for a Container | Kubernetes
使用 command 定义启动命令,使用 args 定义启动参数。在容器启动后,该参数不能修改。
使用命令及参数的示例
apiVersion: v1
kind: Pod
metadata:
name: example-command-demo
spec:
containers:
- name: command-demo-container
image: debian
command: ["printenv"]
args: ["HOSTNAME", "KUBERNETES_PORT"]
在命令中,使用环境变量
下面的 YAML 文件演示如何使用环境变量:
env: - name: MESSAGE value: "hello world" command: ["/bin/echo"] args: ["$(MESSAGE)"] # 环境变量出现在括号中,这对于在 command 或 args 字段中扩展变量是必需的。 # 以这种方式引用环境变量 ≠ 在 Shell 中引用变量 # 这是两种不同的途径,前者由 Kubernetes API 处理,后者由 Shell 解析
执行 Shell 脚本(用于多命令场景)
How to set multiple commands in one yaml file with Kubernetes? - Stack Overflow
下面的 YAML 文件演示如何执行 Shell 脚本:
# 常用简单格式
---
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
# 或者使用如下形式
---
command: ["/bin/sh", ""]
args:
- |
while true
do
echo hello
sleep 10
done
# 可以根据需要灵活组合
相关链接
关于 Pod 网络:Understanding kubernetes networking: pods
相关文章
「Kubernetes Objects」- EndpointSlice(学习笔记)
「Kubernetes Objects」- Init Containers(学习笔记)
「Kubernetes Objects」- DaemonSet
「Kubernetes Objects」- ConfigMap(学习笔记)
「Kubernetes Objects」- PodSecurityPolicy
参考文献
Kubernetes/Concepts/Pods
Expose Pod Information to Containers Through Environment Variables | Kubernetes
Images | Kubernetes
本文详细介绍了Kubernetes Pod的常用文件模板,包括如何定义容器启动命令、参数、环境变量以及如何执行Shell脚本。通过示例展示了如何设置Pod的command和args,以及如何使用环境变量。此外,还探讨了如何在命令中引用环境变量并执行多条命令。这些内容对于理解和配置Kubernetes Pod的运行行为至关重要。
1万+

被折叠的 条评论
为什么被折叠?



