Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Virtual Nodes v2 é uma pilha melhorada de Nós Virtuais que estende o AKS para além dos nós baseados em VM, executando pods em computação serverless no Azure Container Instances (ACI). As cargas de trabalho saltam para ACI em segundos sem esperar que novos nós sejam provisionados, e pagas apenas pelo cálculo que usas enquanto os pods estão a correr. O Virtual Nodes v2 é entregue como uma extensão de cluster AKS.
Importante
As funcionalidades de pré-visualização do AKS estão disponíveis num regime de autosserviço e de adesão voluntária. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões de pré-visualização do AKS são apenas parcialmente abrangidas pelo suporte ao cliente, na medida do possível. Assim sendo, estas funcionalidades não se destinam ao uso em produção. Para obter mais informações, consulte os seguintes artigos de suporte:
Suportado
- Contentores de inicialização
- Alias de host
- Ganchos do ciclo de vida do contentor (
postStartepreStop) -
kubectl execcom argumentos - Volumes persistentes e PVCs (apenas Ficheiros do Azure)
- Emparelhamento VNet
- Saída controlada por NSG
- NAT Gateway para saída
- Contentores confidenciais
- Até 200 pods por nó virtual
Limitations
Os seguintes recursos não são suportados:
- Contentores do Windows
- Conjuntos de Daemon
- Encaminhamento de portas
- IPv6
- Intervalos de IP autorizados pelo servidor API
- Sobreposição do Azure CNI
- Cilium ou NPM como política de rede
- Use a sua própria rede virtual (BYO)
- Múltiplas instâncias de extensão por cluster
- Piscinas de reserva
Disponibilidade de recursos e limites de quotas
O Virtual Nodes v2 está disponível em todas as regiões da cloud pública do Azure onde o Azure Container Instances suporta SKUs VNet. Para mais informações, consulte Disponibilidade de recursos e limites de quotas para o ACI.
Prerequisites
- Azure CNI em modo node-subnet
- Calico ou nenhum como política da rede
- Identidade da carga de trabalho ativada
- Pelo menos um pool de nós com um tamanho de VM de 4+ vCPUs e 16+ GiB de memória. Cada nó virtual reserva cerca de 3 vCPUs e 12 GiB de memória num nó AKS no teu cluster, por isso garante que os teus nós têm recursos suficientes.
- K8S-Extensão versão 1.8 ou superior
-
kubectl13h30 ou depois
Registe o fornecedor de recursos ACI:
az provider register --namespace Microsoft.ContainerInstance
Note
Execute o comando seguinte se encontrar um erro em qualquer fase do processo de ativação da extensão.
az provider register --namespace Microsoft.KubernetesConfig
Ativar 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 configurações de extensão
Criar e atualizar operações suportam as seguintes definições de configuração.
| Definição de configuração | Description |
|---|---|
replicaCount |
Número de nós virtuais. |
admissionControllerReplicaCount |
Número de cápsulas de controlo de admissão. |
podAnnotations |
Anotações adicionadas aos pods de infraestrutura como um mapa-chave-valor. |
nodeSelector |
Rótulos que selecionam os nós AKS que alojam a infraestrutura e os pods de controlo de admissão. |
tolerations |
As tolerâncias aplicavam-se à infraestrutura e aos pods de controlo de admissão. |
affinity |
Definições adicionais de afinidade foram fundidas com as regras de afinidade exigidas do AKS. |
zones |
Zonas de disponibilidade delimitadas por ponto e vírgula onde os pods são implantados. |
nodeLabels |
Etiquetas adicionadas aos nós virtuais como pares separados key=value por vírgulas. |
As etiquetas permitidas 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>
Verifique se provisioningState é Succeeded. Pode ficar Pending durante alguns minutos.
Verifique se os pods de extensão estão a correr no vn-system namespace:
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 --auto-upgrade-mode parâmetro suporta none, patch, ou compatible. Para fixar uma versão específica de extensão usando --version, defina --auto-upgrade-mode para none.
Azure Container Registry access
Para extrair imagens de um Azure Container Registry privado (ACR), use a extensão managed identity ou um Kubernetes image pull secret.
Use a identidade gerida da extensão
Conceda o AcrPull papel à identidade gerida gerada para a extensão. Esta função concede a todos os pods que correm nos nós virtuais da extensão acesso a extrair imagens do registo sem configuração adicional de pods. Deve ter permissão para criar atribuições de funções no registo.
Obtenha o ID principal da identidade gerida 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 o ID do recurso do registo de contentores:
$acrId = az acr show --name <acr-name> --resource-group <acr-resource-group> --query id --output tsv
Atribuir o AcrPull papel à identidade gerida da extensão no âmbito do registo:
az role assignment create --assignee-object-id $extensionPrincipalId --assignee-principal-type ServicePrincipal --role AcrPull --scope $acrId
Espere vários minutos para que a atribuição de funções se propague antes de implementar cargas de trabalho que extraem imagens do registo.
Use um segredo de pull de imagem
Para instruções, consulte Kubernetes Pull Secret para Autenticação ACR.
Implementar uma carga de trabalho para os Nós Virtuais v2
Pods de agendamento em nós virtuais usando o virtualization: virtualnode2 seletor de nós 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
Guarda o manifesto como demo.yaml, e depois aplica-o.
kubectl apply -f demo.yaml
Verifica se os pods estão a funcionar.
kubectl get pods -l app=demo -o wide
Desativar Nós Virtuais v2
Warning
Quando desativa a extensão do nó virtual, o cluster AKS desliga-se dos grupos de contentores do Azure Container Instances de apoio. Para evitar instâncias órfãs que continuam a funcionar e a incorrer em custos, elimine quaisquer cargas de trabalho que estejam a correr no nó virtual antes de desativar a extensão.
Apaga a extensão e limpa os recursos virtuais do nó.
az k8s-extension delete \
--name <extension-name> \
--cluster-name <cluster-name> \
--resource-group <resource-group> \
--cluster-type managedClusters
kubectl delete node <virtual-node-name>