Обеспечение наличия хотя бы одного экземпляра службы в каждом пуле узлов кластера Kubernetes
В нашем случае использования мы используем Open Policy Agent в качестве контроллера доступа Kubernetes для изменения спецификаций (и добавления таких вещей, как Node Affinity) перед запуском модулей.
Это прекрасно работает, пока нет модулей, обслуживающих OPA, как в недавнем случае, когда нам пришлось воссоздавать пул узлов, на котором жили модули OPA, чтобы изменить размер узла.
Таким образом, я обдумываю смену OPA Deployment
в DaemonSet
, что гарантирует, что каждый узел в каждом пуле узлов запускает копию, и блоки не будут запускаться на новом узле, пока не будет запущена копия DaemonSet
, который гарантирует, что мы никогда не будем работать без, и это здорово!
Но... с более чем 100 узлами в некоторых наших кластерах, это кажется довольно расточительным упражнением.
Так что это заставило меня задуматься; будет ли более разумный способ выполнения этой рабочей нагрузки? Идеальной ситуацией было бы иметь по крайней мере один Pod (или, может быть, два для HA на кластерах с одним пулом узлов) этого типа на каждый пул узлов внутри кластера. Каков был бы жизнеспособный способ развернуть такую стратегию?