Метаконтроллер: как остановить вызовы для синхронизации ловушек и генерации ресурсов - PullRequest
0 голосов
/ 03 июня 2019

Я использую Metacontroller для реализации оператора Kubernetes.

Моя проблема заключается в следующем:

  1. Metacontroller никогда не прекращает вызывать мою синхронизирующую ловушку для моего контроллера (в этом случае составные контроллеры ) и
  2. поле родительских ресурсов status.observedGeneration постоянно обновляется (насколько я понимаю, это означает, что ресурс был воссоздан).

Документация составного контроллера (в частности, ответная документация 1017 *) предполагает, что если нет никаких изменений в возвращенном родительском статусе или в дочерней коллекции, Metacontroller должен прекратить вызывать ловушку синхронизации.

Я дополнительно удалил spec.resyncPeriodSeconds и spec.parentResource.revisionHistory из составного манифеста контроллера (чтобы не вызывать никаких вызовов к ловушке синхронизации из-за событий таймера или изменений в поле status родителя).

К сожалению, ничего из этого не сработало. Как я могу сказать Metacontroller прекратить вызывать ловушку синхронизации и прекратить создание ресурса?

1 Ответ

1 голос
/ 03 июля 2019

Возможно, вам необходимо включить подресурс "status" для вашей CRD: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#status-subresource

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: myresource
spec:
...
  subresources:
    status: {}

Без этого Metacontroller будет обрабатывать обновления состояния как обычные обновления ресурсов, что, в свою очередь, создает новое .metadata.resourceVersion / .metadata.generation, поскольку Metacontroller всегда добавляет обновленное поле .status.observedGeneration.

Смотрите здесь: https://github.com/GoogleCloudPlatform/metacontroller/blob/985572b9052a306f7e4d4fb84f2ced6f74247dd5/dynamic/clientset/clientset.go#L200

Я создал проблему для этого: https://github.com/GoogleCloudPlatform/metacontroller/issues/176

Надеюсь, это сделает эту ситуацию более очевидной в будущем.

...