Основы Kubernetes для DevOps — K8s. Часть 1

Что такое Kubernetes?

K8s – это opensource проект разработанный Google на языке Go, изначально разрабатывался для своих же приложений. Первая версия вышла в 2014 году. Kubernetes предназначен для контейнеризированных приложений (например Docker).

Прежде чем изучать Kubernetes я рекомендую ознакомиться с темой про Docker!

Основные «фишки» Kubernetes:

  • Автоматизация развертывания приложений
  • Автоматизация масштабирования приложений
  • Автоматизация управления приложениями

Из чего состоит K8s?

Основной компонент Kubernetes это Cluster.

Вы создаете Kubernetes Cluster состоящий из Nodes.

Nodes существуют двух типов:

  • Worker Node – сервер на котором запускаются и работают контейнеры.
  • Master Node – сервер который управляет Worker Nodes.

Когда вы запускаете команды управления, они всегда посылаются на Master Node. Напрямую с Worker Node вы не взаимодействуете.

Чуть подробнее про Nodes

На Kubernetes Master Node работают три главных процесса k8s:

  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler

На Kubernetes Worker Node работают два главных процесса k8s:

  • kubelet
  • kube-proxy

Kubernetes Cluster

Обычно в Kubernetes кластере запущена одна Master нода (две и более нод используют для высокодоступных вариантов кластера) и одна Worker нода. Это самый минимальный набор для кластера.

Что может k8s и почему он популярен

  • Service discovery and load balancing. Вы запустили один Docker контейнер в k8s кластере. K8s дает вам доступ к этому Docker контейнеру через ip адрес, через определенный порт на любой Worker через определенный порт на любой Worker ноде или через DNS имя, также если вы запустили несколько копий вашего Docker контейнера, то k8s сделает load balancing между этими контейнерами.
  • Storage orchestration. Вы можете присоединить любой локальный диск или диск из AWS, GCP или Azure к одному или нескольким Docker контейнерам.
  • Automated rollouts and rollbacks. Автоматическое обновление на новую версию Docker Image или возврат на предыдущую версию.
  • Automatic bin packing. Вы создаете k8s кластер, где Kubernetes может запускать Docker контейнеры. Вы указываете сколько процессоров и оперативной памяти нужно каждой копии этих контейнеров, а k8s уже сам решит на каких Worker Node их лучше запускать.
  • Self-healing. Вы указываете сколько копий Docker контейнеров вам нужно и если с контейнером что-то произошло (завис, просто не отвечает и т.д.), то k8s это исправляет.
  • Secret and configuration management. K8s позволяет вам хранить «секреты», например пароли или любую секретную информацию все ваших приложений в Docker контейнере.

На этом тезисное знакомство с кубером можно считать законченным. В следующих заметках мы будем поднимать локальный k8s кластер, создавать Docker Images и еще раз пройдемся по основным понятиям k8s.

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/it_transformation