Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Węzły wirtualne w wersji 2 to ulepszony stos węzłów wirtualnych, który rozszerza usługę AKS poza węzły oparte na maszynie wirtualnej, uruchamiając zasobniki na bezserwerowych obliczeniach w usłudze Azure Container Instances (ACI). Obciążenia są zwiększane do usługi ACI w sekundach bez oczekiwania na aprowizację nowych węzłów i płacisz tylko za zasoby obliczeniowe, których używasz, gdy zasobniki są uruchomione. Węzły wirtualne w wersji 2 są dostarczane jako rozszerzenie klastra usługi AKS.
Important
Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:
Supported
- Kontenery inicjowania
- Aliasy hostów
- Hooki cyklu życia kontenera (
postStartipreStop) -
kubectl execz argumentami - Woluminy trwałe i kontrolery PVC (tylko Azure Files)
- Komunikacja równorzędna sieci VNet
- Ruch wychodzący kontrolowany przez sieciową grupę zabezpieczeń
- Brama translatora adresów sieciowych dla ruchu wychodzącego
- Poufne kontenery
- Maksymalnie 200 zasobników na węzeł wirtualny
Limitations
Następujące funkcje nie są obsługiwane:
- kontenery Windows
- DaemonSets
- Przekazywanie portów
- IPv6
- Zakresy autoryzowanych adresów IP serwera interfejsu API
- Nakładka Azure CNI
- Cilium lub NPM jako zasady sieciowe
- Przynieś własną sieć wirtualną (BYO)
- Wiele wystąpień rozszerzeń na klaster
- Pule rezerwowe
Dostępność zasobów i limity przydziału
Węzły wirtualne w wersji 2 są dostępne we wszystkich Azure regionach chmury publicznej, w których Azure Container Instances obsługuje jednostki SKU sieci wirtualnej. Aby uzyskać więcej informacji, zobacz Limity dostępności i przydziału zasobów dla usługi ACI.
Prerequisites
- Azure CNI w trybie podsieci węzła
- Calico lub brak jako zasady sieciowe
- Włączono tożsamość obciążenia
- Co najmniej jedna pula węzłów o rozmiarze 4+ procesorów wirtualnych i 16 giB pamięci. Każdy węzeł wirtualny rezerwuje około 3 procesorów wirtualnych i 12 GiB pamięci w węźle usługi AKS w klastrze, dlatego upewnij się, że węzły mają wystarczającą ilość zasobów.
- rozszerzenie k8s w wersji 1.8 lub nowszej
-
kubectl1.30 lub nowszy
Zarejestruj dostawcę zasobów ACI:
az provider register --namespace Microsoft.ContainerInstance
Note
Uruchom następujące polecenie, jeśli wystąpi błąd na dowolnym etapie procesu włączania rozszerzenia.
az provider register --namespace Microsoft.KubernetesConfig
Włączanie węzłów wirtualnych w wersji 2
Zainstaluj rozszerzenie:
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
Konfigurowanie ustawień rozszerzenia
Operacje tworzenia i aktualizowania obsługują następujące ustawienia konfiguracji.
| Ustawienie konfiguracji | Description |
|---|---|
replicaCount |
Liczba węzłów wirtualnych. |
admissionControllerReplicaCount |
Liczba zasobników kontrolera dostępu. |
podAnnotations |
Adnotacje dodane do zasobników infrastruktury jako mapa klucz-wartość. |
nodeSelector |
Etykiety, które wybierają węzły usługi AKS hostujące infrastrukturę i zasobniki kontrolera dostępu. |
tolerations |
Tolerancje stosowane w zasobnikach infrastruktury i zasobnikach kontrolera dopuszczania. |
affinity |
Dodatkowe ustawienia koligacji scalone z wymaganymi regułami koligacji usługi AKS. |
zones |
Rozdzielane średnikami strefy dostępności, w których są wdrażane zasobniki. |
nodeLabels |
Etykiety dodane do węzłów wirtualnych jako pary rozdzielane key=value przecinkami. |
Dozwolone kubernetes.io etykiety to:
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
Sprawdź rozszerzenie:
az k8s-extension show \
--name <extension-name> \
--cluster-type managedClusters \
--cluster-name <cluster-name> \
--resource-group <resource-group>
Potwierdź provisioningState , że to Succeeded. Może zatrzymać się Pending na kilka minut.
Sprawdź, czy zasobniki rozszerzeń są uruchomione w przestrzeni nazw vn-system:
kubectl get pods --namespace vn-system
Aktualizowanie rozszerzenia
az k8s-extension update --name <extension-name> --cluster-name <aks-cluster-name> --resource-group <aks-resource-group> --cluster-type managedClusters
Note
Parametr --auto-upgrade-mode obsługuje nonewartość , patchlub compatible. Aby przypiąć określoną wersję rozszerzenia przy użyciu polecenia --version, ustaw wartość --auto-upgrade-modenone.
Azure Container Registry dostęp
Aby ściągnąć obrazy z prywatnej Azure Container Registry (ACR), użyj tożsamości zarządzanej rozszerzenia lub wpisu tajnego ściągania obrazu Kubernetes.
Używanie tożsamości zarządzanej rozszerzenia
AcrPull Udziel roli tożsamości zarządzanej wygenerowanej dla rozszerzenia. Ta rola przyznaje wszystkim zasobnikom uruchomionym w węzłach wirtualnych rozszerzenia dostęp do ściągania obrazów z rejestru bez dodatkowej konfiguracji zasobnika. Musisz mieć uprawnienia do tworzenia przypisań ról w rejestrze.
Pobierz identyfikator podmiotu zabezpieczeń tożsamości zarządzanej rozszerzenia:
$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
Pobierz identyfikator zasobu rejestru kontenerów:
$acrId = az acr show --name <acr-name> --resource-group <acr-resource-group> --query id --output tsv
AcrPull Przypisz rolę do tożsamości zarządzanej rozszerzenia w zakresie rejestru:
az role assignment create --assignee-object-id $extensionPrincipalId --assignee-principal-type ServicePrincipal --role AcrPull --scope $acrId
Poczekaj kilka minut na propagację przypisania roli przed wdrożeniem obciążeń ściągnięcia obrazów z rejestru.
Używanie wpisu tajnego ściągania obrazu
Aby uzyskać instrukcje, zobacz Kubernetes Pull Secret for ACR Authentication (Klucz tajny ściągania rozwiązania Kubernetes na potrzeby uwierzytelniania usługi ACR).
Wdrażanie obciążenia w węzłach wirtualnych w wersji 2
Zaplanuj zasobniki na węzłach wirtualnych przy użyciu selektora virtualization: virtualnode2virtual-kubelet.io/provider węzłów i tolerancji:
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
Zapisz manifest jako demo.yaml, a następnie zastosuj go.
kubectl apply -f demo.yaml
Sprawdź, czy zasobniki są uruchomione.
kubectl get pods -l app=demo -o wide
Wyłączanie węzłów wirtualnych w wersji 2
Warning
Po wyłączeniu rozszerzenia węzła wirtualnego klaster usługi AKS rozłącza się z tworzeniem kopii zapasowych Azure Container Instances grup kontenerów. Aby uniknąć oddzielonych wystąpień, które kontynuują uruchamianie i naliczanie opłat, przed wyłączeniem rozszerzenia usuń wszystkie obciążenia uruchomione w węźle wirtualnym.
Usuń rozszerzenie i wyczyść zasoby węzłów wirtualnych.
az k8s-extension delete \
--name <extension-name> \
--cluster-name <cluster-name> \
--resource-group <resource-group> \
--cluster-type managedClusters
kubectl delete node <virtual-node-name>