2 способа установки Serverless Kubernetes в облаке Alibaba

2 способа установки Serverless Kubernetes в облаке Alibaba

30 марта 2022 г.

Бессерверная версия — отличный способ запуска рабочей нагрузки по требованию, особенно если вы не хотите управлять рабочими процессами Kubernetes. В этой статье мы рассмотрим 2 способа установки кластера Alibaba Serverless Kubernetes (ASK). Мы развернем приложение на виртуальном узле Kubernetes и предоставим его с помощью балансировщика нагрузки сервера и входа.


Условие: учетная запись Alibaba Cloud


Чтобы ASK заработал, вам необходимо активировать соответствующие облачные сервисы:


  • Экземпляр эластичного контейнера После активации этой службы вы можете развертывать бессерверные кластеры Kubernetes (ASK).

  • Балансировщик нагрузки сервера (SLB) С помощью этой службы вы можете создавать экземпляры SLB для кластеров Kubernetes.

  • Шлюз NAT — эта служба обеспечивает связь вашего кластера с Интернетом.

  • Виртуальное частное облако (VPC) — сетевая служба

  • Служба журнала с помощью службы журнала позволяет собирать и запрашивать данные журналов управляемых компонентов и приложений Kubernetes. Эта услуга не является обязательной.

  • CloudMonitor Сервис для мониторинга узлов и приложений в кластерах Alibaba Kubernetes. Эта услуга не является обязательной.

  • Служба хранения объектов (OSS) позволит вам хранить данные приложений в корзинах OSS. Эта услуга не является обязательной.

  • Хранилище файлов Apsara NAS (NAS), Возможность хранения данных приложений в файловых системах NAS. Эта услуга не является обязательной.

  • Служба Elastic Compute Service (ECS) для запуска виртуальных машин для кластеров ACK. (Эта услуга не является обязательной для ASK Serverless Kubernetes)

Способ 1: установка с помощью Alibaba Cloud CLI


Для этого метода я бы предложил использовать Alibaba Cloud Shell. Там у нас уже установлен и настроен Alibaba Cloud CLI.


Шаг 1: создайте пользователя консоли


Чтобы развернуть Alibaba Serverless Kubernetes с Aliyun CLI, нам нужно создать пользователя с доступом к API. Перейдите к управлению доступом к ресурсам, чтобы создать этого пользователя.



Нажмите «Создать пользователя» и укажите «Имя для входа» и «Отображаемое имя» пользователю cli и установите флажок «Открыть доступ к API», как показано на снимке экрана ниже. Сохраните ключ доступа и секрет вновь созданного пользователя.



Чтобы предоставить разрешения пользователю консоли, перейдите в раздел «Пользователи» и нажмите «Добавить разрешения».


В появившемся меню выберите «AdministratorAccess» и нажмите «ОК».


:::предупреждение


ПРИМЕЧАНИЕ. В реальной жизни используйте принцип наименьших привилегий и предоставляйте пользователю точно настроенные разрешения. Без полных прав администратора вы избежите ненужных угроз безопасности.



Шаг 2: настройте aliyun cli


Чтобы открыть Cloud Shell, вам нужно нажать кнопку в правом верхнем углу консоли Alicloud.



В Cloud Shell мы начнем с настройки aliyun cli. Укажите учетные данные от пользователя alibaba-cli, созданного на предыдущем шаге.


```javascript


Алиюн настроить


Ожидаемый результат:



Шаг 3: предоставление кластера ASK


В Cloud Shell нам нужно создать файл ask.json с параметрами кластера ASK. Это должно выглядеть так:


``` ударить


"cluster_type":"Спросить",


"name":"mycli-ask-cluster",


"region_id":"США-запад-1",


"endpoint_public_access": правда,


«частная_зона»: ложь,


"nat_gateway": правда,


«удаление_защита»: ложь,


"zone_id":"сша-запад-1а"


Следующая команда создаст кластер ASK:


``` ударить


aliyun cs POST /clusters --header "Content-Type=application/json" --body "$(cat ask.json)"


Создание кластера Kubernetes занимает около 3 минут.


Ожидаемый вывод команды:



После запуска и запуска кластера Kubernetes запустите команду aliyun cs GET , чтобы запросить информацию о вновь созданном кластере.


``` ударить


Алиюн cs ПОЛУЧИТЬ /clusters/cb2431df0d7334eeeb2e582b18cff8539


Шаг 4: получите доступ к kubectl


Чтобы получить конфигурацию кластера, выполните следующую команду:


``` ударить


mkdir .кубе/


KUBECONFIG=$HOME/.kube/config


aliyun cs GET /k8s/cb2431df0d7334eeeb2e582b18cff8539/user_config | jq -r '.config' > $KUBECONFIG


В папке «.kube» вы можете проверить конфиг kubectl:


``` ударить


кот .кубе/конфиг



Проверьте доступные в кластере виртуальные узлы с помощью команды get nodes:


``` ударить


kubectl получить узлы



Шаг 5: развертывание приложения


Давайте создадим простое развертывание Nginx в кластере:


``` ударить


kubectl применить -f https://k8s.io/examples/controllers/nginx-deployment.yaml


Убедитесь, что модули работают, с помощью команды get pod:


``` ударить


kubectl получить pod



Разоблачение с помощью Server Load Balancer


Теперь, когда мы убедились, что модули работают, давайте представим Nginx с помощью Server Load Balancer. Создайте файл svc.yml со следующим содержимым:


``` ударить


апиВерсия: v1


вид: сервис


метаданные:


аннотации:


service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small


имя: nginx-сервис


пространство имен: по умолчанию


спецификация:


externalTrafficPolicy: Кластер


порты:


  • имя: nginx-порт

порт: 80


протокол: TCP


целевой порт: 80


селектор:


приложение: nginx


сессионаффинити: нет


тип: LoadBalancer


Примените файл svc.yml с kubectl


``` ударить


kubectl применить -f svc.yaml


Получите значение EXTERNAL-IP из команды kubectl get svc



и вставьте его в новую вкладку браузера


Nginx развернут в Serverless Kubernetes и доступен с помощью Server Load Balancer


Способ 2: разверните ASK с консольным интерфейсом


Давайте подготовим кластер ASK, используя только пользовательский интерфейс.


Найдите «Serverless Container Service» в консоли Alibaba Cloud:



Шаг 1: настроить кластер ASK


Затем на левой панели выберите «Кластеры» и нажмите кнопку «Создать кластер Kubernetes».



На странице «Конфигурация кластера» выберите «Serverless Kubernetes» и укажите имя кластера. Нажмите «Создать VPC», если вы не создали его заранее. Отметьте «Expose API Server with EIP», чтобы вы могли получить доступ kubectl к вашему кластеру с помощью облачной оболочки прямо из коробки.



Шаг 2: настройте Nginx Ingress


Если вы хотите предоставить свои бессерверные приложения Kubernetes с помощью Ingress, вам нужно выбрать кнопку «Nginx Ingress» в меню «Конфигурация компонента».


Конфигурации служб мониторинга и ведения журналов также доступны в этом же разделе. Кроме того, вы можете включить подключаемый модуль knative, чтобы получить поддержку бессерверной среды на основе Kubernetes с открытым исходным кодом.



В меню «Подтвердить заказ» вам просто нужно просмотреть выбранные вами ресурсы, проверить «Условия обслуживания для Serverless Kubernetes» и нажать «Создать кластер» в правом нижнем углу:



Подготовка кластера может занять несколько минут. Когда все будет готово, это должно выглядеть так:



Если вы нажмете на название кластера, вы увидите красивую панель инструментов со статусом кластера Kubernetes.



Шаг 3: получите доступ к kubectl с помощью пользовательского интерфейса


Есть 2 способа получить доступ к вашему кластеру с помощью kubectl.


Перейдите к «Информации о кластере» и выберите «Информация о соединении». Вы можете скопировать общедоступный kubeconfig и вставить его в свою локальную конфигурацию Kubernetes или, в качестве альтернативы, вы можете нажать «Открыть Cloud Shell», чтобы открыть Cloud Shell с доступом к предварительно настроенному кластеру my-ask-ui.



Развернуть из консоли


Поскольку мы запускаем веб-консоль, давайте создадим развертывание Kubernetes в пользовательском интерфейсе. На левой панели перейдите к «Рабочие нагрузки\Развертывания», а с правой стороны нажмите кнопку «Создать из YAML».



На появившейся странице вы можете указать конфигурацию развертывания. Когда все будет готово, нажмите кнопку «Создать».



Если вы нажмете на раздел Pods в левом меню, вы увидите, что модуль Nginx запущен и работает.



Шаг 4: откройте приложение в пользовательском интерфейсе с помощью Ingress


Давайте представим Nginx с Ingress с помощью веб-интерфейса. Для этого нам нужно сначала создать службу Cluster IP. Перейдите в «Сервисы» и создайте новый. Добавьте сопоставления портов в контейнер для портов 443 и 80.



Перейдите к Ingress и создайте новый. Укажите имя Ingress, выберите порты для предоставления и укажите домен. В этом примере я буду использовать пользовательский домен, предоставленный Alibaba Cloud, с serverlessnginx перед ним.



Откройте домен URL, который вы указали в новой вкладке, чтобы увидеть стандартную страницу Nginx.


Nginx развернут в Serverless Kubernetes и доступен через Ingress


Резюме: развертывание Kubernetes в облаке Alibaba


Есть несколько способов развертывания управляемых бессерверных кластеров Kubernetes в облаке Alibaba. Использование пользовательского интерфейса может быть полезно для изучения доступных параметров настройки в первый раз. Однако в этой статье показано, что интерфейс командной строки обеспечивает воспроизводимый более быстрый способ подготовки ASK и развертывания приложений на нем.


Очистка


Чтобы очистить Serverless Kubernetes и ресурсы зависимостей, созданные в этой лаборатории, с помощью инструмента Alibaba CLI, выполните команды kubectl delete и aliyun cs DELETE.


``` ударить


kubecetl удалить -f svc.yml


kubectl удалить -f https://k8s.io/examples/controllers/nginx-deployment.yaml


Алиюн cs УДАЛИТЬ /кластеры/cb2431df0d7334eeeb2e582b18cff8539


Чтобы выполнить очистку с помощью пользовательского интерфейса, вам нужно перейти в меню «Кластеры». С правой стороны выберите «Дополнительно» и нажмите «Удалить».



На всплывающем экране вы можете выбрать ресурсы, которые вы хотите сохранить



:::Информация


Чтобы удалить кластер ASK, необходимо сначала удалить рабочую нагрузку Elastic Container Instances, поскольку она будет жаловаться на то, что зависимости блокируют удаление кластера. Это включает в себя удаление развертывания Nginx Ingress Controller и завершенных модулей.



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE