Mit Cluster Autoscaler als Cluster-Add-on arbeiten

Erfahren Sie, wie Sie Kubernetes Cluster Autoscaler als Cluster-Add-on installieren, konfigurieren und verwenden, um die Größe der verwalteten Knotenpools in einem Cluster, das Sie mit Kubernetes Engine (OKE) erstellt haben, automatisch zu ändern.

Wenn Sie Kubernetes Cluster Autoscaler als Cluster-Add-on (das "Cluster Autoscaler-Add-on") anstelle eines Standalone-Programms verwenden, werden Konfiguration und laufende Wartung vereinfacht. Einfacher geht's:

  • Cluster Autoscaler aktivieren oder deaktivieren
  • Aktivieren und deaktivieren Sie automatische Updates von Oracle.
  • Wählen Sie Cluster Autoscaler-Add-on-Versionen aus.
  • Add-on-spezifische Anpassungen mit genehmigten Konfigurationsargumenten für Schlüssel/Wert-Paare verwalten

In diesen Abschnitten wird beschrieben, wie Sie mit dem Cluster Autoscaler-Add-on Knotenpools verwalten:

Cluster Autoscaler-Add-on bereitstellen

Schritt 1: Instanz-Principal oder Workload Identity Principal einrichten, um dem Cluster Autoscaler-Add-on den Zugriff auf Knotenpools zu ermöglichen

Zur Verwaltung von Knotenpools führt Kubernetes Cluster Autoscaler Aktionen für andere Oracle Cloud Infrastructure-Serviceressourcen aus. Um diese Aktionen für OCI-Serviceressourcen auszuführen, verwendet Kubernetes Cluster Autoscaler die Zugangsdaten eines autorisierten Akteurs (oder Principals). Sie können derzeit die folgenden Principal-Typen einrichten, damit Kubernetes Cluster Autoscaler Aktionen für OCI-Serviceressourcen ausführen kann:

  • Instanz-Principal: Kubernetes Cluster Autoscaler verwendet die Identität der Instanz, auf der sie ausgeführt wird.
  • Workload-Identity Principal: Kubernetes Cluster Autoscaler verwendet die Identität einer Workload-Ressource, die auf einem Kubernetes-Cluster ausgeführt wird.

Beachten Sie die Verwendung von Workload Identity Principals, damit Kubernetes Cluster Autoscaler auf OCI-Services und -Ressourcen zugreifen kann:

  • wird durch erweiterte Cluster unterstützt, jedoch nicht durch einfache Cluster.
  • wird nur mit Cluster Autoscaler Version 1.26 (oder höher) unterstützt

Mit Instanz-Principals das Cluster Autoscaler-Add-on für den Zugriff auf Knotenpools aktivieren

Sie können einen Instanz-Principal einrichten, damit Kubernetes Cluster Autoscaler Aktionen für OCI-Serviceressourcen ausführen kann.

So richten Sie einen Instanz-Principal ein:

  1. Melden Sie sich in der Konsole an.
  2. Erstellen Sie eine neue dynamische Gruppe auf Compartment-Ebene, die die Worker-Knoten (Compute-Instanzen) im Cluster enthält:

    1. Öffnen Sie das Navigationsmenü , und wählen Sie Identität und Sicherheit aus. Wählen Sie unter Identität die Option Domains aus. Wählen Sie unter Identitätsdomain die Option Dynamische Gruppen aus.
    2. Wählen Sie das Compartment aus, das das Cluster enthält.
    3. Befolgen Sie die Anweisungen unter So erstellen Sie eine dynamische Gruppe, und geben Sie der dynamischen Gruppe einen Namen (Beispiel: acme-oke-cluster-autoscaler-dyn-grp).
    4. Geben Sie eine Regel, die die Worker-Knoten im Compartment enthält, in folgendem Format ein:

      ALL {instance.compartment.id = '<compartment-ocid>'}

      Hierbei ist <compartment-ocid> die OCID des Compartments, zu dem das Cluster gehört.

      Beispiel:

      ALL {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaa23______smwa'}
    5. Klicken Sie auf Dynamische Gruppe erstellen.
  3. Erstellen Sie eine Policy, mit der Worker-Knoten die Verwaltung von Knotenpools zulassen können:

    1. Öffnen Sie das Navigationsmenü , und wählen Sie Identität und Sicherheit aus. Wählen Sie unter Identität die Option Policys aus.
    2. Befolgen Sie die Anweisungen unter So erstellen Sie eine Policy, und geben Sie der Policy einen Namen (Beispiel: acme-oke-cluster-autoscaler-dyn-grp-policy).
    3. Geben Sie eine Policy-Anweisung, die Worker-Knoten zum Verwalten von Knotenpools berechtigt (sowie andere Policy-Anweisungen im Zusammenhang mit der Initialisierung von Worker-Knoten), in folgendem Format ein:

      Allow dynamic-group <dynamic-group-name> to manage cluster-node-pools in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to manage instance-family in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to use subnets in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to use vnics in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to inspect compartments in compartment <compartment-name>

      Hierbei gilt:

      • <dynamic-group-name> ist der Name der zuvor erstellten dynamischen Gruppe. Beispiel: acme-oke-cluster-autoscaler-dyn-grp. Wenn eine dynamische Gruppe nicht in der Standardidentitätsdomain enthalten ist, stellen Sie dem Namen der dynamischen Gruppe den Namen der Identitätsdomain im Format dynamic-group '<identity-domain-name>'/'<dynamic-group-name>' voran. Sie können die dynamische Gruppe auch mit ihrer OCID im Format dynamic-group id <dynamic-group-ocid> angeben.
      • <compartment-name> ist der Name des Compartments, zu dem das Cluster gehört. Beispiel: acme-oke-cluster-autoscaler-compartment

      Beispiel:

      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage cluster-node-pools in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage instance-family in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use subnets in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to read virtual-network-family in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use vnics in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to inspect compartments in compartment acme-oke-cluster-autoscaler-compartment
    4. Klicken Sie auf Erstellen, um die neue Policy zu erstellen.
    Hinweis

    Wenn ein Knotenpool zu einem Compartment gehört und die vom Knotenpool verwendeten Netzwerkressourcen zu einem anderen Compartment gehören, müssen Sie Policys wie folgt in beiden Compartments erstellen:

    • Erstellen Sie im Compartment des Knotenpools eine Policy mit Policy-Anweisungen im folgenden Format:

      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage cluster-node-pools in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage instance-family in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use subnets in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use vnics in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to inspect compartments in compartment <nodepool-compartment-name>
    • Erstellen Sie im Compartment der Netzwerkressourcen eine Policy mit Policy-Anweisungen im folgenden Format:

      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use subnets in compartment <network-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to read virtual-network-family in compartment <network-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use vnics in compartment <network-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to inspect compartments in compartment <network-compartment-name>

Beachten Sie, dass Sie vor dem Deployment des Cluster Autoscaler-Add-ons angeben, dass das Cluster Autoscaler-Add-on mit Instanz-Principals auf Knotenpools zugreifen soll, indem Sie den Parameter authType in der Konfigurationsdatei auf instance setzen. Siehe Schritt 2: Cluster Autoscaler-Add-on-Konfigurationsdatei erstellen.

Workload Identity Principals verwenden, um dem Cluster Autoscaler-Add-on den Zugriff auf Knotenpools zu ermöglichen

Sie können einen Workload Identity Principal einrichten, damit Kubernetes Cluster Autoscaler Aktionen für OCI-Serviceressourcen ausführen kann. Beachten Sie, dass Sie nur Workload-Identity Principals mit erweiterten Clustern verwenden können.

So richten Sie einen Workload Identity Principal ein:

  1. Rufen Sie die OCID des Clusters ab (z.B. mit der Registerkarte Clusterdetails in der Konsole).
  2. Öffnen Sie das Navigationsmenü , und wählen Sie Identität und Sicherheit aus. Wählen Sie unter Identität die Option Policys aus.
  3. Folgen Sie den Anweisungen unter Policy erstellen, und geben Sie der Policy einen Namen (z.B. acme-oke-cluster-autoscaler-policy).
  4. Geben Sie Policy-Anweisungen in folgendem Format ein, um die Knotenpoolverwaltung zuzulassen:

    Allow any-user to manage cluster-node-pools in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to manage instance-family in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use subnets in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to read virtual-network-family in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use vnics in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to inspect compartments in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'} 

    Hierbei gilt:

    • <compartment-name> ist der Name des Compartments, zu dem das Cluster gehört. Beispiel: acme-oke-cluster-autoscaler-compartment
    • <cluster-ocid> ist die OCID des Clusters, die Sie zuvor abgerufen haben.

    Beispiel:

    Allow any-user to manage cluster-node-pools in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to manage instance-family in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to use subnets in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to read virtual-network-family in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to use vnics in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to inspect compartments in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'} 
  5. Klicken Sie auf Erstellen, um die neue Policy zu erstellen.
Hinweis

Wenn ein Knotenpool zu einem Compartment gehört und die vom Knotenpool verwendeten Netzwerkressourcen zu einem anderen Compartment gehören, müssen Sie Policys wie folgt in beiden Compartments erstellen:

  • Erstellen Sie im Compartment des Knotenpools eine Policy mit Policy-Anweisungen im folgenden Format:

    Allow any-user to manage cluster-node-pools in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to manage instance-family in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use subnets in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use vnics in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to inspect compartments in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'} 
  • Erstellen Sie im Compartment der Netzwerkressourcen eine Policy mit Policy-Anweisungen im folgenden Format:

    Allow any-user to use subnets in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to read virtual-network-family in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use vnics in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to inspect compartments in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'} 

Beachten Sie, dass Sie vor dem Deployment des Cluster Autoscaler-Add-ons angeben, dass das Cluster Autoscaler-Add-on mit Workload Identity Principals auf Knotenpools zugreifen soll, indem Sie den Parameter authType in der Konfigurationsdatei auf workload setzen. Siehe Schritt 2: Cluster Autoscaler-Add-on-Konfigurationsdatei erstellen.

Schritt 2: Erstellen Sie die Cluster Autoscaler Add-on-Konfigurationsdatei

Hinweis

In diesen Anweisungen wird beschrieben, wie Sie eine Cluster Autoscaler-Add-on-Konfigurationsdatei erstellen, damit Sie das Cluster Autoscaler-Add-on mit der CLI bereitstellen können. Die Konfigurationsdatei enthält genehmigte Konfigurationsargumente für Schlüssel/Wert-Paare. Sie müssen eine Konfigurationsdatei erstellen, wenn Sie das Add-on über die CLI (oder über die API) bereitstellen. Sie können das Cluster Autoscaler-Add-on auch über die Konsole bereitstellen. In diesem Fall geben Sie Konfigurationsargumente in der UI an. Weitere Informationen zum Deployment des Cluster Autoscaler-Add-ons mit der Konsole finden Sie unter Cluster-Add-on installieren.

Schritt 2a: Erstellen Sie die Konfigurationsdatei

  1. Erstellen Sie in einem geeigneten Editor eine JSON-Datei mit einem Namen Ihrer Wahl (bei diesen Anweisungen wird davon ausgegangen, dass die Datei cluster-autoscaler-add-on.json heißt), die Folgendes enthält:

    {
      "addonName": "ClusterAutoscaler",
      "configurations": [
        {
          "key": "nodes",
          "value": "1:5:{{ node pool ocid 1 }}"
        }
      ]
    }
  2. Speichern Sie die erstellte Datei cluster-autoscaler-add-on.json.

Schritt 2b: Geben Sie die zu verwaltenden Knotenpools an

Geben Sie in der von Ihnen erstellten Datei cluster-autoscaler-add-on.json die Knotenpools des Clusters an, die von Kubernetes Cluster Autoscaler verwaltet werden sollen.

Sie können angeben, dass Kubernetes Cluster Autoscaler einen einzelnen oder mehrere Knotenpools verwalten soll. Es wird empfohlen, immer mindestens einen Knotenpool zu verwenden, der nicht von Kubernetes Cluster Autoscaler verwaltet wird, um kritische Cluster-Add-ons auszuführen, und sicherzustellen, dass Kubernetes Cluster Autoscaler die Knoten, auf denen er ausgeführt wird, nicht herunterskaliert. Beachten Sie, dass Sie für die manuelle Skalierung der Knotenpools verantwortlich sind, die Sie in der Konfigurationsdatei nicht angegeben haben.

Sie geben die Knotenpools an, die Kubernetes Cluster Autoscaler auf zwei Arten verwalten soll:

  • Sie können jeden zu verwaltenden Knotenpool explizit mit dem Parameter nodes angeben, um die OCID jedes Knotenpools anzugeben.
  • Sie können angeben, dass Kubernetes Cluster Autoscaler ermitteln soll, welcher Knotenpool (oder welche Knotenpools) verwaltet werden soll. Verwenden Sie dazu den Parameter nodeGroupAutoDiscovery, um die abzugleichenden Tags anzugeben. Sie können sowohl definierte Tags als auch Freiformtags angeben (weitere Informationen zum Hinzufügen von Tags zu Knotenpools finden Sie unter Tags auf Knotenpools anwenden). Kubernetes Cluster Autoscaler verwaltet Knotenpools mit Tags, die mit den von Ihnen angegebenen Tags übereinstimmen. Beachten Sie, dass der Parameter nodeGroupAutoDiscovery mit Cluster Autoscaler Version 1.30.3, Version 1.31.1 und Version 1.32.0 und höher unterstützt wird.

Beachten Sie, dass Sie nicht sowohl den Parameter nodes als auch den Parameter nodeGroupAutoDiscovery in derselben Datei cluster-autoscaler-add-on.json angeben können. Die beiden Parameter schließen sich gegenseitig aus.

So geben Sie mit dem Parameter nodes explizit an, welche Knotenpools verwaltet werden sollen:

  1. Suchen Sie in der Datei cluster-autoscaler-add-on.json die folgenden Vorlagenzeilen:

          "key": "nodes",
          "value": "1:5:{{ node pool ocid 1 }}"

    Der Parameterwert nodes hat das folgende Format:

    "value": "<min-nodes>:<max-nodes>:<nodepool-ocid>"

    Hierbei gilt:

    • <min-nodes> ist die minimale Anzahl von Knoten, die im Knotenpool zulässig sind. Kubernetes Cluster Autoscaler reduziert die Anzahl der Knoten nicht unter diese Zahl.
    • <max-nodes> ist die maximale Anzahl von Knoten, die im Knotenpool zulässig sind. Kubernetes Cluster Autoscaler erhöht die Anzahl der Knoten nicht über diese Zahl. Stellen Sie sicher, dass die angegebene maximale Anzahl von Knoten die Mandantengrenzwerte für die für den Knotenpool definierte Worker-Knotenausprägung nicht überschreitet.
    • <nodepool-ocid> ist die OCID des zu verwaltenden Knotenpools.
  2. Ändern Sie den Wert des Parameters nodes, um:

    • Die minimale Anzahl von Knoten, die im Knotenpool zulässig sind. Beispiel: 1.
    • Die maximale Anzahl von Knoten, die im Knotenpool zulässig sind. Beispiel: 5.
    • Die OCID des Knotenpools, der von Kubernetes Cluster Autoscaler verwaltet werden soll.

    Beispiel:

          "key": "nodes",
          "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq"
  3. Wenn Kubernetes Cluster Autoscaler einen zweiten Knotenpool im Cluster verwalten soll, hängen Sie die entsprechenden Details für den zweiten Knotenpool an den Wert des Parameters nodes an. Beispiel:
          "key": "nodes",
          "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq, 1:5:ocid1.nodepool.oc1.iad.aaaaaaaaah____bzr"
  4. Wenn Kubernetes Cluster Autoscaler weitere Knotenpools verwalten soll, hängen Sie die entsprechenden Details an den Wert des Parameters nodes an.
  5. Speichern Sie die Datei cluster-autoscaler-add-on.json.

So geben Sie mit dem Parameter nodeGroupAutoDiscovery an, dass Kubernetes Cluster Autoscaler ermitteln soll, welche Knotenpools verwaltet werden sollen:

  1. Suchen Sie in der erstellten Datei cluster-autoscaler-add-on.json die folgenden Vorlagenzeilen:

          "key": "nodes",
          "value": "1:5:{{ node pool ocid 1 }}"
  2. Löschen Sie die Zeilen, die den Parameter nodes angeben, und ersetzen Sie sie durch die folgenden Zeilen:

          "key": "nodeGroupAutoDiscovery",
          "value": "compartmentId:{{ compartment ocid }},nodepoolTags:{{ tagKey1 }}={{ tagValue1 }}&{{ tagKey2 }}={{ tagValue2 }},min:{{ min }},max:{{ max }}"

    Der Parameterwert nodeGroupAutoDiscovery hat das folgende Format:

    "value": "compartmentId:{{<compartment-ocid>}},nodepoolTags:{{<tagKey1>}}={{<tagValue1>}}&{{<tagKey2>}}={{<tagValue2>}},min:{{<min-nodes>}},max:{{<max-nodes>}}"

    Hierbei gilt:

    • <compartment-ocid> ist die OCID des Compartments, in dem sich der Knotenpool befindet.
    • {{<tagKey1>}}={{<tagValue1>}} gibt den Namen des ersten übereinstimmenden Tags und den Wert dieses Tags an.
    • {{<tagKey2>}}={{<tagValue2>}} gibt optional den Namen eines zweiten Tags für den Abgleich und den Wert dieses Tags für den Abgleich an. Sie können beliebig viele Tags angeben (Sie sind nicht auf zwei beschränkt). Wenn Sie mehrere Tags angeben, müssen alle Tags übereinstimmen.
    • <min-nodes> ist die minimale Anzahl von Knoten, die im Knotenpool zulässig sind. Kubernetes Cluster Autoscaler reduziert die Anzahl der Knoten nicht unter diese Zahl.
    • <max-nodes> ist die maximale Anzahl von Knoten, die im Knotenpool zulässig sind. Kubernetes Cluster Autoscaler erhöht die Anzahl der Knoten nicht über diese Zahl. Stellen Sie sicher, dass die angegebene maximale Anzahl von Knoten die Mandantengrenzwerte für die für den Knotenpool definierte Worker-Knotenausprägung nicht überschreitet.
  3. Ändern Sie den Wert des Parameters nodeGroupAutoDiscovery, um Folgendes anzugeben:

    • Die OCID des Compartments, in dem sich der Knotenpool befindet.
    • Mindestens ein übereinstimmender Tagname und Tagwert.
    • Die minimale Anzahl von Knoten, die im Knotenpool zulässig sind. Beispiel: 1.
    • Die maximale Anzahl von Knoten, die im Knotenpool zulässig sind. Beispiel: 5.

    Beispiel:

          "key": "nodeGroupAutoDiscovery",
          "value": "compartmentId:ocid1.compartment.oc1..aaaaaaaa______t7a,nodepoolTags:managedby=ca,min:1,max:5"
  4. Wenn Kubernetes Cluster Autoscaler weitere Knotenpools, in verschiedenen Compartments oder mit unterschiedlichen Tagnamen und Tagwerten oder mit unterschiedlicher Mindest- und Höchstanzahl zulässiger Knoten verwalten soll, hängen Sie die entsprechenden Details an den Wert des Parameters nodeGroupAutoDiscovery an, getrennt durch ein Semikolon.

    Beispiel:

          "key": "nodeGroupAutoDiscovery",
          "value": "compartmentId:ocid1.compartment.oc1..aaaaaaaa______t7a,nodepoolTags:managedby=ca,min:1,max:5;compartmentId:ocid1.compartment.oc1..aaaaaaaa______jyv,nodepoolTags:managedby=ca,min:2,max:6"
  5. Speichern Sie die Datei cluster-autoscaler-add-on.json.

Schritt 2c: Zusätzliche Konfigurationseinstellungen einschließen

  1. Geben Sie in der von Ihnen erstellten Datei cluster-autoscaler-add-on.json mit dem Parameter authType an, wie Sie Kubernetes Cluster Autoscaler für den Zugriff auf OCI-Services und -Ressourcen eingerichtet haben:

    • Wenn Sie einen Instanz-Principal eingerichtet haben, damit Kubernetes Cluster Autoscaler auf OCI-Services und -Ressourcen zugreifen kann, setzen Sie den Parameter authType auf instance.
    • Wenn Sie einen Workload Identity Principal eingerichtet haben, damit Kubernetes Cluster Autoscaler auf OCI-Services und -Ressourcen zugreifen kann, setzen Sie den Parameter authType auf workload.

    Beispiel:

          "key": "authType",
          "value": "workload"

    Beachten Sie, dass instance der Standardwert des Parameters authType ist. Wenn Sie also keinen Wert für authType explizit angeben, verwendet Kubernetes Cluster Autoscaler die Identität der Instanz, auf der er ausgeführt wird, für den Zugriff auf OCI-Services und -Ressourcen. Weitere Informationen finden Sie unter Schritt 1: Instanz-Principal oder Workload Identity Principal einrichten, um dem Cluster Autoscaler-Add-on den Zugriff auf Knotenpools zu ermöglichen.

  2. Geben Sie in der von Ihnen erstellten Datei cluster-autoscaler-add-on.json weitere Parameter für Kubernetes Cluster Autoscaler an. Informationen zu den Parametern, die Sie festlegen können, finden Sie unter Unterstützte Kubernetes Cluster Autoscaler-Parameter.

    Beispiel:

    {
      "configurations": [
        {
          "key": "nodes",
          "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq, 1:5:ocid1.nodepool.oc1.iad.aaaaaaaaah____bzr"
        },
        {
          "key": "authType",
          "value": "workload"
        },
        {
          "key": "numOfReplicas",
          "value": "1"
        },
        {
          "key": "maxNodeProvisionTime",
          "value": "15m"
        },
        {
          "key": "scaleDownDelayAfterAdd",
          "value": "15m"
        },
        {
          "key": "scaleDownUnneededTime",
          "value": "10m"
        },
        {
          "key": "annotations",
          "value": "{\"prometheus.io/scrape\":\"true\",\"prometheus.io/port\":\"8086\"}"
        }
      
  3. Speichern und schließen Sie die Datei cluster-autoscaler-add-on.json.

Schritt 3: Cluster Autoscaler-Add-on im Cluster bereitstellen und erfolgreiches Deployment bestätigen

Hinweis

In diesen Anweisungen wird beschrieben, wie Sie das Cluster Autoscaler-Add-on über die CLI und eine Konfigurationsdatei bereitstellen. Sie können das Add-on auch über die Konsole und die API bereitstellen. Weitere Informationen finden Sie unter Cluster-Add-on installieren.

  1. Falls noch nicht geschehen, führen Sie die Schritte zum Einrichten der kubeconfig-Konfigurationsdatei des Clusters aus, und legen Sie (gegebenenfalls) die Umgebungsvariable KUBECONFIG so fest, dass sie auf die Datei verweist. Beachten Sie, dass Sie Ihre eigene kubeconfig-Datei einrichten müssen. Sie können nicht mit einer kubeconfig-Datei, die von einem anderen Benutzer eingerichtet wurde, auf ein Cluster zugreifen. Siehe Clusterzugriff einrichten.
  2. Vergewissern Sie sich, dass das Cluster Autoscaler-Add-on noch nicht auf dem Cluster installiert wurde, indem Sie Folgendes eingeben:
    oci ce cluster list-addons --cluster-id <cluster-ocid>

    Dabei ist <cluster-ocid> die OCID des Clusters, auf dem Sie das Cluster Autoscaler-Add-on bereitstellen möchten.

  3. Stellen Sie das Cluster Autoscaler-Add-on im Cluster bereit, indem Sie folgenden Befehl eingeben:

    oci ce cluster install-addon --addon-name ClusterAutoscaler --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    Hierbei gilt:

    • --cluster-id <cluster-ocid> ist die OCID des Clusters, in dem Sie das Cluster Autoscaler-Add-on bereitstellen möchten.
    • --from-json file://<path-to-config-file> gibt den Speicherort der Cluster Autoscaler-Add-on-Konfigurationsdatei an, die beim Deployment des Add-ons verwendet werden soll. Beispiel: --from-json file://./cluster-autoscaler-add-on.json

    Beispiel:

    oci ce cluster install-addon --addon-name ClusterAutoscaler --from-json file://./cluster-autoscaler-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr

    Eine Arbeitsanforderung wird erstellt, um die Kubernetes-Ressourcen zu installieren, die für Kubernetes Cluster Autoscaler im Cluster erforderlich sind.

  4. Optional: Zeigen Sie den Status der Kubernetes Cluster Autoscaler-Pods an, um den Fortschritt des Deployments zu beobachten, indem Sie Folgendes eingeben:
    kubectl get pods -n kube-system | grep cluster-autoscaler
  5. Zeigen Sie die Kubernetes Cluster Autoscaler-Logs an, um zu bestätigen, dass das Add-on erfolgreich bereitgestellt wurde und derzeit die Workload von Knotenpools im Cluster überwacht, indem Sie Folgendes eingeben:
    kubectl -n kube-system logs -f deployment.apps/cluster-autoscaler

Schritt 4: Skalierungsvorgang anzeigen

Sie können den bereitgestellten Kubernetes Cluster Autoscaler beobachten, wenn er Worker-Knoten automatisch in einem Knotenpool skaliert. Um den Skalierungsvorgang transparenter zu gestalten, können Sie die folgenden Vorschläge berücksichtigen. (Beachten Sie, dass diese nur zu Beobachtungszwecken dienen und möglicherweise im Widerspruch zu den Empfehlungen unter Empfehlungen für die Verwendung von Kubernetes Cluster Autoscaler in Produktionsumgebungen stehen):

  • Beobachten Sie ein Cluster mit einem einzelnen Knotenpool (dem Knotenpool, der von Kubernetes Cluster Autoscaler verwaltet wird).
  • Wenn das zu beobachtende Cluster mehr als einen Knotenpool aufweist, beschränken Sie die Ausführung der Pods auf Knoten in dem einzelnen Knotenpool, der von Kubernetes Cluster Autoscaler verwaltet wird. Siehe Pods zu Knoten zuweisen in der Kubernetes-Dokumentation.
  • Beginnen Sie mit einem Knoten im Knotenpool, der von Kubernetes Cluster Autoscaler verwaltet wird.
  • In der Kubernetes Cluster Autoscaler-Konfigurationsdatei geben Sie die maximale Anzahl von Knoten an, die im Knotenpool zulässig sind. Stellen Sie sicher, dass die angegebene maximale Anzahl von Knoten den Mandantengrenzwert für die für den Knotenpool definierte Worker-Knotenausprägung nicht überschreitet.

So zeigen Sie Kubernetes Cluster Autoscaler bei der automatischen Skalierung der Worker-Knoten an:

  1. Stellen Sie die aktuelle Gesamtanzahl der Worker-Knoten im Cluster fest, indem Sie Folgendes eingeben:
    kubectl get nodes
  2. Definieren Sie eine Nginx-Beispielanwendung, indem Sie in einem Texteditor eine Datei namens nginx.yaml mit dem folgenden Inhalt erstellen:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
            resources:
              requests:
                memory: "500Mi"

    Beachten Sie, dass ein Ressourcenanforderungsgrenzwert festgelegt wurde.

  3. Stellen Sie die Beispielanwendung bereit, indem Sie Folgendes eingeben:
    kubectl create -f nginx.yaml
  4. Erhöhen Sie die Anzahl der Pods im Deployment auf 100 (von 2), indem Sie Folgendes eingeben:
    kubectl scale deployment nginx-deployment --replicas=100

    Kubernetes Cluster Autoscaler fügt dem Knotenpool jetzt Worker-Knoten hinzu, um die erhöhten Workload-Anforderungen zu erfüllen.

  5. Beobachten Sie den Status des Deployments, indem Sie Folgendes eingeben:
    kubectl get deployment nginx-deployment --watch
  6. Nach ein paar Minuten können Sie die erhöhte Gesamtanzahl der Worker-Knoten im Cluster anzeigen, indem Sie Folgendes eingeben:
    kubectl get nodes

    Hinweis: Die Anzahl der angezeigten Worker-Knoten hängt von der Worker-Knotenausprägung und von der maximalen Anzahl der Knoten ab, die in der Kubernetes Cluster Autoscaler-Konfigurationsdatei angegeben ist.

Schritt 5: Bereinigung durchführen

  1. Löschen Sie die Nginx-Beispielanwendung, indem Sie Folgendes eingeben:
    kubectl delete deployment nginx-deployment
  2. Nach zehn Minuten können Sie prüfen, ob die Worker-Knoten auf die ursprüngliche Anzahl reduziert wurden, indem Sie Folgendes eingeben:
    kubectl get nodes

Hinweis: Nachdem Sie die Nginx-Beispielanwendung gelöscht und gewartet haben, werden möglicherweise weniger Worker-Knoten angezeigt, wobei die Anzahl immer noch über der ursprünglichen Anzahl liegt. Dies liegt wahrscheinlich daran, dass die Ausführung der kube-system-Pods auf diesen Knoten geplant war. Kube-system-Pods können verhindern, dass Kubernetes Cluster Autoscaler Knoten entfernt, weil der Parameter skip-nodes-with-system-pods des Autoscalers standardmäßig auf true gesetzt ist.

Cluster Autoscaler-Add-on aktualisieren

Hinweis

In diesen Anweisungen wird beschrieben, wie Sie das Cluster Autoscaler-Add-on über die CLI und eine Konfigurationsdatei aktualisieren. Sie können das Add-on auch über die Konsole und die API aktualisieren. Weitere Informationen finden Sie unter Cluster-Add-on aktualisieren.

  1. Öffnen Sie die Cluster Autoscaler-Add-on-Konfigurationsdatei in einem geeigneten Editor

  2. Fügen Sie Konfigurationsparameter in der Konfigurationsdatei nach Bedarf hinzu, entfernen oder ändern Sie sie. Informationen zu den Parametern, die Sie festlegen können, finden Sie unter Unterstützte Kubernetes Cluster Autoscaler-Parameter.

  3. Aktualisieren Sie das Cluster Autoscaler-Add-on mit dem Befehl oci ce cluster update-addon, indem Sie Folgendes eingeben:
    oci ce cluster update-addon --addon-name ClusterAutoscaler --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    Hierbei gilt:

    • --cluster-id <cluster-ocid> ist die OCID des Clusters, in dem Sie das Cluster Autoscaler-Add-on aktualisieren möchten.
    • --from-json file://<path-to-config-file> gibt den Speicherort der Cluster Autoscaler-Add-on-Konfigurationsdatei an, die beim Aktualisieren des Add-ons verwendet werden soll. Beispiel: --from-json file://./cluster-autoscaler-add-on.json

    Beispiel:

    oci ce cluster update-addon --addon-name ClusterAutoscaler --from-json file://./cluster-autoscaler-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr

    Eine Arbeitsanforderung wird erstellt, um die Kubernetes-Ressourcen zu aktualisieren, die für Kubernetes Cluster Autoscaler erforderlich sind.

  4. Optional: Zeigen Sie den Status der Kubernetes Cluster Autoscaler-Pods an, um den Fortschritt zu beobachten, indem Sie Folgendes eingeben:
    kubectl get pods -n kube-system | grep cluster-autoscaler

Cluster Autoscaler-Add-on deaktivieren (und entfernen)

Hinweis

In diesen Anweisungen wird beschrieben, wie Sie das Cluster Autoscaler-Add-on über die CLI und eine Konfigurationsdatei deaktivieren und entfernen. Sie können das Add-on auch über die Konsole und die API aktualisieren. Weitere Informationen finden Sie unter Cluster-Add-on deaktivieren (und entfernen).

  1. Deaktivieren (und optional entfernen) Sie das Cluster Autoscaler-Add-on mit dem Befehl oci ce cluster disable-addon, indem Sie Folgendes eingeben:

    oci ce cluster disable-addon --addon-name ClusterAutoscaler --cluster-id <cluster-ocid> --is-remove-existing-add-on <true|false>

    Hierbei gilt:

    • --cluster-id <cluster-ocid> ist die OCID des Clusters, in dem Sie das Cluster Autoscaler-Add-on deaktivieren (und optional entfernen) möchten.
    • --is-remove-existing-add-on <true|false> gibt an, dass das Cluster Autoscaler-Add-on entweder vollständig entfernt werden soll (wenn es auf true gesetzt ist) oder dass das Add-on nicht entfernt werden soll, sondern einfach deaktiviert und nicht verwendet werden soll (wenn es auf false gesetzt ist). Wenn Sie das Add-on deaktivieren, aktualisiert Oracle es nicht mehr automatisch, wenn neue Versionen verfügbar sind.

    Beispiel:

    oci ce cluster disable-addon --addon-name ClusterAutoscaler --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr --is-remove-existing-add-on true

    Eine Arbeitsanforderung wird erstellt, um Kubernetes Cluster Autoscaler zu deaktivieren (und optional zu entfernen).

  2. Optional: Zeigen Sie den Status der Kubernetes Cluster Autoscaler-Pods an, um den Fortschritt zu beobachten, indem Sie Folgendes eingeben:
    kubectl get pods -n kube-system | grep cluster-autoscaler