在kubernetes中pod的重启策略restartPolicy有三种,分别是Always,OnFailure,Never三种策略,三种策略代表不同的重启方式,有时候重启是也一种很好的解决问题的方式。下面就根据三种策略分别说明:
Always策略
Always策略是pod中默认的策略,就是在pod的yaml文件中不定义,默认restartPolicy也是Always策略,Always是总是重启,当容器中止退出后,总是重启,直到健康检查正常为止。在生产环境或者测试环境,不管是有状态的服务还是无状态的服务都可以使用Always作为重启策略。
OnFailure策略
OnFailure是非正常停止会自动重启,正常停止就不会重启,这种策略用在定时任务中比较多,定时任务执行完毕,pod终止,属于正常终止。关闭后不需要重启在执行,如果在执行过程中非正常终止,会重启,重新执行定时任务,这样就能保证定时任务的执行效率。
Never策略
Never策略是终止不会自动重启,终止就终止了,也可以作为在定时任务中执行,不过在定时任务中没有OnFailure好,所以根据自己需求选择。
在pod的重启策略中restartPolicy,restartPolicy是在spec.template.spec下看下面的例子:
spec: replicas: 1 selector: matchLabels: app: works release: qa template: metadata: creationTimestamp: null labels: app: works release: qa annotations: cattle.io/timestamp: '2022-04-11T11:04:59Z' spec: containers: - name: works image: 'harbor.wulaoer.org/reatil-harb/works-qa:16' env: - name: aliyun_logs_log-works value: stdout resources: limits: cpu: '1' memory: 1536Mi requests: cpu: '1' memory: 1536Mi livenessProbe: tcpSocket: port: 80 initialDelaySeconds: 10 timeoutSeconds: 2 periodSeconds: 2 successThreshold: 1 failureThreshold: 3 readinessProbe: tcpSocket: port: 80 initialDelaySeconds: 30 timeoutSeconds: 30 periodSeconds: 10 successThreshold: 1 failureThreshold: 10 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: Always securityContext: capabilities: {} restartPolicy: Always #重启策略 terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst nodeSelector: node: application
目前我们的环境中,所有服务都是使用的Always重启策略,定时任务使用的是OnFailure。对于三种策略还是根据自己的环境,这里只能引导,具体情况还需要看自己的环境。没有了,看些其他的吧。。。。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏