Добавил:
мой вк: vk.com/truecrimebitch больше работ здесь: https://github.com/alisadex Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_по_контейнерам_все_5_лаб.docx
Скачиваний:
0
Добавлен:
11.05.2025
Размер:
1.13 Mб
Скачать
  1. Теперь грохнем все контейнеры:

docker stop $(docker ps -a -q)

Контрольные вопросы

  1. Как запустить что-то внутри работающего контейнера?

  2. Как узнать, какие файлы изменяет программа внутри контейнера?

  3. Когда происходит завершение контейнера? Как сделать?

  4. Перезапустите сборку собранного образа, оцените время пересборки, объясните причины.

  5. К какому число слоев стремиться в образе, правила оптимизации?

  6. Что такое Dockerfile?

  7. Опишите базовые команды Dockerfile, что они делают, где смотреть документацию?

  8. Что такое контекст сборки, как его оптимизировать?

Лабораторная работа №4 Знакомство с Kubernetes

Цель работы:

Освоить базовые принципы работы с Kubernetes, научиться устанавливать и настраивать локальный кластер с использованием инструмента kind, а также развертывать приложения в кластере.

Задание:

  1. Установить утилиты kubectl и kind для работы с Kubernetes.

  2. Создать локальный кластер Kubernetes с использованием kind.

  3. Развернуть в кластере приложения PostgreSQL и Adminer, используя YAML-файлы для описания Deployment и Service.

  4. Проверить работоспособность кластера и взаимодействие между компонентами.

  5. Изучить команды для управления кластером, включая удаление и пересоздание подов и сервисов.

После установки оформить отчет, приложить скриншоты выполнения и ответить на контрольные вопросы.

Для работы нам понадобятся утилита kubectl и локальный кластер kubernetes. Мы рассматриваем установку кластера в ваших виртуалках, поэтому используем утилиту kind.

  1. Установка kubectl

Ставим утилиту по инструкции для linux внутри виртуальной машины, если у вас другой вариант установки, то смотрите альтернативные методы:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

chmod +x kubectl

sudo mv ./kubectl /usr/local/bin/kubectl

kubectl version

  1. Установка kind

Аналогично устанавливаем Kind:

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64

chmod +x ./kind

sudo mv ./kind /usr/local/bin/kind

kind version

  1. Создание кластера с помощью kind

Создание кластера:

kind create cluster --name my-cluster

Эта команда создаст кластер с именем my-cluster. Если имя не указано, будет использовано имя по умолчанию kind.

Проверка кластера:

После создания кластера вы можете проверить его состояние с помощью команды:

kubectl cluster-info

Вы также можете проверить ноды в кластере:

kubectl get nodes

  1. Управление кластером

Удаление кластера:

kind delete cluster --name my-cluster

Создание кластера с конфигурацией:

Вы можете создать кластер с использованием конфигурационного файла YAML. Например, создайте файл kind-config.yaml:

kind: Cluster

apiVersion: kind.x-k8s.io/v1alpha4

nodes:

- role: control-plane

- role: worker

- role: worker

Затем создайте кластер с использованием этого файла:

kind create cluster --name my-cluster --config kind-config.yaml

Просмотр списка кластеров:

kind get clusters

Экспорт kubeconfig:

Если вам нужно экспортировать конфигурацию кластера для использования в других инструментах:

kind export kubeconfig --name my-cluster

Удаление кластера:

kind delete cluster --name my-cluster

Чтобы остановить Pod, вы можете удалить его:

kubectl delete pod <pod-name>

Kubernetes автоматически пересоздаст Pod, если он управляется Deployment, StatefulSet или другим контроллером.

Чтобы перезапустить Pod, удалите его, и Kubernetes создаст новый:

kubectl delete pod <pod-name>

Если Pod управляется Deployment, вы можете выполнить "rolling restart":

kubectl rollout restart deployment <deployment-name>

Чтобы изменить количество реплик Pod в Deployment:

kubectl scale deployment <deployment-name> --replicas=<число-реплик>

Например, чтобы остановить все Pods в Deployment, установите --replicas=0:

kubectl scale deployment <deployment-name> --replicas=0

Чтобы снова запустить Pods, установите нужное количество реплик:

kubectl scale deployment <deployment-name> --replicas=3

Чтобы остановить Service, удалите его:

kubectl delete service <service-name>

Это не остановит Pods, но сделает сервис недоступным.

Для перезапуска удалите и снова создайте Service:

kubectl delete service <service-name>

kubectl apply -f <service-config-file.yaml>

Если вы используете kind, вы можете остановить кластер, удалив его:

kind delete cluster --name <cluster-name>

Если имя кластера не указано, по умолчанию используется kind.

Чтобы перезапустить кластер, удалите его и создайте заново:

kind delete cluster --name <cluster-name>

kind create cluster --name <cluster-name>

Kubernetes не поддерживает "приостановку" кластера. Однако вы можете остановить все Pods, установив количество реплик в 0 для всех Deployments:

kubectl scale deployment --all --replicas=0

Если вы изменили YAML-файлы, примените изменения:

kubectl apply -f <config-file.yaml>

Чтобы откатить изменения в Deployment:

kubectl rollout undo deployment <deployment-name>

Проверка состояния Pods:

kubectl get pods

Проверка логов Pod:

kubectl logs <pod-name>

Проверка состояния кластера:

kubectl get nodes

kubectl cluster-info

  • Для управления Pods используйте kubectl delete, kubectl scale и kubectl rollout.

  • Для управления кластером используйте kind delete cluster и kind create cluster.

  • Для остановки и перезапуска Docker-контейнеров используйте команды docker stop и docker start.

  • Все изменения в конфигурациях применяйте через kubectl apply -f.