У меня есть приложение, работающее в пакете Kubernetes, который реплицируется с использованием контроллера репликации. Однако мне нужны некоторые критические задачи, которые должны выполняться одним приложением (по одной репликации) за раз. Раньше я использовал zookeeper, чтобы получить блокировку кластера для выполнения этой задачи. Есть ли способ в Kubernetes получить блокировку кластера для конкретного контроллера репликации?Kubernetes получает блокировки кластера по репликации
ответ
Kubernetes не имеет объекта блокировки кластера, но вы можете использовать annotation на контроллере репликации, чтобы указать держатель замка и TTL.
Например, каждый блок может читать ключ аннотации "lock"
, а если пустой (или если TTL истек), попробуйте написать "lock": "pod-xyz: 2015-12-22T18:39:12+00:00"
. Если попытки выполнить несколько попыток, кубернеты будут принимать один и отклонить остальные с 409, потому что версия ресурса будет неправильной. Затем держатель замка продолжит обновление аннотации, чтобы обновить TTL.
Если у вас есть служба, соответствующая этому контроллеру репликации, может возникнуть смысл помещать аннотацию блокировки в службу вместо RC. Тогда семантика блокировки сохранится при обновлении программного обеспечения (например, roll-update). Аннотация может идти на любой объект, поэтому есть определенная гибкость, чтобы выяснить, что лучше всего подходит для вас.
podmaster.go был хорошим примером логики, которую вы могли бы использовать для реализации этого. Он работает непосредственно против etcd, что вы также можете сделать, если не возражаете представить другой компонент.
- 1. Kubernetes Удаление контроллера репликации
- 2. kubernetes контроллер репликации
- 3. Kubernetes: несколько служб/контроллеров репликации
- 4. mysql-do блокировки распространяются по репликации?
- 5. Внутренняя балансировка нагрузки кластера Kubernetes
- 6. kubernetes + coreos кластера - замена сертификатов
- 7. kubernetes услуги связи внутри кластера
- 8. Создание кластера Kubernetes с Vagrant
- 9. Настройка кластера Rabbitmq в Kubernetes
- 10. Настройка Kubernetes для Azure кластера
- 11. Как получить коэффициент репликации кластера C *?
- 12. Тип репликации сеанса кластера Weblogic не работает
- 13. Kubernetes репликации контроллера Интеграция Test Failure
- 14. Конфигурация высокой доступности или конфигурации репликации Kubernetes
- 15. Контроллер репликации Kubernetes в состоянии CrashLoopBackOff
- 16. Как увеличить масштаб кластера в Google Container Engine/Kubernetes?
- 17. Балансировщик внешней нагрузки для кластера Kubernetes
- 18. Каков рекомендуемый способ обновления кластера kubernetes при выпуске новых версий?
- 19. Как установить плагин для кластера kubernetes elasticsearch
- 20. Kubernetes: Узел против Хостов против терминологии кластера
- 21. Выбор размера узла для кластера Kubernetes GKE
- 22. Azure Kubernetes образец - Ожидание инициализации кластера
- 23. kubernetes api с использованием недостижимого кластера IP
- 24. Обнаружение кластера ActiveMQ на Openshift v3/Kubernetes
- 25. не удается подключиться к узлам кластера Kubernetes
- 26. Использовать jessie (Debian) для кластера Kubernetes
- 27. Как можно развернуть контроллер ингресс для моего Kubernetes кластера
- 28. Соединяет ли база данных подписчиков блокировки репликации?
- 29. Коэффициент репликации Cassandra по кластеру
- 30. Репликация кластера памяти кластера Memcache
Каким образом приложение в блоке записи/чтения аннотации к службе? Это через REST API? – Dimuthu
Да. Библиотеки клиентов должны иметь то, что вам нужно, если вы не хотите обрабатывать необработанные запросы. Это возможно и с помощью кувекта. Я не уверен. –
Разве это не хорошая идея использовать встроенную поддержку блокировки кластера etcd и выставлять ее поверх API kubernetes? https://coreos.com/etcd/docs/0.4.7/etcd-api/#lock – Dimuthu