从Kubernetes Cron作业调用端点
我有一个webapp在Kubernetes集群中的Docker容器中运行。该应用程序有一个端点,我希望定期调用该端点。应用程序在多个节点/吊舱上运行,只有一个节点执行端点启动的任务非常重要。我查看了Kubernetes Cron作业,但没有找到任何关于从Kubernetes Cron作业调用端点的文档。有人对解决这个问题有什么建议吗?在只有一个节点执行任务至关重要的集群中,如何处理调度问题?从Kubernetes Cron作业调用端点,cron,kubernetes,kubernetes-cronjob,Cron,Kubernetes,Kubernetes Cronjob,我有一个webapp在Kubernetes集群中的Docker容器中运行。该应用程序有一个端点,我希望定期调用该端点。应用程序在多个节点/吊舱上运行,只有一个节点执行端点启动的任务非常重要。我查看了Kubernetes Cron作业,但没有找到任何关于从Kubernetes Cron作业调用端点的文档。有人对解决这个问题有什么建议吗?在只有一个节点执行任务至关重要的集群中,如何处理调度问题?CronJobs是一个不错的选择。这里有一个快速布局,运行3个nginx吊舱,接受所有流量。每分钟,一个作
CronJob
s是一个不错的选择。这里有一个快速布局,运行3个nginx吊舱,接受所有流量。每分钟,一个作业将卷曲3个吊舱中的1个(始终是同一个吊舱)
您的意思是同时只有一个节点吗?只有一个节点?1节点需要是调用端点的节点,还是1节点是被调用的端点?重要的是只呼叫1个Pod,而不管它在哪个节点上,还是一个节点上的任何Pod?重要的是每天在特定时间只呼叫1个Pod,而不管它在哪个节点上。1号吊舱是呼叫的端点。请问您为什么需要第二个服务?第一次服务不是已经涵盖了第二次服务的功能吗?(如果这是一个愚蠢的问题,请原谅。我是kubernetes的新手)通过使用app:nginx
标签从两种服务中选择allpods
服务目标Pods
。singleton
服务
仅针对singleton
部署
。allpods
服务将是大多数用户的目标。singleton
服务
是的具体用例。重要的是,只有一个节点执行原始问题中的任务。您可以看到Cronjob
目标http://singleton
以便同一个Pod
处理该任务。@coreypobrien是否需要两个服务来实现这一点?例如:如果您有3个pod和一个针对其中3个pod的服务,那么据我所知,如果向该服务发送请求,该服务将只重定向到其中一个pod
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: main
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: singleton
labels:
app: nginx
special: singleton
spec:
replicas: 1
selector:
matchLabels:
app: nginx
special: singleton
template:
metadata:
labels:
app: nginx
special: singleton
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
name: allpods
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
---
kind: Service
apiVersion: v1
metadata:
name: singleton
spec:
selector:
special: singleton
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: callout
spec:
schedule: "*/1 * * * *"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 1
jobTemplate:
spec:
template:
spec:
containers:
- name: callout
image: buildpack-deps:curl
args:
- /bin/sh
- -ec
- curl http://singleton
restartPolicy: Never