Pod镜像拉取策略
通过 spec.containers[].imagePullPolicy 参数可以指定镜像的拉取策略,目前支持的策略如下- Always 总是拉取,当镜像 tag 为 latest 时,且 imagePullPolicy 未配置,默认为 Always
- Never 不管是否存在都不会拉取
- IfNotPresent 镜像不存在时拉取镜像,如果 tag 为非 latest,且 imagePullPolicy 未配置,默认为 IfNotPresent
apiVersion: v1 # 必选,API 的版本号 kind: Pod # 必选,类型 Pod metadata: # 必选,元数据 name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称 spec: # 必选,用于定义 Pod 的详细信息 containers: # 必选,容器列表 - name: nginx # 必选,符合 RFC 1035 规范的容器名称 image: nginx:1.15.12 # 必选,容器所用的镜像的地址 imagePullPolicy: IfNotPresent # 可选,镜像拉取策略 ports: # 可选,容器需要暴露的端口号列表 - containerPort: 80 # 端口号
Pod重启策略
可以使用 spec.restartPolicy 指定容器的重启策略- Always 默认策略。容器失效时,自动重启该容器
- OnFailure 容器以不为 0 的状态码终止,自动重启该容器
- Never 无论何种状态,都不会重启
apiVersion: v1 # 必选,API 的版本号 kind: Pod # 必选,类型 Pod metadata: # 必选,元数据 name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称 spec: # 必选,用于定义 Pod 的详细信息 containers: # 必选,容器列表 - name: nginx # 必选,符合 RFC 1035 规范的容器名称 image: nginx:1.15.12 # 必选,容器所用的镜像的地址 imagePullPolicy: IfNotPresent command: # 可选,容器启动执行的命令 - sleep - "10" ports: # 可选,容器需要暴露的端口号列表 - containerPort: 80 # 端口号 restartPolicy: NeverPod 的三种探针:
-
startupProbe 指示容器中的应用是否已经启动。如果提供了启动探针,则所有其他探针都会被 禁用,直到此探针成功为止。如果启动探测失败,
kubelet
将杀死容器, 而容器依其重启策略进行重启。 如果容器没有提供启动探测,则默认状态为Success
- livenessProbe 指示容器是否正在运行。如果存活态探测失败,则 kubelet 会杀死容器, 并且容器将根据其重启策略决定未来。如果容器不提供存活探针, 则默认状态为
Success
。 - readinessProbe 指示容器是否准备好为请求提供服务。如果就绪态探测失败, 端点控制器将从与 Pod 匹配的所有服务的端点列表中删除该 Pod 的 IP 地址。 初始延迟之前的就绪态的状态值默认为
Failure
。 如果容器不提供就绪态探针,则默认状态为Success
apiVersion: v1 # 必选,API 的版本号 kind: Pod # 必选,类型 Pod metadata: # 必选,元数据 name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称 spec: # 必选,用于定义 Pod 的详细信息 containers: # 必选,容器列表 - name: nginx # 必选,符合 RFC 1035 规范的容器名称 image: nginx:1.15.12 # 必选,容器所用的镜像的地址 imagePullPolicy: IfNotPresent command: # 可选,容器启动执行的命令 - sh - -c - sleep 10; nginx -g "daemon off;" ports: # 可选,容器需要暴露的端口号列表 - containerPort: 80 # 端口号 restartPolicy: Never配置健康检查:
apiVersion: v1 # 必选,API 的版本号 kind: Pod # 必选,类型 Pod metadata: # 必选,元数据 name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称 spec: # 必选,用于定义 Pod 的详细信息 containers: # 必选,容器列表 - name: nginx # 必选,符合 RFC 1035 规范的容器名称 image: nginx:1.15.12 # 必选,容器所用的镜像的地址 imagePullPolicy: IfNotPresent command: # 可选,容器启动执行的命令 - sh - -c - sleep 10; nginx -g "daemon off;" readinessProbe: # 可选,健康检查。注意三种检查方式同时只能使用一种。 httpGet: # 接口检测方式 path: /index.html # 检查路径 port: 80 scheme: HTTP # HTTP or HTTPS #httpHeaders: # 可选, 检查的请求头 #- name: end-user # value: Jason initialDelaySeconds: 10 # 初始化时间, 健康检查延迟执行时间 timeoutSeconds: 2 # 超时时间 periodSeconds: 5 # 检测间隔 successThreshold: 1 # 检查成功为 2 次表示就绪 failureThreshold: 2 # 检测失败 1 次表示未就绪 livenessProbe: # 可选,健康检查 tcpSocket: # 端口检测方式 port: 80 initialDelaySeconds: 10 # 初始化时间 timeoutSeconds: 2 # 超时时间 periodSeconds: 5 # 检测间隔 successThreshold: 1 # 检查成功为 2 次表示就绪 failureThreshold: 2 # 检测失败 1 次表示未就绪 ports: # 可选,容器需要暴露的端口号列表 - containerPort: 80 # 端口号 restartPolicy: Never配置 StartupProbe
apiVersion: v1 # 必选,API 的版本号 kind: Pod # 必选,类型 Pod metadata: # 必选,元数据 name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称 spec: # 必选,用于定义 Pod 的详细信息 containers: # 必选,容器列表 - name: nginx # 必选,符合 RFC 1035 规范的容器名称 image: nginx:1.15.12 # 必选,容器所用的镜像的地址 imagePullPolicy: IfNotPresent command: # 可选,容器启动执行的命令 - sh - -c - sleep 30; nginx -g "daemon off;" startupProbe: tcpSocket: # 端口检测方式 port: 80 initialDelaySeconds: 10 # 初始化时间 timeoutSeconds: 2 # 超时时间 periodSeconds: 5 # 检测间隔 successThreshold: 1 # 检查成功为 2 次表示就绪 failureThreshold: 5 # 检测失败 1 次表示未就绪 readinessProbe: # 可选,健康检查。注意三种检查方式同时只能使用一种。 httpGet: # 接口检测方式 path: /index.html # 检查路径 port: 80 scheme: HTTP # HTTP or HTTPS #httpHeaders: # 可选, 检查的请求头 #- name: end-user # value: Jason initialDelaySeconds: 10 # 初始化时间, 健康检查延迟执行时间 timeoutSeconds: 2 # 超时时间 periodSeconds: 5 # 检测间隔 successThreshold: 1 # 检查成功为 2 次表示就绪 failureThreshold: 2 # 检测失败 1 次表示未就绪 livenessProbe: # 可选,健康检查 exec: # 端口检测方式 command: - sh - -c - pgrep nginx initialDelaySeconds: 10 # 初始化时间 timeoutSeconds: 2 # 超时时间 periodSeconds: 5 # 检测间隔 successThreshold: 1 # 检查成功为 2 次表示就绪 failureThreshold: 2 # 检测失败 1 次表示未就绪 ports: # 可选,容器需要暴露的端口号列表 - containerPort: 80 # 端口号 restartPolicy: NeverpreStop 和 postStart
apiVersion: v1 # 必选,API 的版本号 kind: Pod # 必选,类型 Pod metadata: # 必选,元数据 name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称 spec: # 必选,用于定义 Pod 的详细信息 containers: # 必选,容器列表 - name: nginx # 必选,符合 RFC 1035 规范的容器名称 image: nginx:1.15.12 # 必选,容器所用的镜像的地址 imagePullPolicy: IfNotPresent lifecycle: postStart: # 容器创建完成后执行的指令, 可以是 exec httpGet TCPSocket exec: command: - sh - -c - 'mkdir /data/' preStop: exec: command: - sh - -c - sleep 10 ports: # 可选,容器需要暴露的端口号列表 - containerPort: 80 # 端口号 restartPolicy: Never
参考文档:配置存活、就绪和启动探针 | Kubernetes 标签:容器,必选,策略,拉取,nginx,Pod,端口号,name From: https://www.cnblogs.com/slx-yyds/p/16823614.html