使用operator-sdk或一般部署的kubernetes中的控制器的协调时间是多少?您可以设置自定义时间进行侦察吗?

问题描述 投票:1回答:1

Kubernetes控制器/操作员是开发Kubernetes应用程序的模式之一。运行的核心Kubernetes进程之一是控制器协调循环。

我想知道调用或触发重新调用循环的默认时间间隔是多少?

如果控制器没有捕获事件,是否可以修改此间隔以触发重新循环?

kubernetes controller
1个回答
1
投票

这里的答案是:它真的取决于控制器。例如,如果你看到kube-controller-manager options,你会看到单个二进制文件包含所有这些控制器:

attachdetach, bootstrapsigner, cloud-node-lifecycle, clusterrole-aggregation, cronjob, csrapproving, csrcleaner, csrsigning, daemonset, deployment, disruption, endpoint, garbagecollector, horizontalpodautoscaling, job, namespace, nodeipam, nodelifecycle, persistentvolume-binder, persistentvolume-expander, podgc, pv-protection, pvc-protection, replicaset, replicationcontroller, resourcequota, root-ca-cert-publisher, route, service, serviceaccount, serviceaccount-token, statefulset, tokencleaner, ttl, ttl-after-finished

其中一些具有可配置的同步周期,而另一些则没有(内置于控制器中)。例如,对于部署:

--deployment-controller-sync-period duration     Default: 30s

您可能知道,同步过程的工作方式是控制器首先监听通知,然后如果在通知器上有更新,则控制器将更新放入工作队列,然后同步过程会频繁启动。在this example,一个样本控制器,该时间由这个call的第二个参数决定:

// time.Second means 1 second
go wait.Until(c.runWorker, time.Second, stopCh)

Until是一种描述here的api-machinery功能。

请记住,该示例具有2的线程,这意味着两个同步操作可以同时发生。

© www.soinside.com 2019 - 2024. All rights reserved.