序:
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> # Pod所在宿主机的目录,将被用于同期中Mount的目录
以上yaml文件包含:
livenessProbe和readinessProbe两个容器健康检查的探针(tcpsocket方式)
- hostpath方式的文件挂载类似于docker的 -v
- 调度pod到指定节点
- 容器运行前需要设置的环境变量
