Zum Hauptinhalt springen

AnyCloudK8s

AnyCloudK8s ist im Self-Service verfügbar. Kubernetes-Cluster können im ix.Portal erstellt, verwaltet und aktualisiert werden.

Voraussetzungen

  • Du hast Zugriff auf den gewünschten Cluster und/oder die passende Subscription im ix.Portal.

Funktionen

  • Erstellen und löschen eines k8s Cluster
  • Cluster Lifecycle
  • Personalisierte Kubeconfig
  • Worker Pools erweitern und verwalten

Erstelle ein k8s Cluster

Beim Erstellen gehst du wie folgt vor. Dein Cluster ist immer an eine Subscription gebunden.

gefahr

Eine Subscription wird im Backend mit einer Default-Quota definiert. Diese kann via generischem Change angepasst werden.

CPU: 150

MEM: 500GB

Bei der Bestellung eines neuen Clusters kann die Bereitstellung bis zu 5 Tage dauern.

Nach der initialen Bereitstellung sind alle weiteren Service-Funktionen vollautomatisiert verfügbar, z.B. Patchen/Updates sowie das Management der Worker Pools (Erweitern, Modifizieren, Verkleinern).

Navigiere links zu Container Service -> AnyCloudK8s. Du siehst die bestehenden Cluster. Für einen neuen Cluster klicke NEW.

Pflichtangaben

  • Cluster Name (max. 46 Zeichen)
  • SLA (Silber, Rhodium)
  • Datacenter Location (St. Gallen, Gais)
  • CNI Kind (cilium, canal) + CNI Version (gemäss Liste)
  • Kubernetes Version (gemäss Liste)
  • Cluster Size (gemäss Liste, Details via ?)
  • Worker Pool ID (Default: Default-[Nummer])
  • Hardware Profile (gemäss Liste)
  • Node Quantity (sichtbar nach Auswahl von Cluster Size)
  • Operating System (gemäss Liste)
Zusammensetzung
Bild: Cluster bestellen

Die restlichen Felder sind Metadaten, wie bei den anderen Services.

Cluster Lifecycle

Im ix.Portal kannst du Cluster selbständig patchen oder upgraden.

important

Du musst immer zuerst die Control Plane aktualisieren - entweder auf eine höhere Patch-Version oder auf eine neue Kubernetes-Minor-Version. Der Worker Pool kann nur auf die gleiche Version aktualisiert werden.

Um einen Cluster zu aktualisieren, editierst du den Cluster: Klicke auf die drei Punkte und wähle "Modify".

Zusammensetzung
Bild: Modify Cluster

Control Plane aktualisieren

Wähle die Control-Plane-Version und speichere. Damit wird nur die Control Plane aktualisiert, den Worker Pool aktualisierst du danach separat, sobald die Control Plane fertig ist.

Zusammensetzung
Bild: Aktualisieren Control Plane

Worker Pool aktualisieren

Im Worker Pool kannst du entweder alle Pools auf eine Kubernetes-Version setzen oder einzelne Pools auf die Control-Plane-Version aktualisieren (Selfservice über "Modify").

  • Alle Pools übernehmen: Bei "Worker Pool Configuration" auf die zwei Pfeile klicken.
  • Einzelne Pools: Im jeweiligen Pool die Kubernetes-Version auswählen.
  • Danach speichern, damit die Änderung übernommen wird.
Zusammensetzung
Bild: Aktualisieren Worker Pool

Personalisierte Kubeconfig

Pro Benutzer steht eine personalisierte Kubeconfig für den direkten Cluster-Zugriff zur Verfügung. Beim Erstellen "CREATE" übernimmt das ix.Portal die Benutzerdaten automatisch, sodass die Kubeconfig eindeutig personalisiert ist.

Nach der Bestellung wird die Kubeconfig einmalig angezeigt. Falls sie verloren geht, kann sie jederzeit erneuert werden.

Navigiere links zu Container Service -> AnyCloudK8s. Du siehst die bestehenden Cluster. Für eine Kubeconfig wähle den entsprechende Cluster aus.

Zusammensetzung
Bild: Personalisierte Kubeconfig

Worker Pools erweitern und verwalten

Voraussetzungen

  • Du hast Zugriff auf den gewünschten Cluster im ix.Portal.
  • Du kennst den Zweck des Pools
  • Für Taints: Deine Workloads müssen bei Bedarf passende Tolerations setzen.
  1. Navigation im ix.Portal

    a) Öffne Container Service -> AnyCloudK8s

    b) Wähle deinen Cluster aus

    c) Modify deinen Cluster (auf die 3 Punkte oben rechts)

    d) Klicke beim gewünschten Pool auf den Pfeil nach unten

  2. Worker Pool modifizieren

    Typische Anpassungen sind z.B. Hardware Profile, Kubernetes-Version (falls verfügbar), Anzahl Node oder weitere Pool-Optionen.

    Vorgehen

    a) Pool auswählen -> Pfeil nach unten (aufklapen)

    b) Gewünschte Werte anpassen

    c) Save

    Warte, bis der Änderungsstatus abgeschlossen ist (Job/Task im Portal)

important

Bei Änderungen des Pools, wird ein Rolling-Verhalten auslösen und kann zu Serviceunterbrüche führen (je nach Resilienz der Applikation).

  1. Worker Pool verkleinern (Scale-down)

    Beim Scale-down werden Worker Nodes aus dem Pool entfernt. Kubernetes versucht dabei, Pods sauber zu verschieben.

    Vorgehen

    a) Pool auswählen -> Pfeil nach unten (aufklapen)

    b) Node Quantity reduzieren (z.B. von 5 auf 4)

    c) Save

    d) Beobachte den Fortschritt, bis die Node entfernt ist

important

Empfehlungen vor dem Scale-down:

  • Prüfe, ob genügend freie Ressourcen im Cluster vorhanden sind.

  • Stelle sicher, dass Deployments mit mehreren Replicas laufen, oder kommuniziere ein Wartungsfenster.

  • Bei zustandsbehafteten Workloads: PDBs, StatefulSets und Storage-Verhalten berücksichtigen.

  1. Taints, Labels oder Annotations pro Worker Pool definieren

    Mit Taints kannst du steuern, welche Pods auf einem Pool laufen dürfen. Ohne passende Toleration werden Pods nicht (oder nur eingeschränkt) dort geplant.

    important

    Beispiele für Taints:

    • dedicated=team-a:NoSchedule (nur Pods mit Toleration dürfen drauf)

    • gpu=true:NoSchedule (GPU-Pool reservieren)

    • maintenance=true:NoExecute (Pods werden entfernt)

    Vorgehen

    a) Pool auswählen -> Pfeil nach unten (aufklapen)

    b) Beim Bereich Labels, Annotation oder Taints auf das plus klicken

    c) Labels

    • Key (z.B ixcloud.ch/key)

    • Value (z.B wert1)

    d) Annotations

    • Key (z.B ixportal.ch/key)

    • Value (z.B wert2)

    e) Taint hinzufügen:

    • Key (z.B. gpu)

    • Value (z.B. true)

    • Effect: NoSchedule, PreferNoSchedule oder NoExecute

    d) Save

Zusammensetzung
Bild: Labels, Annotations und Tains

Troubleshooting (kurz)

  • Pods bleiben Pending: Taint ohne passende Toleration, zu wenig Ressourcen, Node Selector/Affinity passt nicht.
  • Scale-down klappt nicht: PDB blockiert Eviction, Stateful/Persistent Pods lassen sich nicht verschieben, zu wenig freie Kapazität.
  • Unerwartete Verteilung: Prüfe Taints/Tolerations, Affinity/Anti-Affinity, Topology Spread Constraints.