Kubernetes
Декларативный
Мы не описываем последовательность команд, которые необходимы для получения результата, мы описываем желаемое состояние
Дружит с парадигмой IaC
Иммутабельный (?)
Self-healing
Это ОК, если что-то отвалится. В проде так бывает постоянно! Если какой-то сервер станет недоступным, сервисы переместятся на другой сервер.
Распределённый!
Нет главного “Командного центра”, который раздает указания. Есть состояние, которого все ноды стараются придерживаться.
Слои
- kubernetes control plane
- etcd – хранилище настроек (может быть распределенным)
- kube-scheduler – планировщик запуска kubernetes-pod)
- kube-controller-manager – следит за состоянием кластера: количеством реплик, доступностью хостов и тд
- cloud-controller-manager – следит за низжлежащей инфраструктурой, специфичной для вендора
- kubernetes nodes (worker nodes)
Лучше не совмещать master и worker ноды
Абстракции
Контроль сервисов
Основные команды
kubectl get <whatever-you-want>– получить список объектов (подов, реплика-сетов, деплойментов, …)kubectl config view– посмотреть текущую конфигурацию kubectl, с каким кластером он работает в данный моментkubectl create -f <path-to-file>– создать новую сущность, объявленную в yaml файле (см. абстракции)kubectl apply -f <path-to-file>– применить измененияkubectl rollout undo <object-type> <object-name>– откатить изменения