
- •Лабораторная работа №1 Создание и настройка виртуальной машины
- •Дополнительное задание
- •Контрольные вопросы
- •Лабораторная работа №2 Базовые команды Docker
- •Установка Docker в Ubuntu 22.04:
- •Запустим hello-world:
- •Метки и удаление образа - docker tag
- •Дополнительное задание
- •Контроольные вопросы
- •Лабораторная работа №3 Контейнер Adminer
- •Подключимся в браузере на хосте к http://127.0.0.1:8080/:
- •Сети - docker network
- •Теперь создадим новую сеть:
- •Теперь пересоздадим контейнеры субд и Adminer в этой сети:
- •Теперь грохнем все контейнеры:
- •Контрольные вопросы
- •Лабораторная работа №4 Знакомство с Kubernetes
- •Создание кластера Kubernetes с PostgreSql и Adminer
- •Контрольные вопросы
- •Лабораторная работа №5 Создание и настройка кластера Kubernetes с распределенной системой из трех взаимосвязанных компонентов
Теперь грохнем все контейнеры:
docker stop $(docker ps -a -q)
Контрольные вопросы
Как запустить что-то внутри работающего контейнера?
Как узнать, какие файлы изменяет программа внутри контейнера?
Когда происходит завершение контейнера? Как сделать?
Перезапустите сборку собранного образа, оцените время пересборки, объясните причины.
К какому число слоев стремиться в образе, правила оптимизации?
Что такое Dockerfile?
Опишите базовые команды Dockerfile, что они делают, где смотреть документацию?
Что такое контекст сборки, как его оптимизировать?
Лабораторная работа №4 Знакомство с Kubernetes
Цель работы:
Освоить базовые принципы работы с Kubernetes, научиться устанавливать и настраивать локальный кластер с использованием инструмента kind, а также развертывать приложения в кластере.
Задание:
Установить утилиты kubectl и kind для работы с Kubernetes.
Создать локальный кластер Kubernetes с использованием kind.
Развернуть в кластере приложения PostgreSQL и Adminer, используя YAML-файлы для описания Deployment и Service.
Проверить работоспособность кластера и взаимодействие между компонентами.
Изучить команды для управления кластером, включая удаление и пересоздание подов и сервисов.
После установки оформить отчет, приложить скриншоты выполнения и ответить на контрольные вопросы.
Для работы нам понадобятся утилита kubectl и локальный кластер kubernetes. Мы рассматриваем установку кластера в ваших виртуалках, поэтому используем утилиту kind.
Установка 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
Установка 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
Создание кластера с помощью kind
Создание кластера:
kind create cluster --name my-cluster
Эта команда создаст кластер с именем my-cluster. Если имя не указано, будет использовано имя по умолчанию kind.
Проверка кластера:
После создания кластера вы можете проверить его состояние с помощью команды:
kubectl cluster-info
Вы также можете проверить ноды в кластере:
kubectl get nodes
Управление кластером
Удаление кластера:
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.