Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os Nós Virtuais v2 são uma pilha de Nós Virtuais aprimorada que estende o AKS além dos nós baseados em VM executando pods na computação sem servidor na ACI (Instâncias de Contêiner do Azure). As cargas de trabalho rompem nas ACIs em segundos sem esperar que novos nós sejam provisionados, e você paga apenas pela computação usada enquanto os pods estão em execução. Os Nós Virtuais v2 são fornecidos como uma extensão de cluster do AKS.
Importante
As funcionalidades em versão preliminar do AKS estão disponíveis de forma optativa e por autoatendimento. As versões prévias são fornecidas “no estado em que se encontram” e “conforme disponíveis” e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:
Supported
- Contêineres de inicialização
- Alias de host
- Ganchos de ciclo de vida do contêiner (
postStartepreStop) -
kubectl execcom argumentos - PVCs e volumes persistentes (somente nos Arquivos do Azure)
- Emparelhamento de VNet
- Saída controlada por NSG
- Gateway da NAT para saída
- Contêineres confidenciais
- Até 200 pods por nó virtual
Limitations
Não há suporte aos seguintes recursos:
- Contêineres do Windows
- Conjuntos de Daemon
- Encaminhamento de porta
- IPv6
- Intervalos de IP autorizados do servidor de API
- CNI Overlay do Azure
- Cilium ou NPM como a política de rede
- Traga sua própria (BYO) rede virtual
- Várias instâncias de extensão por cluster
- Pools de reserva
Limites de cota e disponibilidade de recursos
Os Nós Virtuais v2 estão disponíveis em todas as regiões de nuvem pública do Azure nas quais as Instâncias de Contêiner do Azure dão suporte a SKUs de VNet. Para obter mais informações, consulte Disponibilidade de recursos e limites de cota para as ACIs.
Prerequisites
- CNI do Azure no modo nó-subrede
- Calico ou nenhum como a política de rede
- Identidade da carga de trabalho habilitada
- Pelo menos um pool de nós com um tamanho de VM de mais de 4 vCPUs e mais de 16 GiB de memória. Cada nó virtual reserva cerca de 3 vCPUs e 12 GiB de memória em um nó do AKS em seu cluster; portanto, verifique se os nós têm recursos suficientes.
- Versão de k8s-extension 1.8 ou posterior
-
kubectl1.30 ou posterior
Registre o provedor de recursos das ACIs:
az provider register --namespace Microsoft.ContainerInstance
Note
Execute o comando a seguir se você encontrar um erro em qualquer etapa do processo de habilitação da extensão.
az provider register --namespace Microsoft.KubernetesConfig
Habilitar os Nós Virtuais v2
Instale a extensão:
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
Definir as configurações da extensão
As operações de criação e atualização dão suporte às seguintes configurações.
| Definição de configuração | Description |
|---|---|
replicaCount |
Número de Nós Virtuais. |
admissionControllerReplicaCount |
Número de pods do controlador de admissão. |
podAnnotations |
Anotações adicionadas a pods de infraestrutura como um mapa de valores-chave. |
nodeSelector |
Rótulos que selecionam os nós do AKS que hospedam pods de infraestrutura e do controlador de admissão. |
tolerations |
Tolerâncias aplicadas a pods de controlador de infraestrutura e admissão. |
affinity |
Configurações de afinidade adicionais mescladas com as regras de afinidade necessárias do AKS. |
zones |
Zonas de disponibilidade delimitadas por ponto e vírgula em que os pods são implantados. |
nodeLabels |
Rótulos adicionados a Nós Virtuais como pares separados por vírgulas key=value . |
Os rótulos permitidos kubernetes.io são:
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
Verifique a extensão:
az k8s-extension show \
--name <extension-name> \
--cluster-type managedClusters \
--cluster-name <cluster-name> \
--resource-group <resource-group>
Confirme se provisioningState é Succeeded. Pode ficar Pending por alguns minutos.
Verifique se os pods de extensão estão em execução no namespace vn-system:
kubectl get pods --namespace vn-system
Atualizar uma extensão
az k8s-extension update --name <extension-name> --cluster-name <aks-cluster-name> --resource-group <aks-resource-group> --cluster-type managedClusters
Note
O parâmetro --auto-upgrade-mode dá suporte a none, patch ou compatible. Para fixar uma versão de extensão específica usando --version, defina --auto-upgrade-mode como none.
Acesso ao Registro de Contêiner do Azure
Para efetuar pull de imagens de um ACR (Registro de Contêiner do Azure) privado, use a identidade gerenciada da extensão ou um segredo de pull de imagens do Kubernetes.
Usar a identidade gerenciada da extensão
Conceda a AcrPull função à identidade gerenciada gerada para a extensão. Essa função concede a todos os pods em execução nos Nós Virtuais da extensão acesso para efetuar pull de imagens do Registro sem configuração de pod extra. Você deve ter permissão para criar atribuições de função no Registro.
Obtenha a ID principal da identidade gerenciada da extensão:
$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
Obtenha a ID do recurso do registro de contêiner:
$acrId = az acr show --name <acr-name> --resource-group <acr-resource-group> --query id --output tsv
Atribua a AcrPull função à identidade gerenciada da extensão no escopo do Registro:
az role assignment create --assignee-object-id $extensionPrincipalId --assignee-principal-type ServicePrincipal --role AcrPull --scope $acrId
Aguarde alguns minutos para que a atribuição de função se propague antes de implantar cargas de trabalho que efetuem pull de imagens do Registro.
Usar um segredo de pull de imagens
Para obter instruções, consulte Segredo de pull do Kubernetes para a autenticação do ACR.
Implantar uma carga de trabalho em Nós Virtuais v2
Agende pods em nós virtuais usando o virtualization: virtualnode2 seletor de nó e a virtual-kubelet.io/provider tolerância:
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
Salve o manifesto como demo.yamle, em seguida, aplique-o.
kubectl apply -f demo.yaml
Verifique se os pods estão em execução.
kubectl get pods -l app=demo -o wide
Desabilitar Nós Virtuais v2
Warning
Quando você desabilitar a extensão do nó virtual, o cluster do AKS se desconecta do backup dos grupos de contêineres das Instâncias de Contêiner do Azure. Para evitar instâncias órfãs que continuam em execução e incorrendo em encargos, exclua todas as cargas de trabalho em execução no nó virtual antes de desabilitar a extensão.
Exclua a extensão e limpe os recursos de nó virtual.
az k8s-extension delete \
--name <extension-name> \
--cluster-name <cluster-name> \
--resource-group <resource-group> \
--cluster-type managedClusters
kubectl delete node <virtual-node-name>