Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Виртуальные узлы версии 2 — это улучшенный стек виртуальных узлов, который расширяет AKS за пределами узлов на основе виртуальных машин, выполняя модули pod на бессерверных вычислениях в Экземпляры контейнеров Azure (ACI). Рабочие нагрузки запускаются в ACI в секундах, не ожидая подготовки новых узлов, и вы платите только за используемые вычислительные ресурсы во время выполнения модулей pod. Виртуальные узлы версии 2 предоставляются как расширение кластера AKS.
Important
Предварительные версии функций AKS доступны на условиях самообслуживания и по выбору пользователя. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:
Поддерживается
- Контейнеры инициализации.
- Псевдонимы узлов
- Перехватчики жизненного цикла контейнера (
postStartиpreStop) -
kubectl execс аргументами - Постоянные тома и PVCs (только Файлы Azure)
- Пиринг виртуальных сетей
- Исходящие исходящие данные, контролируемые NSG
- Шлюз NAT для исходящего трафика
- Конфиденциальные контейнеры
- До 200 модулей pod на виртуальный узел
Limitations
Следующие функции не поддерживаются:
- Контейнеры Windows
- DaemonSets
- перенаправление портов;
- IPv6
- Диапазоны разрешенных IP-адресов сервера API
- Сетевой слой Azure CNI
- Cilium или NPM в качестве политики сети
- Перенос собственной виртуальной сети (BYO)
- Несколько экземпляров расширений на кластер
- Резервные пулы
Ограничения доступности ресурсов и квоты
Виртуальные узлы версии 2 доступны во всех Azure общедоступных облачных регионах, где Экземпляры контейнеров Azure поддерживает номера SKU виртуальной сети. Дополнительные сведения см. в разделе о ограничениях доступности ресурсов и квотах для ACI.
Prerequisites
- Azure CNI в режиме подсети узла
- Calico или нет в качестве политики сети
- Удостоверение рабочей нагрузки включено
- По крайней мере один пул узлов с размером виртуальной машины размером 4+ виртуальных ЦП и 16+ ГиБ памяти. Каждый виртуальный узел резервирует около 3 виртуальных ЦП и 12 ГиБ памяти на узле AKS в кластере, поэтому убедитесь, что узлы имеют достаточно ресурсов.
- k8s-extension версии 1.8 или более поздней
-
kubectl1.30 или более поздней версии
Зарегистрируйте поставщика ресурсов ACI:
az provider register --namespace Microsoft.ContainerInstance
Note
Выполните следующую команду, если возникла ошибка на любом этапе процесса включения расширения.
az provider register --namespace Microsoft.KubernetesConfig
Включение виртуальных узлов версии 2
Установите расширение:
az k8s-extension create \
--name <extension-name> \
--extension-type Microsoft.virtualnodes \
--cluster-name <cluster-name> \
--resource-group <resource-group> \
--cluster-type managedClusters \
--configuration-settings replicaCount=1 # specifies number of virtual nodes - optional
Настройка параметров расширения
Операции создания и обновления поддерживают следующие параметры конфигурации.
| Параметр конфигурации | Description |
|---|---|
replicaCount |
Количество виртуальных узлов. |
admissionControllerReplicaCount |
Количество модулей pod контроллера допуска. |
podAnnotations |
Заметки, добавленные в модули pod инфраструктуры в виде карты "ключ-значение". |
nodeSelector |
Метки, которые выбирают узлы AKS, на которых размещается инфраструктура и модули pod контроллера допуска. |
tolerations |
Терпимые действия, применяемые к модулям pod контроллера инфраструктуры и допуска. |
affinity |
Дополнительные параметры сходства, объединенные с необходимыми правилами сходства AKS. |
zones |
Зоны доступности с разделителями с запятой, в которых развертываются модули pod. |
nodeLabels |
Метки, добавленные к виртуальным узлам в виде пар, разделённых запятыми key=value. |
Допустимые kubernetes.io метки:
beta.kubernetes.io/archbeta.kubernetes.io/instance-typebeta.kubernetes.io/osfailure-domain.beta.kubernetes.io/regionfailure-domain.beta.kubernetes.io/zonekubernetes.io/archkubernetes.io/hostnamekubernetes.io/osnode.kubernetes.io/instance-typetopology.kubernetes.io/regiontopology.kubernetes.io/zone
Проверьте расширение:
az k8s-extension show \
--name <extension-name> \
--cluster-type managedClusters \
--cluster-name <cluster-name> \
--resource-group <resource-group>
Убедитесь, что provisioningState является Succeeded. Он может остаться Pending в течение нескольких минут.
Убедитесь, что модули pod расширения выполняются в vn-system пространстве имен:
kubectl get pods --namespace vn-system
Обновление расширения
az k8s-extension update --name <extension-name> --cluster-name <aks-cluster-name> --resource-group <aks-resource-group> --cluster-type managedClusters
Note
Параметр --auto-upgrade-mode поддерживает none, patchили compatible. Чтобы закрепить определенную версию расширения, установите --versionдля этого значение --auto-upgrade-modenone.
доступ Реестр контейнеров Azure
Чтобы извлечь изображения из частной Реестр контейнеров Azure (ACR), используйте управляемое удостоверение расширения или секрет извлечения образа Kubernetes.
Использование управляемого удостоверения расширения
Предоставьте AcrPull роль управляемому удостоверению, созданному для расширения. Эта роль предоставляет всем подам, работающим на виртуальных узлах расширения, доступ к извлечению образов из реестра без дополнительной настройки подов. Необходимо иметь разрешение на создание назначений ролей в реестре.
Получите идентификатор субъекта управляемого удостоверения расширения:
$extensionPrincipalId = az k8s-extension show --name <extension-name> --cluster-name <aks-cluster-name> --resource-group <aks-resource-group> --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv
Получите идентификатор ресурса реестра контейнеров:
$acrId = az acr show --name <acr-name> --resource-group <acr-resource-group> --query id --output tsv
AcrPull Назначьте роль управляемому удостоверению расширения в области реестра:
az role assignment create --assignee-object-id $extensionPrincipalId --assignee-principal-type ServicePrincipal --role AcrPull --scope $acrId
Подождите несколько минут, пока назначение роли будет распространяться перед развертыванием рабочих нагрузок, извлекающих образы из реестра.
Использование секрета извлечения изображения
Инструкции см. в разделе "Секрет извлечения Kubernetes" для проверки подлинности ACR.
Развертывание рабочей нагрузки на виртуальных узлах версии 2
Запланируйте модули pod на виртуальных узлах с помощью virtualization: virtualnode2 селектора узлов и virtual-kubelet.io/provider толерации:
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo
spec:
replicas: 3
selector:
matchLabels:
app: demo
template:
metadata:
labels:
app: demo
spec:
containers:
- name: hello
image: mcr.microsoft.com/azuredocs/aci-helloworld
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: "1"
memory: 1Gi
nodeSelector:
virtualization: virtualnode2
kubernetes.io/os: linux
tolerations:
- key: virtual-kubelet.io/provider
operator: Exists
effect: NoSchedule
Сохраните манифест как demo.yaml, а затем примените его.
kubectl apply -f demo.yaml
Убедитесь, что поды запущены.
kubectl get pods -l app=demo -o wide
Отключение виртуальных узлов версии 2
Предупреждение
При отключении расширения виртуального узла кластер AKS отключается от резервных групп контейнеров Экземпляры контейнеров Azure. Чтобы избежать потерянных экземпляров, которые продолжают работать и нести расходы, удалите все рабочие нагрузки, выполняемые на виртуальном узле, прежде чем отключить расширение.
Удалите расширение и очистите ресурсы виртуального узла.
az k8s-extension delete \
--name <extension-name> \
--cluster-name <cluster-name> \
--resource-group <resource-group> \
--cluster-type managedClusters
kubectl delete node <virtual-node-name>