首页 文章

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

提问于
浏览
1

我正在使用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 回答

  • 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
    

相关问题