Azure Kubernetes Service (AKS)'de Sanal Düğümler v2 kullanma (önizleme)

Sanal Düğümler v2, Azure Container Instances (ACI) içinde sunucusuz işlem üzerinde pod çalıştırarak AKS'yi VM tabanlı düğümlerin ötesine genişleten geliştirilmiş bir Sanal Düğümler yığınıdır. İş yükleri, yeni düğümlerin sağlanmasını beklemeden saniyeler içinde ACI'ye aktarılır ve yalnızca podlar çalışırken kullandığınız işlem için ödeme yapılır. Sanal Düğümler v2, AKS kümesi uzantısı olarak teslim edilir.

Important

AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:

Destekleniyor

  • Başlatma kapsayıcıları
  • Konak diğer adları
  • Kapsayıcı yaşam döngüsü kancaları (postStart ve preStop)
  • kubectl exec argümanlarla
  • Kalıcı birimler ve PVC'ler (yalnızca Azure Dosyalar)
  • VNet eşlemesi
  • NSG denetimli çıkış
  • Çıkış için NAT Ağ Geçidi
  • Gizli kapsayıcılar
  • Sanal düğüm başına en fazla 200 pod

Limitations

Aşağıdaki özellikler desteklenmez:

  • Windows konteynerleri
  • DaemonSets
  • Bağlantı noktası iletme
  • IPv6
  • API sunucusu yetkili IP aralıkları
  • Azure CNI Katmanı
  • Ağ ilkesi olarak Cilium veya NPM
  • Kendi (KCG) sanal ağınızı getirme
  • Küme başına birden çok uzantı örneği
  • Yedek havuzlar

Kaynak kullanılabilirliği ve kota sınırları

Sanal Düğümler v2, Azure Container Instances sanal ağ SKU'larını desteklediği tüm Azure genel bulut bölgelerinde kullanılabilir. Daha fazla bilgi için bkz . ACI için kaynak kullanılabilirliği ve kota sınırları.

Prerequisites

  • Düğüm alt ağ modunda CNI Azure
  • Ağ ilkesi için Calico veya hiçbiri
  • İş yükü kimliği etkinleştirildi
  • Vm boyutu 4+ vCPU ve 16+ GiB bellek olan en az bir düğüm havuzu. Her sanal düğüm, kümenizdeki bir AKS düğümünde yaklaşık 3 vCPU ve 12 GiB bellek ayırır; bu nedenle düğümlerinizin yeterli kaynağa sahip olduğundan emin olun.
  • k8s uzantısı sürüm 1.8 veya üzeri
  • kubectl 1.30 veya üzeri

ACI kaynak sağlayıcısını kaydedin:

az provider register --namespace Microsoft.ContainerInstance

Note

Uzantı etkinleştirme işleminin herhangi bir aşamasında hatayla karşılaşırsanız aşağıdaki komutu çalıştırın.

az provider register --namespace Microsoft.KubernetesConfig

Sanal Düğümleri Etkinleştirme v2

Uzantıyı yükleyin:

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

Uzantı ayarlarını yapılandırma

Oluşturma ve güncelleştirme işlemleri aşağıdaki yapılandırma ayarlarını destekler.

Yapılandırma ayarı Description
replicaCount Sanal düğüm sayısı.
admissionControllerReplicaCount Kabul denetleyicisi podlarının sayısı.
podAnnotations Altyapı podlarına anahtar-değer eşlemesi olarak eklenen ek açıklamalar.
nodeSelector Altyapı ve erişim denetleyicisi podlarını barındıran AKS düğümlerini seçen etiketler.
tolerations Altyapı ve erişim denetleyicisi podlarına uygulanan toleranslar.
affinity Gerekli AKS benzenşimi kurallarıyla birleştirilen ek benzenşim ayarları.
zones Podların dağıtıldığı noktalı virgülle ayrılmış kullanılabilirlik alanları.
nodeLabels Sanal düğümlere virgülle ayrılmış key=value çiftler olarak eklenen etiketler.

İzin verilen kubernetes.io etiketler şunlardır:

  • beta.kubernetes.io/arch
  • beta.kubernetes.io/instance-type
  • beta.kubernetes.io/os
  • failure-domain.beta.kubernetes.io/region
  • failure-domain.beta.kubernetes.io/zone
  • kubernetes.io/arch
  • kubernetes.io/hostname
  • kubernetes.io/os
  • node.kubernetes.io/instance-type
  • topology.kubernetes.io/region
  • topology.kubernetes.io/zone

Uzantıyı doğrulayın:

az k8s-extension show \
    --name <extension-name> \
    --cluster-type managedClusters \
    --cluster-name <cluster-name> \
    --resource-group <resource-group>

provisioningState öğesinin Succeeded olduğunu doğrulayın. Birkaç dakika boyunca Pending durumda kalabilir.

Uzantı podlarının ad alanında vn-system çalıştığını doğrulayın:

kubectl get pods --namespace vn-system

Uzantıyı güncelleştirme

az k8s-extension update --name <extension-name> --cluster-name <aks-cluster-name> --resource-group <aks-resource-group> --cluster-type managedClusters

Note

--auto-upgrade-mode parametresi , patchveya compatible'yi desteklernone. kullanarak --versionbelirli bir uzantı sürümünü sabitlemek için olarak noneayarlayın--auto-upgrade-mode.

Azure Container Registry erişimi

Özel Azure Container Registry (ACR) görüntüleri çekmek için uzantı yönetilen kimliğini veya Kubernetes görüntü çekme gizli dizisini kullanın.

Uzantı yönetilen kimliğini kullanma

AcrPull Uzantı için oluşturulan yönetilen kimliğe rol verin. Bu rol, uzantının sanal düğümlerinde çalışan tüm podlara fazladan pod yapılandırması olmadan kayıt defterinden görüntü çekme erişimi verir. Kayıt defterinde rol atamaları oluşturma izniniz olmalıdır.

Uzantı yönetilen kimliğinin asıl kimliğini alın:

$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

Kapsayıcı kayıt defterinin kaynak kimliğini alın:

$acrId = az acr show --name <acr-name> --resource-group <acr-resource-group> --query id --output tsv

AcrPull Rolü kayıt defteri kapsamında uzantı yönetilen kimliğine atayın:

az role assignment create --assignee-object-id $extensionPrincipalId --assignee-principal-type ServicePrincipal --role AcrPull --scope $acrId

Kayıt defterinden görüntü çeken iş yüklerini dağıtmadan önce rol atamasının yayılması için birkaç dakika bekleyin.

Görüntü çekme gizli dizisi kullanma

Yönergeler için bkz. ACR Kimlik Doğrulaması için Kubernetes Çekme Gizli Dizisi.

Sanal Düğümlere iş yükü dağıtma v2

Düğüm seçicisini ve virtual-kubelet.io/provider toleransı virtualization: virtualnode2 kullanarak sanal düğümlerdeki podları zamanlayın:

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

Bildirimi olarak demo.yamlkaydedin ve uygulayın.

kubectl apply -f demo.yaml

Podların çalıştığını doğrulayın.

kubectl get pods -l app=demo -o wide

Sanal Düğümleri devre dışı bırakma v2

Warning

Sanal düğüm uzantısını devre dışı bırakdığınızda AKS kümesinin, Azure Container Instances kapsayıcı gruplarının yedekleme bağlantısını keser. Çalışmaya devam eden ve ücret yansıtan yalnız bırakılmış örnekleri önlemek için, uzantıyı devre dışı bırakmadan önce sanal düğümde çalışan tüm iş yüklerini silin.

Uzantıyı silin ve sanal düğüm kaynaklarını temizleyin.

az k8s-extension delete \
    --name <extension-name> \
    --cluster-name <cluster-name> \
    --resource-group <resource-group> \
    --cluster-type managedClusters
kubectl delete node <virtual-node-name>

Sonraki Adımlar