Kubernetes

  • Декларативный

    Мы не описываем последовательность команд, которые необходимы для получения результата, мы описываем желаемое состояние

    Дружит с парадигмой IaC

  • Иммутабельный (?)

  • Self-healing

    Это ОК, если что-то отвалится. В проде так бывает постоянно! Если какой-то сервер станет недоступным, сервисы переместятся на другой сервер.

  • Распределённый!

    Нет главного “Командного центра”, который раздает указания. Есть состояние, которого все ноды стараются придерживаться.

Слои

2021-07-05_13-37.png

  • 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> – откатить изменения