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
и вставьте его в новую вкладку браузера
Способ 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.
Резюме: развертывание 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 и завершенных модулей.
Оригинал