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.