pod作为kubernetes中最小的调度单元,一个pod中可以有多个容器,也可以理解为pod为一组容器的集合,pod中的容器共享网络命名空间
- pod常用的yaml格式定义配置文件说明
apiVersion: v1 #必选,api版本号
kind: Pod #必选,资源对象名称
metadata: #b必选,元数据 map类型
name: <your-pod-name> #必选,pod名称
namespace: <your-pod-namespace> #默认default,pod所属的命名空间
labels:
name: <your-labes-name> #自定义的pod标签
spec: #必选,pod中container的详细属性
containers: #必选,pod中容器列表,list类型
- name: <your-container-name> #必选,容器名称
image: <your-container-name> #必选,容器镜像
imagePullPolicy: {Always | Never | IfNotPresent} #Always表示下载镜像,Never表示本地镜像,IfNotPresent表示优先使用本地镜像,否则下载
volumeMounts:
- name: <your-pod-volume-name> #引用pod定义的共享存储卷名
mountPath: <your-path> #存储卷在容器内Mount的绝对路径
ports: #容器需要暴露的端口列表
- name: <your-port-name> #需要暴露的端口名称
containerPort: <your-container-port> #容器需要监听的端口
env: #容器运行前 需要设置的环境变量列表
- name: <your-env-name> #环境变量的名称
value: <your-env-value> #环境变量的值
livenessProbe: #对容器进行健康检查
tcpSocket: # 对Pod容器内检查方式设置为tcpSocket方式
port: <your-container-port> #需要健康检查的端口
initialDelaySeconds: 15 #容器启动十五秒开始发起第一次探针
periodSeconds: 20 #每隔二十秒进行探针一次
readinessProbe:
tcpSocket:
port: <your-container-port> #需要健康检查的端口
initialDelaySeconds: 5 #容器启动五秒开始发起第一次探针
periodSeconds: 10 #每隔十秒进行探针一次
nodeSelector: #NodeSelector表示将该Pod调度到包含这个label的node上
hostname: k8snode-1 # 调度到指定的标签Node上
volumes:
- name: <your-volume-name> #共享存储卷名称
emptyDir: { } # 类型为emptyDir的存储卷,与Pod同生命周期的一个临时目录,为空值
hostpath: # 类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录
path: <your-host-path>
以上yaml文件包含:
- livenessProbe和readinessProbe两个容器健康检查的探针(tcpsocket方式)
- hostpath方式的文件挂载类似于docker的 -v
- 调度pod到指定节点
- 容器运行前需要设置的环境变量