Инструкции были основаны на видео «Установка кластера Kubernetes с помощью Kubespray» на Youtube. Код был форкнут из репозитория https://git.cloud-team.ru/lections/kubernetes_setup и добавлен с патчами в репозиторий https://github.com/patsevanton/kubespray_terraform_yandex_cloud Самое интересное в этом посте для Devops-специалистов с опытом — это сценарий для создания файла инвентаризации ansible из структур terraform. Яндекс.
Облако — облачная платформа, где каждый может создавать и совершенствовать свои цифровые сервисы, используя инфраструктуру и уникальные технологии Яндекса.
Кубеспрей — это набор ролей Ansible для установки и настройки системы оркестрации контейнеров Kubernetes. Кубернетес (K8s) — это программное обеспечение с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями.
Регистрация в Яндекс Облаке
https://cloud.yandex.ru/docs/billing/quickstart/Установка Яндекс.
Облака (CLI) Интерфейс командной строки Yandex.Cloud (CLI) — это загружаемое программное обеспечение для управления облачными ресурсами через командную строку.
$ curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash
Создание профиля в Яндекс Облаке
https://cloud.yandex.ru/docs/cli/quickstartУстановка биненв
Биненв — это утилита для загрузки, установки и управления двоичными программами, которые вам нужны в повседневной жизни DevOps (например, kubectl, helm, .).
Установка Терраформа
Терраформировать — это инструмент создания декларативного кода, который позволяет разработчикам использовать язык высокого уровня под названием HCL (язык конфигурации HashiCorp) для описания желаемой облачной или локальной инфраструктуры «конечного состояния» для запуска приложения.Затем он генерирует план достижения этого конечного состояния и выполняет план по обеспечению инфраструктуры.
https://cloud.yandex.ru/docs/solutions/infrastructure-management/terraform-quickstart https://gcorelabs.com/ru/blog/why-you-need-terraform/ $ binenv install terraform
Установка Кубектла
Кубектл — это инструмент командной строки для управления кластерами Kubernetes. $ binenv install kubectl
Установка руля
Шлем — это менеджер пакетов для Kubernetes, который позволяет разработчикам и операторам легко упаковывать, настраивать и развертывать приложения и сервисы в кластерах Kubernetes. $ binenv install helm
установка jq
Дж.К.
— утилита для анализа, фильтрации, сравнения и преобразования данных JSON.
$ sudo apt install jq
Установка pip3 и git
$ sudo apt install python3-pip git
Загрузите Kubespray версии 2.14.2 и установите зависимости для Kubespray.
Выбираем версию 2.14.2, так как на момент создания исходного репозитория была версия 2.14.2. $ wget https://github.com/kubernetes-sigs/kubespray/archive/refs/tags/v2.14.2.tar.gz
$ tar -xvzf v2.14.2.tar.gz
$ mv kubespray-2.14.2 kubespray
$ sudo pip3 install -r kubespray/requirements.txt
Настроим переменные Terraform для доступа к Яндекс Облаку
$ cp terraform/private.auto.tfvars.example terraform/private.auto.tfvars
$ yc config list
$ vim terraform/private.auto.tfvars
Давайте поместим ключи ssh в каталог .
ssh.
Создание ресурсов в Яндекс Облаке и установка кластера Kubernetes с помощью Kubespray
$ bash cluster_install.sh
Диаграмма кластера Kubernetes
2 входящих и 2 рабочих сделаны для отказоустойчивости и постоянного обновления сервера.
Посмотрим на k8s-cluster.tf в веб-интерфейсе облака Яндекса.
resource "yandex_vpc_network" "k8s-network" {
name = "k8s-network"
}
yandex_vpc_network — описание облачной сети.
Облачная сеть — это аналог традиционной локальной сети в дата-центре.
Облачные сети создаются в каталогах и используются для передачи информации между облачными ресурсами и подключения ресурсов к Интернету.
Ресурс yandex_vpc_network находится в разделе Virtual Private Cloud
yandex_vpc_subnet — описание подсети, к которой будет подключена виртуальная машина.
Подсеть — это диапазон IP-адресов в облачной сети.
Адреса из этого диапазона можно назначать облачным ресурсам — виртуальным машинам и кластерам баз данных.
Подсети можно создавать только в том каталоге, которому принадлежит облачная сеть.
Размер подсети задается с помощью бесклассового метода адресации (CIDR).
Подсети могут использовать только частные адреса IPv4 из диапазонов, определенных в RFC 1918. resource "yandex_vpc_subnet" "k8s-subnet-1" {
name = "k8s-subnet-1"
zone = "ru-central1-a"
network_id = yandex_vpc_network.k8s-network.id
v4_cidr_blocks = ["192.168.10.0/24"]
depends_on = [
yandex_vpc_network.k8s-network,
]
}
Этот блок создает ресурс yandex_vpc_subnet С именем k8s-подсеть-1 в пределах досягаемости ru-central1-a , у которого есть сеть v4_cidr_blocks воля 192.168.10.0/24 .
Ресурс "yandex_vpc_subnet" "k8s-subnet-1" находится в разделе Virtual Private Cloud в разделе k8s-network.
yandex_iam_service_account — описание сервисного аккаунта.
Все операции в группах экземпляров выполняются от имени сервисного аккаунта.
Ресурс «yandex_iam_service_account» находится в каталоге, где вы создаете инфраструктуру, в разделе «Учетные записи служб».
Группы экземпляров — это компонент службы Compute Cloud, который позволяет создавать группы виртуальных машин и управлять ими.
Группы экземпляров автоматически идентифицируют и исправляют неработоспособные виртуальные машины в группе, чтобы обеспечить их оптимальную работу.
Ресурс «yandex_compute_instance_group» находится в разделе Compute Cloud в разделе «Группы виртуальных машин».
Ресурс yandex_storage_bucket находится в разделе Object Storage.
Имена бакетов уникальны во всем объектном хранилище, т. е.
вы не можете создать два бакета с одинаковыми именами даже в разных каталогах в разных облаках.
Имейте это в виду, если планируете автоматически создавать сегменты через API.
Копирование конфигурации kubernetes
$ mkdir -p ~/.
kube && cp kubespray/inventory/mycluster/artifacts/admin.conf ~/.
kube/config
Развертывание тестового приложения
$ kubectl apply -f manifests/test-app.yml
Добавление информации об имени и IP-адресах наших серверов в файл хостов
$ sudo sh -c "cat kubespray_inventory/etc-hosts >> /etc/hosts"
Проверка внешнего доступа тестового приложения
$ curl hello.local
Hello from my-deployment-784598767c-7gjjs
Мониторинг кластера Kubernetes
Установка панели управления Kubernetes
Kubernetes Dashboard — универсальный веб-интерфейс для кластеров Kubernetes. Он позволяет пользователям управлять приложениями, работающими в кластере, и устранять неполадки, а также управлять самим кластером.
$ helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
$ helm install --namespace monitoring --create-namespace -f manifests/dashboard-values.yml \
kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard
$ kubectl apply -f manifests/dashboard-admin.yml
$ kubectl -n monitoring describe secret \
$(kubectl -n monitoring get secret | grep admin-user | awk '{print $1}')
$ kubectl port-forward -n monitoring $(kubectl get pods -n monitoring \
-l " app.kubernetes.io/name=kubernetes-dashboard " -o jsonpath="{.
items[0].
metadata.name}") 9090
Идти к http://localhost:9090 и используйте токен для аутентификации
Установка Прометея и Графаны
Prometheus — система мониторинга с открытым исходным кодом, многомерной моделью данных, гибким языком запросов, эффективной базой данных временных рядов и современным подходом к оповещению.Grafana — это платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.
$ helm install --namespace monitoring --create-namespace -f manifests/prometheus-values.yml \
prometheus stable/prometheus
$ helm install --namespace monitoring --create-namespace -f manifests/grafana-values.yml \
grafana stable/grafana
Доступ к пользовательскому интерфейсу Прометея
Идти к http://prometheus.localДоступ к пользовательскому интерфейсу Grafana
$ kubectl get secret -n monitoring grafana -o jsonpath="{.
data.admin-password}" | base64 --decode ; echo
Идти к http://grafana.local (пользователь: admin, пароль: результат первой команды).
Добавьте новый источник данных с типом «Прометей» и URL-адресом « http://prometheus-server ".
Импортируйте новую панель мониторинга в Grafana (панель управления grafana.com: https://grafana.com/dashboards/1621 , Прометей: создал один).
Ведение журнала
Развертывание бревенчатого дома
Loghouse — система с открытым исходным кодом для работы с логами в Kubernetes. $ helm repo add loghouse https://flant.github.io/loghouse/charts/
$ helm install --namespace loghouse --create-namespace -f manifests/loghouse-values.yml \
loghouse loghouse/loghouse
Идти к http://loghouse.local (логин: admin, пароль: ПАРОЛЬ).
Попробуйте выполнить поиск в журналах тестового приложения по запросу: ~app = "my-app"
Резервное копирование/восстановление кластера Kubernetes
Установка Велеро
Velero — удобный инструмент резервного копирования для Kubernetes, который сжимает и создает резервные копии объектов Kubernetes в хранилище объектов.
https://velero.io/docs/v1.4/basic-install/
Установка и настройка плагина AWS для Velero
$ velero install \
--provider aws \
--plugins velero/ velero-plugin-for-aws:v1.1.0 \
--bucket backup-backet-apatsev \
--backup-location-config region=ru-central1-a,s3ForcePathStyle="true",s3Url= https://storage.yandexcloud.net \
--snapshot-location-config region=ru-central1-a \
--secret-file kubespray_inventory/credentials-velero
Создание резервной копии и просмотр ее статуса
$ velero backup create my-first-backup
$ velero backup get
Удаление тестового приложения
$ kubectl delete -f manifests/test-app.yml
Восстановление резервной копии и просмотр списка восстановленных резервных копий
$ velero restore create --from-backup my-first-backup
$ velero restore get
Удаление кластера и ресурсов kubernetes в Яндекс Облаке
$ bash cluster_destroy.sh
Немного рекламы: На платформе https://rotoro.cloud/ Вы можете найти курсы с практическими занятиями:
- Ansible для начинающих + практический опыт
- Сертифицированный администратор Kubernetes (CKA) + практический опыт
- Докер для начинающих + практический опыт
- Kubernetes для начинающих + практический опыт
- Terraform для начинающих + практический опыт
- Практика для входа в ИТ (Linux, Docker, git, Jenkins)
-
Интервью С Главой Российского Офиса Kingston
19 Oct, 24 -
Научитесь Отдавать!
19 Oct, 24 -
Пару Полезных Вещей Для Обработки Фотографий
19 Oct, 24 -
Google Критикует Мобильных Операторов
19 Oct, 24