VK Cloud logo
Обновлена20 марта 2024 г. в 07:17

Быстрый старт

Быстрый старт поможет вам начать работу с сервисом и познакомиться с его возможностями.

Пройдя все шаги быстрого старта, вы:

  1. Создадите небольшой кластер Kubernetes.
  2. Научитесь подключаться к нему.
  3. Познакомитесь с Kubernetes и аддонами для него:
    1. Подключите инструменты для управления и мониторинга.
    2. Загрузите Docker-образы в реестр Docker.
    3. Развернете простые приложения на основе загруженных образов, с возможностью использовать хранилище Cloud Storage.
    4. Предоставите доступ к развернутым приложениям с помощью Ingress-контроллера.
    5. Убедитесь, что эти приложения действительно работают.

1. Подготовительные шаги

1.1. Создайте кластер

  1. Перейдите в личный кабинет VK Cloud.

  2. Выберите проект, где будет размещен кластер.

  3. Перейдите в раздел КонтейнерыКластеры Kubernetes.

  4. Если в выбранном проекте пока нет ни одного кластера, нажмите кнопку Создать кластер.

    Иначе нажмите кнопку Добавить.

  5. На шаге «Конфигурация»:

    1. Выберите конфигурацию кластера Dev-среда с самой новой версией Kubernetes.

    2. Нажмите кнопку Следующий шаг.

  6. На шаге «Создание кластера» задайте:

    1. Имя кластера: например, vk-cloud-k8s-quickstart.

    2. Тип виртуальной машины Master: STD3-2-8.

    3. Зона доступности: Москва (MS1).

    4. Сеть: Создать новую сеть.

    5. Назначить внешний IP: убедитесь, что эта опция выбрана.

    6. Другие настройки оставьте без изменений.

    7. Нажмите кнопку Следующий шаг.

  7. На шаге «Группы узлов» задайте:

    1. Тип Node-узлов: STD3-4-4.

    2. Зона доступности: Москва (MS1).

    3. Другие настройки оставьте без изменений.

    4. Нажмите кнопку Создать кластер.

Дождитесь завершения создания кластера, этот процесс может занять длительное время.

1.2. Установите аддоны в кластер

  1. Установите аддон docker-registry.

    Запишите данные для доступа к реестру Docker.

  2. Установите аддон kube-prometheus-stack.

    Запишите пароль для доступа к веб-интерфейсу Grafana.

  3. Установите аддон ingress-nginx с параметрами по умолчанию.

    Запишите плавающий IP-адрес для балансировщика нагрузки.

Далее в командах и конфигурационных файлах для примера будут использоваться следующие значения. Замените их на актуальные для вас.

Параметр
Значение
IP-адрес балансировщика нагрузки
для Ingress-контроллера
192.0.2.2
URL эндпоинта реестра Docker
192.0.2.22:5000
Логин пользователя реестра Docker
registry
Пароль пользователя реестра Docker
registry-password-123456
Пароль пользователя admin для Grafana
grafana-password-123456

1.3. Настройте окружение для работы с кластером

Настройте хост, с которого вы будете работать с кластером. Это может быть как реальный компьютер, так и виртуальная машина.

Установите на хост следующие инструменты:

1.4. Подключитесь к кластеру

  1. Добавьте в личном кабинете роль Администратор Kubernetes для пользователя, от имени которого будет выполняться подключение к кластеру:

    1. Перейдите в личный кабинет VK Cloud.
    2. Выберите проект, где находится созданный ранее кластер.
    3. Перейдите в раздел Управление доступами.
    4. Раскройте меню нужного пользователя и выберите пункт Редактировать.
    5. Выберите роль Администратор Kubernetes из выпадающего списка.
    6. Сохраните изменения.
  2. Активируйте доступ по API для этого пользователя.

  3. Получите kubeconfig для кластера в личном кабинете VK Cloud:

    1. Перейдите в раздел Контейнеры → Кластеры Kubernetes.
    2. Найдите в списке нужный кластер, затем в его меню выберите пункт Получить Kubeconfig для доступа к кластеру.
  4. Переместите kubeconfig в директорию ~/.kube, чтобы при использовании kubectl не указывать дополнительные аргументы.

    В приведенных ниже командах предполагается, что kubeconfig был загружен в директорию ~/Downloads под именем mycluster_kubeconfig.yaml.

    1mkdir ~/.kube && \
    2mv ~/Downloads/mycluster_kubeconfig.yaml ~/.kube/config
  5. Проверьте, что kubectl может подключиться к кластеру:

    1. Выполните команду:

      kubectl cluster-info
    2. Введите пароль пользователя от личного кабинета VK Cloud.

    Если кластер работает нормально и kubectl настроен на работу с ним, будет выведена похожая информация:

    1Kubernetes control plane is running at...
    2CoreDNS is running at...
    3
    4To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

2. Получите доступ к средствам мониторинга кластера

В кластере был установлен аддон со средствами мониторинга на базе Prometheus и Grafana. Также для всех кластеров Cloud Containers доступен Kubernetes Dashboard, который позволяет не только управлять кластером, но и осуществлять его мониторинг.

  1. В отдельной сессии терминала выполните команду:

    kubectl -n prometheus-monitoring port-forward service/kube-prometheus-stack-grafana 8001:80
  2. Откройте веб-интерфейс Grafana:

    1. В браузере перейдите по URL http://127.0.0.1:8001/.
    2. Авторизуйтесь с помощью пары логин/пароль admin/grafana-password-123456.
    3. Если будет запрошена смена пароля, смените его.
  3. Выберите в боковом меню Dashboards → Browse любой преднастроенный дашборд для получения информации о ресурсах кластера.

3. Загрузите нужные образы в реестр Docker

В кластере был установлен аддон реестра Docker, в котором будут храниться Docker-образы.

Чтобы поместить собственные образы в реестр Docker кластера:

  1. Добавьте реестр Docker в список доверенных реестров:

    1. Добавьте в конфигурационный файл Docker daemon.json следующий параметр c URL эндпоинта реестра Docker:

      1{
      2  ...
      3
      4  "insecure-registries": [
      5    "192.0.2.22:5000"
      6  ],
      7
      8  ...
      9}

      Расположение этого файла для разных инсталляций Docker Engine приведено в официальной документации Docker.

    2. Перезапустите Docker Engine.

      Выполните одно из следующих действий:

      • Используйте одну из команд для перезапуска:

        sudo systemd restart docker
        sudo service docker restart
      • Перезапустите Docker Engine из графического интерфейса Docker Desktop (если он установлен).

  2. Соберите Docker-образ:

    1. Создайте директорию для файлов и перейдите в нее:

      mkdir ~/image-build && cd ~/image-build
    2. Поместите в эту директорию следующие файлы:

    3. Запустите сборку образа:

      docker build . -t 192.0.2.22:5000/nginx-k8s-demo:latest

    Дождитесь завершения сборки образа.

  3. Разместите собранный образ в реестре Docker:

    1. Выполните вход в реестр:

      docker login 192.0.2.22:5000 --username registry --password registry-password-123456
    2. Запушьте образ в реестр:

      docker push 192.0.2.22:5000/nginx-k8s-demo:latest
    3. Проверьте, что образ находится в реестре:

      curl -k -X GET -u registry:registry-password-123456 https://192.0.2.22:5000/v2/_catalog

      Должна быть выведена похожая информация:

      {"repositories":["nginx-k8s-demo"]}
    4. Создайте секрет Kubernetes, чтобы можно было получить доступ к загруженному образу из Kubernetes:

      kubectl create secret docker-registry k8s-registry-creds --docker-server=192.0.2.22:5000 --docker-username=registry --docker-password=registry-password-123456

4. Разверните демо-приложения

На основе загруженного в реестр Docker образа nginx-k8s-demo будет развернуто два приложения: tea и coffee. Для каждого из приложений будут созданы:

  • Persistent Volume Claim, чтобы внутрь приложения можно было монтировать тома с данными.
  • Deployment, в котором будут заданы:
    • Количество реплик.
    • Том для монтирования в под.
  • Service для обеспечения доступа к приложению. В дальнейшем Ingress-контроллер будет пересылать входящие запросы к этому Service.

Чтобы развернуть приложения:

  1. Создайте директорию для файлов и перейдите в нее:

    mkdir ~/k8s-deployments && cd ~/k8s-deployments
  2. Поместите в эту директорию следующие файлы:

  3. Разверните приложения:

    kubectl apply -f deploy-coffee.yaml -f deploy-tea.yaml
  4. Проверьте корректность развертывания:

    Воспользуйтесь одним из способов:

    • kubectl: выполните команду.

      kubectl get pv
    • Grafana: откройте дашборд Kubernetes → Compute Resources → Persistent Volumes.

    • Kubernetes Dashboard: откройте дашборд Cluster → Persistent Volumes.

    Будет видна информация о том, что присутствуют постоянные тома объемом 1 ГБ, созданные при помощи Persistent Volume Claim для deployments tea и coffee.

5. Настройте Ingress для демо-приложений

В кластере был установлен аддон Ingress-контроллера NGINX, позволяющий маршрутизировать входящие запросы пользователей к развернутым в кластере приложениям.

Чтобы Ingress-контроллер маршрутизировал запросы к соответствующим ресурсам Service, через которые опубликованы демо-приложения tea и coffee:

  1. Поместите в директорию ~/k8s-deployments следующий файл:

  2. Разверните ресурс Ingress:

    kubectl apply -f deploy-ingress.yaml
  3. Проверьте корректность развертывания с помощью kubectl, выполнив команду:

    kubectl get ingress

    Будет видна информация о том, что есть работающий ресурс Ingress.

6. Проверьте работоспособность всех созданных ресурсов в кластере

Чтобы проверить работоспособность примера, выполните с помощью curl запросы к IP-адресу 192.0.2.2 балансировщика нагрузки. Связанный с балансировщиком Ingress-контроллер затем доставит эти запросы нужным приложениям.

Запросы:

curl --resolve cafe.example.com:80:192.0.2.2 http://cafe.example.com/tea

Должна быть выведена похожая информация:

1Server address: 10.100.109.3:8080
2Server name: tea-8697dc7b86-s5vgn
3Date: 24/Aug/2022:09:27:34 +0000
4URI: /tea
5Request ID: ed83bd555afd25c103bfa05ee12cbfff
6Remote address (NGINX Ingress Controller): <IP-адрес Ingress-контроллера>
7X-Forwarded-For (Request source): <IP-адрес хоста, с которого выполнялся запрос>
8
9K8S Persistent Volume status: present

Такой результат демонстрирует, что:

  1. Можно запускать приложения, использующие Docker-образы из кластерного реестра Docker.
  2. Можно монтировать хранилище VK Cloud к подам с помощью Persistent Volume Claim.
  3. Предоставляемый с кластером Ingress-контроллер настроен корректно, т. к. показывает реальный IP-адрес источника запроса.

Удалите неиспользуемые ресурсы

Работающий кластер потребляет вычислительные ресурсы. Если он вам больше не нужен:

Что дальше?