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