Pod 镜像拉取策略+重启策略

Pod镜像拉取策略

通过 spec.containers[].imagePullPolicy 参数可以指定镜像的拉取策略,目前支持的策略如下
  • Always      总是拉取,当镜像 tag 为 latest 时,且 imagePullPolicy 未配置,默认为 Always
  • Never       不管是否存在都不会拉取 
  • IfNotPresent     镜像不存在时拉取镜像,如果 tag 为非 latest,且 imagePullPolicy 未配置,默认为 IfNotPresent
更改镜像拉取策略为 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: Never
Pod 的三种探针:
  • startupProbe  指示容器中的应用是否已经启动。如果提供了启动探针,则所有其他探针都会被 禁用,直到此探针成功为止。如果启动探测失败,kubelet 将杀死容器, 而容器依其重启策略进行重启。 如果容器没有提供启动探测,则默认状态为 Success
  • livenessProbe 指示容器是否正在运行。如果存活态探测失败,则 kubelet 会杀死容器, 并且容器将根据其重启策略决定未来。如果容器不提供存活探针, 则默认状态为 Success
  • readinessProbe 指示容器是否准备好为请求提供服务。如果就绪态探测失败, 端点控制器将从与 Pod 匹配的所有服务的端点列表中删除该 Pod 的 IP 地址。 初始延迟之前的就绪态的状态值默认为 Failure。 如果容器不提供就绪态探针,则默认状态为 Success
livenessProbe 和 readinessProbe
创建一个没有探针的 Pod:
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: Never
preStop 和 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

 

 
posted @ 2022-10-25 01:26  百因必有果  阅读(256)  评论(0编辑  收藏  举报