kubernetes中pod的重启策略restartPolicy

avatar 2022年7月28日18:21:17 评论 1,487 次浏览

在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。对于三种策略还是根据自己的环境,这里只能引导,具体情况还需要看自己的环境。没有了,看些其他的吧。。。。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: