K8S的Pod资源清单
Pod 资源清单
Pod 是 Kubernetes 中最小的可部署单元,它是一个由一个或多个容器组成的组合。
本章化详细描述 Pod 资源清单
# 首行表示K8S的API版本
apiVersion: v1
# 资源类型 Pod
kind: Pod
# 元数据信息
metadata:
# 本资源名称
name: my-pod
# 资源标签,用于被其他资源所关联应用
labels:
app: my-app
env: production
# Pod 详细内容
spec:
# initContainers字段,用于定义初始化容器,初始化完成后再进行其他容器的启动工作
initContainers:
- name: init-container
# 初始化容器使用busybox镜像
image: busybox:latest
# 定义初始化容器的命令
command: ["sh", "-c", "echo 'Initializing...' && sleep 10"]
# 容器列表,一个Pod可以由多个容器组成,所以不唯一
containers:
# 容器的名称
- name: my-container
# 容器的镜像
image: nginx:latest
# 容器暴露的端口
ports:
- containerPort: 80
# 对这个Pod使用的资源进行限制 1000m为1核,内存可用M,G为单位
resources:
# 资源最低要求
requests:
memory: "64Mi"
cpu: "250m"
# 资源最高使用率
limits:
memory: "128Mi"
cpu: "500m"
# 注入环境变量 kv对的形式
env:
- name: ENV_VAR1
value: "value1"
- name: ENV_VAR2
value: "value2"
################ 探针 ####################
# 存活探针
livenessProbe:
# 用Http的GET方法周期性获取对应响应检查容器内应用状态
httpGet:
path: /healthz
port: 80
# 容器启动多久后开始探测
initialDelaySeconds: 15
# 检查间隔
periodSeconds: 20
# 可读探针,当容器可读时K8S才会把流量切入
readinessProbe:
# 使用HTTP的GET方法检查应用路径
httpGet:
path: /readiness
port: 80
# 容器启动多久后开始探测
initialDelaySeconds: 10
# 每次探测间隔
periodSeconds: 15
# 初始化探针,用于检查容器启动时程序是否就位。为就为将启动失败
startupProbe:
# 使用HTTP的GET方法检查应用路径
httpGet:
path: /init
port: 80
# 失败次数上线
failureThreshold: 30
# 每次检测间隔
periodSeconds: 10
# 评定超时的时间
timeoutSeconds: 5
# 探针除了httpGet方法检测存活外还有TCP Socket探针、Exec探针、自定义探针共计四种。
############## 存储卷挂载 ################
# 指定数据的挂载点
volumeMounts:
- name: my-volume
mountPath: /data
# 指定Pod使用的存储卷
# K8S中约有七种存储卷类型
# emptyDir,hostPath,gitRepo,persistentVolumeClaim,configMap,secret,downwardAPI
volumes:
- name: my-volume
emptyDir: {}
########################################
# 重启策略,Pod挂了是不是要重启,什么条件下重启
# 有三个值可选 IfNotPresent、Always、Never
restartPolicy: Always
# DNS解析策略
dnsPolicy: ClusterFirst
# ClusterFirst:默认的DNS策略。先K8S内部解析,失败转为外部解析
# Default:使用节点上的/etc/resolv.conf文件解析,解析失败使用外部的
# ClusterFirstWithHostNet:使用主机网络空间的解析
# 手动指定Pod的运行节点,填写节点名称,一般不用
nodeName: work01
# 优雅的重启Pod 常配合控制器使用,滚动重启,为了不影响业务,给一段时间等当前Pod的流量处理完。该值为Pod完全关闭的等待时间
terminationGracePeriodSeconds: 30
# 镜像拉取策略
imagePullPolicy: IfNotPresent
# 安全相关配置
securityContext:
# 限制对应UID外的用户
runAsUser: 1000
# 限制对应GID外的用户组
fsGroup: 2000
# SELINUX的相关配置
seLinuxOptions:
level: "s0:c123,c456"
role: "role1"
type: "type1"
user: "user1"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!