pod

最小应用部署单元 即应用

pod 需要定义什么 ( 带* 为必填项)

元数据 *
pod名称 *
所属namespaces *
标签 可用于 svc 识别 *
注释信息 *
规格 *
调度
- 容器名称 containers *
使用镜像 *
镜像拉取方式 *
执行参数
启动参数
挂载卷使用 对应到容器 目录
开放端口
环境变量
资源配额
健康检查
指定挂载卷 硬盘资源
容忍
dns策略
主机模式
重启策略


pod yaml 范例

apiVersion: v1
kind: Pod
metadata:
name: test-pod # pod名称
namespaces: default # 所属命名空间
labels: # pod 标签列表
app: test # 添加标签 (key-value)
……
annotations: # 注释 列表
app: test # 添加注释 (key-value)
……
spec: # 规格
nodeSelector: # 表示将该Pod调度到包含这个label的node上
nodelabel: node2 # 调度node的标签
containers: # 容器规格
- name: test # 容器名称(pod可有多个容器) (string) # 以下为这个containers 的配置
image: nginx # 使用镜像源 (镜像源)
imagePullPoilcy: {always| Never | ifNotPresent}
#镜像拉取方式(always Never ifNotPresent)
# 启动命令 ----------------------------------------
command: # dockers启动后执行命令
- /bin/sh
- c
- sleep 3600 # 执行命令
# 启动参数 ----------------------------------------
args: # 容器启动 参数列表
- ["HOSTNAME", "KUBERNETES_PORT"] # 容器启动参数
workingdir: / # 容器工作目录 linux 目录
# 容器挂载 ----------------------------------------
volumeMounts: # 挂载存储配置
- name: disk1 # 挂载存储卷名称
mountPath: # 存储卷挂载位置 绝对路径
readonly: {true|false} # 是否只读 {true|false}
# 开放端口 ----------------------------------------
ports: # 容器需要暴漏的端口号列表
- name: http # port名称
containerPort: 80 # 监听端口号使用podip可以访问 int
hostPort: 80 # 容器将服务映射到宿主机端口 #端口号 int
protocol: {tcp|udp} # 端口协议 # {tcp | udp}
- name ……
# 环境变量 ----------------------------------------
env:
- name: path # 环境变量名称 string
value: xxx # 环境变量值 string
#---
- name: configmap # 可使用configmap传入变量
valueFrom:
configMapKeyRef:
name: test-cm # 使用 test-cm configmap
key: test-cm-testvkey #使用test-cm 中的test-cm-testvkey值
# 资源限制 ----------------------------------------
resources: # 使用资源限制 (limits 大于 requests)
#---
limits: # 封顶资源限制
cpu: "1" # CPU 限制1 核
memory: 1Gi # 内存限制 512M #单位Gi Mi
#----------------------------------------
requests: # 请求资源
cpu: "1" # CPU 限制0.5 核
memory: 512M # 内存限制 512M #单位Gi Mi
# 健康检查 ----------------------------------------
readlinessProbe: # 健康检查 *
#----
exec: # 命令脚本方式
command:
- cat
- /tmp/health # 命令执行返回结果为失败判定为不健康
#----
tcpSocket: # 端口健康检测方式
port: 80 # 检测tcp80端口 如果为开启 为不健康
#----
httpGet: # http请求方式
path: /
port: 80 # http请求 容器地址:port+path 返回状态码结果200~399 为健康
#----
initialDelaySeconds: # 初始检测延迟秒数
timeoutSeconds: 1 # 超时秒数 返回结果超时认为不健康
periodSeconds: 10 # 对容器监控检查的定期探测时间设置,单位秒,默认10秒一次
# 挂在目录 ----------------------------------------
volumes: # 设定存储卷 三种模式
#---
- name: tmp # 存储卷名称(emptydir模式)临时目录
emptyDir: {} # 使用临时存储 容器 重启会数据清空
#---
- name: host_path # 存储卷名称 (hostpath模式)宿主机文件存储
hostPath: # 使用宿主机文件模式 挂载目录=宿主机目录
path: "/disk1" # 挂在宿主机目录地址
#---
- name: nfs # nfs模式 使用nfs服务器 存储资源
nfs:
server: 192.168.1.1 #指定nfs url
persistenVolumeClaim:
claimName: pvc1 # 已经申请好了的PVC
#---
- name: cm # 存储卷名称 (configmap模式)
configMap: # 使用configmap模式
items:
- key: # 使用configmap key
path: # 挂载路径
dnsPolicy: {default|clusterFirst|clusterFirstwithHostNet|node
# 查304页
hostnetwork: {true|false} # 网络模式
restartPolicy: {Always|Never} # 重启策略
# 容忍 ----------------------------------------
tolerations:
- key: "节点污点key"
operator: "Equal"
value: "节点污点value"
effect: "NoExecute"
tolerationSeconds: 3600