Введение
Kubernetes — это платформа для оркестрации контейнеров, которая автоматизирует развертывание, масштабирование и управление контейнеризированными приложениями. В рамках этого испытания вы изучите архитектуру Kubernetes, познакомитесь с компонентами, из которых состоит кластер, и принципами их взаимодействия.
Компоненты управляющего слоя Kubernetes
Управляющий слой (control plane) отвечает за общее состояние кластера, а также за развертывание и масштабирование приложений. В состав управляющего слоя входят следующие компоненты:
- kube-apiserver: Фронтенд для управляющего слоя Kubernetes, обрабатывающий все запросы на управление кластером.
- etcd: Распределенное хранилище данных типа «ключ-значение», в котором хранятся все конфигурационные данные кластера.
- kube-scheduler: Отвечает за назначение подов на конкретные узлы кластера.
- kube-controller-manager: Запускает контроллеры, которые следят за состоянием различных объектов Kubernetes.
Задачи
Ваша задача — получить и вывести информацию о состоянии компонентов управляющего слоя, включая kube-apiserver, etcd, kube-scheduler и kube-controller-manager.
Требования
- Используйте команду
kubectlдля получения статуса компонентов управляющего слоя. - Выполните команду в директории
/home/labex/project. - Вывод должен содержать статус каждого компонента управляющего слоя.
Пример
Ниже приведен пример ожидаемого вывода при проверке статуса компонентов:
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
etcd-0 Healthy {"health":"true","reason":""}
scheduler Healthy ok
Компоненты узла Kubernetes
Компоненты узла (node components) работают на каждом узле, обеспечивая запуск контейнеров и среду выполнения для приложений. К ним относятся:
- kubelet: Агент Kubernetes, работающий на каждом узле; он следит за состоянием узла и управляет запуском контейнеров.
- kube-proxy: Сетевой прокси-сервер Kubernetes, который отвечает за маршрутизацию трафика к соответствующим контейнерам.
Задачи
Выведите информацию об узлах, работающих в кластере Kubernetes, включая имя узла, его статус и другие важные детали.
Требования
- Используйте команду
kubectlдля вывода списка узлов в кластере. - Выполните команду в директории
/home/labex/project. - Вывод должен содержать подробную информацию о каждом узле кластера.
Пример
Пример ожидаемого вывода при просмотре списка узлов:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 2m52s v1.26.1
Поды в Kubernetes
Под (pod) — это наименьшая единица развертывания в Kubernetes, представляющая собой один экземпляр запущенного процесса в кластере. Каждый под состоит из одного или нескольких контейнеров, которые используют общее сетевое пространство и тома хранения данных.
Задачи
- Создайте файл с именем
simple-pod.yamlс конфигурацией пода для контейнера Nginx. - Разверните под с помощью соответствующей команды
kubectl. - Выведите информацию о подах, запущенных в кластере.
Требования
- Создайте файл
simple-pod.yamlв директории/home/labex/projectс конфигурацией пода под названиемsimple-pod, использующего образ Nginx. - Используйте команду
kubectlдля создания пода из YAML-файла. - Используйте другую команду
kubectl, чтобы просмотреть список запущенных подов.
Пример
Пример ожидаемого вывода при создании и просмотре подов:
pod/simple-pod created
NAME READY STATUS RESTARTS AGE
simple-pod 1/1 Running 0 29s
Сервисы в Kubernetes
Сервис (service) в Kubernetes — это абстракция, которая определяет логический набор подов и политику доступа к ним. Компоненты сервиса включают:
- Service IP: Виртуальный IP-адрес, назначенный сервису.
- Service Port: Номер порта, назначенный сервису.
- Endpoint: Список IP-адресов и портов, которые указывают на конкретные поды, стоящие за сервисом.
Задачи
- Создайте файл
nginx-service.yamlс конфигурацией сервиса для пода Nginx. - Разверните сервис с помощью соответствующей команды
kubectl. - Выведите информацию о сервисах, запущенных в кластере.
Требования
- Создайте файл
nginx-service.yamlв директории/home/labex/projectс конфигурацией сервисаnginx-service, который открывает порт 80. - Используйте команду
kubectlдля создания сервиса из YAML-файла. - Используйте команду
kubectl, чтобы вывести список всех сервисов в кластере.
Пример
Пример ожидаемого вывода при просмотре сервисов:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5m42s
nginx-service ClusterIP 10.96.184.71 <none> 80/TCP 4s
Резюме
В ходе этого испытания мы изучили архитектуру Kubernetes, включая управляющий слой, узлы, поды и сервисы. Мы научились проверять состояние различных компонентов системы, создавать простые поды и сервисы, а также обеспечивать доступ к подам. Понимание того, из каких частей состоит кластер Kubernetes и как они взаимодействуют друг с другом, является фундаментом для успешного развертывания и управления современными приложениями.


