April 26, 2021

Погружение в Kubernetes по щиколотку

Пост написан по мотивам пройденного курса для новичков по Kubernetes и является концентрированной выжимкой полученных знаний

01. Подготовка локальной среды

Есть несколько вариантов использовать Kubernetes локально, я пробовал Minikube и Docker Desktop. Официальная документация также предлагает использовать Kind. Принципиальных отличий при обучении быть не должно. Мне понравился Minikube за его универсальность и простую настройку.

Установка kubectl

kubectl - это утилита командной строки для управления кластером kubernetes. Это основной инструмент управления кластером из консоли. Очень рекомендую настроить автодополнение командной строки, которое сэкономит кучу времени и уменьшит количество ошибок при вводе команд.

Установить minikube

Для работы minikube необходим бэкэнд, на котором запустится кластер. Это может быть гипервизор (VirtualBox, KVM), либо просто Docker. Для обучения разницы особой не будет, может быть только всплывут нюансы на этапе доступа извне к опубликованным контейнерам из-за особенностей работы сетей.

После установки бэкэнда, можно перейти к установке minikube. По завершению процесса, запускаем кластер и проверяем его статус с помощью kubectl

# Запускаем кластер
minikube start
...
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default


# Смотрим, что minikube переключил контекст и его кластер является текущим
kubectl config get-contexts

CURRENT   NAME             CLUSTER          AUTHINFO         NAMESPACE
*         minikube         minikube         minikube         default


# Выполняем запрос к кластеру
kubectl cluster-info
Kubernetes master is running at https://127.0.0.1:57748
KubeDNS is running at https://127.0.0.1:57748/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy


Вспомогательные утилиты

Для облегчения работы с kubernetes можно установить следующие утилиты

  • kubectx - очень удобная утилита для быстрой смены контекстов kubernetes
  • kubens - вторая незаменимая утилита для быстрого переключения между неймспейсами
  • kubelive - утилита, представляющая собой интерактивный дашборд, упрощающий контроль за состоянием запущенных подов.
  • jq - ???

02. Основные сущности

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

context

Контекст - это описание того, к какому кластеру kubernetes под каким пользователем и каким образом мы подключаемся. Контексты описываются в ~/.kube/config и их описание выглядит примерно так:

apiVersion: v1
kind: Config
current-context: my-context
# Здесь описываются подключения к кластерам
clusters:
- cluster:
    server: http://<server-url>/
  name: my-cluster
# Здесь описываются учётные записи и способы их аутентификации
users:
- name: my-cluster-user
    ...
# Здесь задаётся соответствие кластера и учётной записи
contexts:
- context:
    cluster: my-cluster
    user:    my-cluster-user
  name: my-context
  • namespace
  • pod
  • service

03. Компоненты Kubernetes

  • cluster - это набор из вычислительных мощностей, сетевого стека и подсистемы хранения.
  • node - элемент кластера

04. Практика