Kronnetes中的Cronjob在部署中重新启动(删除)pod

时间:2017-08-18 17:58:09

标签: docker kubernetes

我正在使用Kubernetes来运行Docker服务。这是一项有缺陷的服务,需要每天重启。由于多种原因,我们无法以编程方式解决问题,只需每天重新启动docker即可。 当我迁移到Kubernetes时,我注意到我不能做“docker restart [mydocker]”,但由于docker是一个使用reCreate策略的部署,我只需要删除pod以让Kubernetes创建一个新的。

我可以使用Kubernetes中的CronTask自动执行删除Pod的任务,还是重新启动它的另一个任务?

感谢您提供任何指示/示例。

编辑:我当前的部署yml:

apiVersion: v1
kind: Service
metadata:
  name: et-rest
  labels:
    app: et-rest
spec:
  ports:
    - port: 9080
      targetPort: 9080
      nodePort: 30181
  selector:
    app: et-rest
    tier: frontend
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: et-rest
  labels:
    app: et-rest
spec:
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: et-rest
        tier: frontend
    spec:
      containers:
      - image: et-rest-image:1.0.21
        name: et-rest
        ports:
        - containerPort: 9080
          name: et-rest
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
      volumes:
      - name: tz-config
        hostPath:
          path: /usr/share/zoneinfo/Europe/Madrid

1 个答案:

答案 0 :(得分:5)

您可以使用预定的作业窗格:

计划的作业窗格构建了cron行为,可以重新启动作业,结合超时行为,导致您所需的行为或每X小时重新启动一次应用程序。

apiVersion: batch/v2alpha1
kind: ScheduledJob
metadata:
  name: app-with-timeout
spec:
  schedule: 0 * * * ?
  jobTemplate:
    spec:
      activeDeadlineSeconds: 3600*24
      template:
        spec:
          containers:
          - name: yourapp
            image: yourimage