Kubernetes(GKE)cronjob无法正常工作

时间:2017-11-06 10:37:21

标签: kubernetes google-cloud-platform gcloud google-kubernetes-engine

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: node-timer-analytics-parser-cronjob
spec:
  schedule: "0 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: node-timer-analytics-parser-cronjob
            image: round0.azurecr.io/node-timer-analytics-parser:latest
            args:
            - /bin/sh
            - -c
            - date; npm start
          restartPolicy: OnFailure
          imagePullSecrets:
            - name: regsecret

我有一个以下的YAML文件创建了一个cronjob,但 $ kubectl获取cronjob cmd给出了这个 $ kubectl get cronjob

NAME                                     KIND
node-timer-analytics-parser-controller   CronJob.v1beta1.batch

$ kubectl get job 找不到资源。

我也试过这个 $ kubectl describe cronjob node-timer-analytics-parser-controller ,它给出了

Name:       node-timer-analytics-parser-controller
Namespace:  default
Labels:     <none>
Events:     <none>

此docker镜像/容器对sql数据库执行一些广泛的SQL查询(并行查询40-50个查询) 我在本地测试了docker容器,它没有任何问题。一次完整的执行可能需要大约1-5分钟。我不明白为什么它不适用于 Kubernetes

我甚至尝试了example of the k8 documentation似乎已经完成工作,知道我的cronjob有什么问题。

1 个答案:

答案 0 :(得分:1)

据推测,你正在运行Kubernetes 1.8,根据release notes 1.7.8是在GKE中运行的默认版本。您可以使用kubectl version

检查您正在运行的版本

如果您正在运行&lt; 1.8然后你需要根据the CronJob documentation启用cron作业。我不使用GKE,但看起来你在集群创建时这样做:

gcloud alpha container clusters create my-cluster --enable-kubernetes-alpha

有关详细信息,请查看About Alpha Features

即使有1.8似乎也会在release notes上列为新功能

  

您现在可以在Container Engine群集上运行CronJobs。 CronJob是Kubernetes 1.8版的Beta版功能。

所以你可能需要进行升级。

我还注意到您使用的是天蓝色容器。可能值得从示例CronJob开始,看看你是否可以先让它工作。