Cluster-manager
In this article:
Cluster-manager#
Особенности cluster-manager#
cluster-manager — это специфичное для Kubernetes инсталляций К2 Облака приложение, которое отвечает за изменение количества рабочих узлов в кластере. Это приложение работает с Instance Metadata API и Kubernetes API для обеспечения необходимой интеграции этих компонентов. Cluster-manager отвечает за:
мониторинг состояния кластера (Готов / Не готов);
безопасное удаление рабочих узлов.
информирование о сроке действия сертификатов API в кластере.
Мониторинг состояния кластера#
Cluster-manager постоянно запрашивает информацию о количестве рабочих узлов, зарегистрированных в кластере Kubernetes. Если это значение не соответствует фактическому количеству экземпляров в кластере, то состояние кластера становится Не готов. Такое поведение характерно для кластера во время добавления и удаления рабочих узлов, так как изначально происходит запуск экземпляра, и только спустя некоторое время этот экземпляр регистрируется в качестве рабочего узла кластера. Если количество зарегистрированных рабочих узлов в кластере соответствует количеству запущенных экземпляров, состояние кластера становится Готов.
Cluster-manager регулярно запрашивает информацию о сроке действия сертификатов API для мастер-узлов в кластере. Если срок действия сертификата составляет менее двух недель, пользователю направляются оповещения о скором его окончании. Для корректного отображения срока действия сертификатов их необходимо регулярно обновлять. Обновление происходит автоматически, если соответствующая опция не была отключена.
Для обновления сертификатов вручную можно использовать утилиту kubeadm.
Все сертификаты, в том числе сертификаты etcd, следует обновлять одновременно, например при помощи команды kubeadm certs renew all
.
Если сертификаты обновляются выборочно, сертификаты могут отслеживаться некорректно.
Безопасное удаление узла#
При получении уведомления об удалении рабочего узла cluster-manager, используя Kubernetes API, удаляет рабочий узел из кластера. После успешного удаления рабочего узла из кластера, запускается процесс удаления экземпляра.
Режим обслуживания#
Для обслуживания мастер-узла, например, обновления ядра операционной системы, требуется перевести его в состояние SchedulingDisabled. Cluster-manager синхронизирует состояние SchedulingDisabled между кластером и облаком.
Восстановление недоступных мастер-узлов#
Cluster-manager периодически проверяет доступность мастер-узлов и, в случае их недоступности, запускает восстановление. Под восстановлением подразумевается удаление недоступного экземпляра и создание нового, с сохранением сетевого интерфейса. Мастер-узлы в состоянии SchedulingDisabled не восстанавливаются.
Последствия удаления cluster-manager#
Пользователям не рекомендуется изменять настройки этого приложения и конфигурацию его деплоя в кластер. Пользователь теряет возможность уменьшать количество рабочих узлов в кластере с помощью веб-интерфейса К2 Облака:
при удалении cluster-manager из кластера;
при перемещении запущенного процесса с мастер-узла на один из рабочих узлов.
Также перестанет работать мониторинг состояния кластера.
Установка в кластер#
Cluster-manager автоматически устанавливается в каждый кластер, который создаётся в сервисе Кластеры Kubernetes К2 Облака. Процесс cluster-manager запускается на мастер-узле кластера.
Используемые настройки
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: cluster-manager
rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- list
- get
- delete
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: cluster-manager
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-manager
subjects:
- kind: ServiceAccount
name: cluster-manager
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: cluster-manager
namespace: kube-system
---
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
k8s-app: cluster-manager
name: cluster-manager
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: cluster-manager
template:
metadata:
labels:
k8s-app: cluster-manager
spec:
nodeSelector:
node-role.kubernetes.io/master: ""
containers:
- name: cluster-manager
image: registry.k2.cloud/kaas/kubernetes-manager:v0.7.0
imagePullPolicy: Always
env:
- name: PYTHONUNBUFFERED
value: "1"
serviceAccountName: cluster-manager
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
Обновление cluster-manager#
Пользователям направляются оповещения о необходимости обновления cluster-manager при появления его новой версии. Оповещения отображаются на странице ресурса Кластеры Kubernetes на вкладке Предупреждения. Текст оповещения содержит необходимую для обновления команду kubectl и ссылку на манифест в формате yaml.