Küme için düğüm havuzlarını yönetme (Azure Stack HCI 23H2 üzerinde AKS)

Şunlar için geçerlidir: Azure Stack HCI, sürüm 23H2

Not

Azure Stack HCI 22H2 üzerinde AKS'de düğüm havuzlarını yönetme hakkında bilgi için bkz. Düğüm havuzlarını yönetme.

Azure Arc tarafından etkinleştirilen AKS'de, aynı yapılandırmaya ait düğümler düğüm havuzları halinde gruplandırılır. Bu düğüm havuzları, uygulamalarınızı çalıştıran temel vm'leri içerir. Bu makalede AKS Arc'ta bir küme için düğüm havuzları oluşturma ve yönetme gösterilmektedir.

Kubernetes kümesi oluşturma

Başlamak için tek düğümlü havuza sahip bir Kubernetes kümesi oluşturun:

az aksarc create -n <cluster name> -g <resource group> --custom-location <custom location Id> --vnet-ids <vnet id> --generate-ssh-keys --load-balancer-count <load balancer count>

Düğüm havuzu ekleme

komutunu kullanarak az aksarc nodepool add mevcut kümeye düğüm havuzu ekleyebilirsiniz. Düğüm havuzunun adının mevcut düğüm havuzuyla aynı ad olmadığından emin olun:

az aksarc nodepool add --name <node pool name> -g <resource group> --cluster-name <cluster name> --os-sku <Linux or Windows> --node-count <count> --node-vm-size <vm size>

Düğüm havuzu için yapılandırma bilgilerini alma

Düğüm havuzlarınızın yapılandırmasını görmek için komutunu az aksarc nodepool show kullanın:

az aksarc nodepool show --cluster-name <cluster name> -n <node pool name> -g <resource group>

Örnek çıktı:

{
"availabilityZones": null,
"count": 1,
"extendedLocation": null,
"id":
"/subscriptions/&lt;subscription&gt;/resourceGroups/edgeci-registration-rr1s46r1710&lt;resource
group&gt;/providers/Microsoft.Kubernetes/connectedClusters/&lt;cluster
name&gt;/providers/Microsoft.HybridContainerService/provisionedClusterInstances/default/agentPools/&lt;nodepoolname&gt;",
"location": "westeurope",
"name": "nodepoolname",
"nodeImageVersion": null,
"osSku": "CBLMariner",
"osType": "Linux",
"provisioningState": "Succeeded",
"resourceGroup": "resourcegroup",
"status": {
  "errorMessage": null,
  "operationStatus": null,
  "readyReplicas": [
   {
    "count": 1,
    "vmSize": "Standard\_A4\_v2"
   }
  ]
},
"systemData": {
…
},
"tags": null,
"type":
"microsoft.hybridcontainerservice/provisionedclusterinstances/agentpools",
"vmSize": "Standard\_A4\_v2"
}

Düğüm havuzuna dağıtılan en fazla pod sayısını belirtme

Küme oluşturma zamanında veya yeni düğüm havuzları oluştururken düğüme dağıtılabilen en fazla pod sayısını yapılandırabilirsiniz. Düğüm havuzlarını oluştururken belirtmezseniz maxPods , düğüm havuzunuz varsayılan değer olarak en fazla 110 pod ile dağıtılır:

az aksarc nodepool add --cluster-name <cluster name> -n <node pool name> -g <resource group> --max-pods 50 --yes

Düğüm havuzunu ölçeklendirme

Düğüm havuzunda düğüm sayısını artırıp azaltabilirsiniz.

Düğüm havuzundaki düğüm sayısını ölçeklendirmek için komutunu kullanın az aksarc nodepool scale . Aşağıdaki örnek, adlı nodepool1bir düğüm havuzunda düğüm sayısını 2'ye ölçeklendirir:

az aksarc nodepool scale --cluster-name <cluster name> -n nodepool1 -g <resource group> --node-count 2 --yes

Düğüm havuzunu silme

Düğüm havuzunu silmeniz gerekiyorsa komutunu kullanın az aksarc nodepool delete :

az aksarc nodepool delete --cluster-name <cluster name> -n <node pool name> -g <resource group> --yes

Düğüm havuzu için renk tonu veya etiket belirtme

Düğüm havuzu oluşturduğunuzda, havuza renk tonları veya etiketler ekleyebilirsiniz. Bir renk tonu veya etiket eklediğinizde, bu düğüm havuzundaki tüm düğümler de bu taint veya etiketi alır.

Önemli

kullanarak az aksarc nodepooldüğüm havuzunun tamamı için düğümlere renk tonları veya etiketler eklemelisiniz. Bir düğüm havuzundaki tek tek düğümlere renk tonları veya etiketler uygulamak için kullanılması kubectl önerilmez.

Düğüm havuzu renk tonlarını ayarlama

  1. komutunu kullanarak az aksarc nodepool add bir taint ile düğüm havuzu oluşturun. Adı taintnp belirtin ve taint için belirtmek sku=gpu:NoSchedule üzere parametresini kullanın--node-taints:

    az aksarc nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name taintnp \
        --node-count 1 \
        --node-taints sku=gpu:NoSchedule \
        --no-wait
    
  2. komutunu kullanarak düğüm havuzunun az aksarc nodepool list durumunu denetleyin:

    az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster
    

    Aşağıdaki örnek çıktı, düğüm havuzunun taintnp belirtilen nodeTaintsile düğümler oluşturduğunu gösterir:

    [
      {
        ...
        "count": 1,
        ...
        "name": "taintnp",
        ...
        "provisioningState": "Succeeded",
        ...
        "nodeTaints":  [
          "sku=gpu:NoSchedule"
        ],
        ...
      },
     ...
    ]
    

Düğümler için zamanlama kurallarını işlemeye yönelik ayrıntılı bilgiler Kubernetes'te görünür. Kubernetes zamanlayıcı, düğümlerde çalıştırılacak iş yüklerini kısıtlamak için renk tonlarını ve toleransları kullanabilir.

  • Bir düğüme yalnızca belirli podların zamanlandığını gösteren bir renk tonu uygulanır.
  • Daha sonra bir düğümün taint'ini "tolere etmelerini" sağlayan bir poda tolerans uygulanır.

Düğüm havuzu toleranslarını ayarlama

Önceki adımda, düğüm havuzunu oluştururken tint'i uyguladınız sku=gpu:NoSchedule . Aşağıdaki örnek YAML bildirimi, Kubernetes zamanlayıcısının bu düğüm havuzundaki bir düğümde NGINX podunu çalıştırmasına izin vermek için bir tolerans kullanır:

  1. nginx-toleration.yaml adlı bir dosya oluşturun ve aşağıdaki örnek YAML'yi kopyalayıp yapıştırın:

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      containers:
      - image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
        name: mypod
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 1
            memory: 2G
      tolerations:
      - key: "sku"
        operator: "Equal"
        value: "gpu"
        effect: "NoSchedule"
    
  2. Komutunu kullanarak podu zamanlayın kubectl apply :

    kubectl apply -f nginx-toleration.yaml
    

    Pod'un zamanlanması ve NGINX görüntüsünün çekilmesi birkaç saniye sürer.

  3. komutunu kullanarak kubectl describe pod durumu denetleyin:

    kubectl describe pod mypod
    

    Aşağıdaki sıkıştırılmış örnek çıktı, toleransın sku=gpu:NoSchedule uygulandığını gösterir. Olaylar bölümünde zamanlayıcı podu düğüme atadımoc-lbeof1gn6x3:

    [...]
    Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                     node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
                     sku=gpu:NoSchedule
    Events:
      Type    Reason     Age    From                Message
      ----    ------     ----   ----                -------
      Normal  Scheduled  54s  default-scheduler   Successfully assigned default/mypod to moc-lbeof1gn6x3
      Normal  Pulling    53s  kubelet             Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
      Normal  Pulled     48s  kubelet             Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 3.025148695s (3.025157609s including waiting)
      Normal  Created    48s  kubelet             Created container
      Normal  Started    48s  kubelet             Started container
    

    Yalnızca bu tolerans uygulanmış podlar içindeki taintnpdüğümlerde zamanlanabilir. Diğer tüm podlar nodepool1 düğüm havuzunda zamanlanır. Daha fazla düğüm havuzu oluşturursanız, bu düğüm kaynaklarında zamanlanacak podları sınırlamak için renk tonlarını ve toleransları kullanabilirsiniz.

Düğüm havuzu etiketlerini ayarlama

Daha fazla bilgi için bkz. Azure Arc özellikli AKS kümesinde etiket kullanma. ::: zone-end

Sonraki adımlar