从Kubernetes Cron作业调用端点

从Kubernetes Cron作业调用端点,cron,kubernetes,kubernetes-cronjob,Cron,Kubernetes,Kubernetes Cronjob,我有一个webapp在Kubernetes集群中的Docker容器中运行。该应用程序有一个端点,我希望定期调用该端点。应用程序在多个节点/吊舱上运行,只有一个节点执行端点启动的任务非常重要。我查看了Kubernetes Cron作业,但没有找到任何关于从Kubernetes Cron作业调用端点的文档。有人对解决这个问题有什么建议吗?在只有一个节点执行任务至关重要的集群中,如何处理调度问题?CronJobs是一个不错的选择。这里有一个快速布局,运行3个nginx吊舱,接受所有流量。每分钟,一个作

我有一个webapp在Kubernetes集群中的Docker容器中运行。该应用程序有一个端点,我希望定期调用该端点。应用程序在多个节点/吊舱上运行,只有一个节点执行端点启动的任务非常重要。我查看了Kubernetes Cron作业,但没有找到任何关于从Kubernetes Cron作业调用端点的文档。有人对解决这个问题有什么建议吗?在只有一个节点执行任务至关重要的集群中,如何处理调度问题?

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