小编xEc*_*xEc的帖子

启用自动缩放时,GKE不会缩放到0或从0缩放

我想在我的GKE上运行CronJob,以便每天执行批处理操作.理想的情况是我的集群在作业未运行时扩展到0个节点,并且每次满足计划时动态扩展到1个节点并在其上运行作业.

我首先尝试通过使用kubernetes doc 中的一个简单的CronJob来实现这一点,它只打印当前时间并终止.

我首先使用以下命令创建了一个集群:

gcloud container clusters create $CLUSTER_NAME \
    --enable-autoscaling \
    --min-nodes 0 --max-nodes 1 --num-nodes 1 \
    --zone $CLUSTER_ZONE
Run Code Online (Sandbox Code Playgroud)

然后,我创建了一个CronJob,其中包含以下描述:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)

作业计划每小时运行一次,并在终止前打印当前时间.

首先,我想创建具有0个节点的集群,但设置--num-nodes 0结果是错误的.为什么会这样?请注意,我可以在创建集群后手动将集群缩小到0个节点.

其次,如果我的群集有0个节点,则不会调度作业,因为群集不会自动扩展到1个节点,而是会出现以下错误:

无法安排pod:没有可用于安排pod的节点.

第三,如果我的集群有1个节点,则作业正常运行但在此之后,集群不会缩小到0个节点,而是保留1个节点.我让我的集群运行两个连续的工作,并没有在两者之间缩小.我假设一小时应该足够长,以便群集这样做.

我错过了什么?

autoscaling google-cloud-platform kubernetes google-kubernetes-engine kubernetes-cronjob

8
推荐指数
1
解决办法
1994
查看次数

Google Cloud Kubernetes重新调整为0个节点时的成本

我有一个批处理作业,我想在Google Cloud的Kubernetes集群上运行。该工作必须定期运行,例如每周一次,并且需要一天才能完成。从文档:

从Kubernetes 1.7版本开始,您可以为节点池指定最小大小为零。如果不需要运行其中的实例,则可以使节点池完全缩小。但是,尽管节点池可以扩展为零大小,但是整个群集的大小却不能缩减为零节点(因为运行系统Pod始终需要至少一个节点)。

我的问题是,如果将群集缩小到0个节点,使用该群集是否还会产生成本?据我了解,集群规模不会为空,因此仍然会产生成本。

如果是这样,那么将我的成本降至最低的正确方法是什么?我应该在运行作业之前/之后定期创建/删除集群吗?

google-cloud-platform kubernetes

3
推荐指数
1
解决办法
1104
查看次数