Kubernetes und Private Cloud
Where in the admin: Kubernetes: Infrastructure › Cloud provider › CloudStack › Kubernetes (CKS) (
/infra/cloudstack?tab=k8s), dann Services › Kubernetes (Overview, Clusters, Versions, Policy). Private Cloud: Services › Private Cloud (Overview/vpc, VPC/vpc/list, Plans & pricing/vpc/plans). Schalten Sie beide Module unter System › Admin › License & updates frei.
Funktion
- Kubernetes. Kunden erstellen verwaltete Kubernetes-Cluster auf Ihrem CloudStack mit dem CloudStack Kubernetes Service (CKS). Die Steuerungsebene ist kostenlos; Kunden zahlen für Worker-Knoten. NexCMP erstellt ein separates Netzwerk und eine öffentliche IP für jeden Cluster und hält die Cluster der Kunden getrennt voneinander.
- Private Cloud. Kunden erhalten ein privates Netzwerk (eine CloudStack VPC) mit einem Router, Subnetzen (Tiers), Firewall-Regeln (Network ACLs) und virtuellen Maschinen darin. Der Vertrieb erfolgt nach Bandbreiten-Tarif mit dedizierter, unlimitierter Geschwindigkeit (zum Beispiel 50, 100, 500 Mbps, 1 und 3 Gbps). Standardmäßig kann jeder Kunde eine VPC haben.
Beide basieren auf CloudStack und nutzen dessen API über dieselbe Verbindung.
Anforderungen
Kubernetes
| Komponente | Anforderung |
|---|---|
| CloudStack | 4.23 (getestet). CKS muss aktiviert sein (cloud.kubernetes.service.enabled = true). |
| Konto | Ein Domain Admin-Konto in der dedizierten Domain, damit NexCMP für jeden Kunden ein CloudStack-Projekt und Ressourcenlimits darin erstellen kann. Siehe CloudStack. |
endpoint.url | Die globale CloudStack-Einstellung muss auf Ihre Management-API verweisen, die von den Cluster-VMs aus erreichbar ist. NexCMP zeigt den Wert und das Ergebnis einer Endpunktprüfung an. |
| Versionen | Mindestens ein für Kubernetes unterstützter Versionsbucheintrag mit zugehörigem Binärdateien-ISO im Status Enabled. Versionen, deren Lebensdauer abgelaufen ist, können nicht zum Verkauf angeboten werden. |
| Control-Plane-Angebot | Ein kostenloses Service-Angebot mit genau 2 vCPU, 2048 MB RAM und einem CPU-Cap (limitcpuuse = true), das für das Konto sichtbar ist. Der Server weist alles andere mit cp_offering_invalid zurück. |
| Netzwerk | Ein aktiviertes CKS-fähiges isoliertes Netzwerkangebot. |
| IPs | Kostenlose öffentliche IPv4-Adressen im verkäuflichen Bereich; jedes Cluster verwendet eine. |
| Kapazität | Jedes Cluster kostet Sie 2 bis 4 GB RAM für die Control Plane und eine kleine Router-VM. Behalten Sie die Kapazitäts-Tabs im Auge. |
Private Cloud
| Komponente | Anforderung |
|---|---|
| CloudStack | 4.23 (getestet) mit aktiviertem VPC. |
| VPC-Angebot | Ein VPC-Angebot. Ein Dual-Stack-Angebot versorgt zudem jede Ebene mit einer IPv6-/64-Adresse. |
| Ebenen-Netzwerkangebote | Ein Netzwerkangebot pro Bandbreitenplan, erstellt für VPC, wobei die Netzwerkrate (Mbit/s) dem Plan entspricht, plus ein gesperrtes Angebot von 1 Mbit/s, das angewendet wird, wenn ein VPC wegen ausbleibender Zahlung gesperrt wird. |
| Konto | Das dedizierte Konto (Domain Admin empfohlen). VPC-Netzwerke verbleiben im Konto, nicht in Projekten. |
| IPs | Kostenlose öffentliche IPv4-Adressen (jedes VPC verwendet eine für Source NAT). |
| Adressraum | Jedes VPC erhält ein /16 aus 10.128.0.0/9. Halten Sie diesen Bereich in Ihren eigenen Netzwerken ungenutzt. |
| Abhängig von | CloudStack verbunden; das Modul Private Cloud. |
Infrastruktur vorbereiten
Kubernetes: CKS aktivieren und Versionen hinzufügen
Aktivieren Sie den Service, legen Sie den Endpunkt fest und starten Sie dann den Management-Server neu:
bashcmk update configuration name=cloud.kubernetes.service.enabled value=true cmk update configuration name=endpoint.url value=https://cloudstack.example.com/client/api sudo systemctl restart cloudstack-managementendpoint.urlwird vom Controller des Clusters zurückgerufen, daher muss es sich um eine Adresse handeln, die die Cluster-VMs erreichen können.Erstellen Sie ein Kubernetes-Binärdateien-ISO für die Version, die Sie verkaufen möchten, mit dem Skript
create-kubernetes-binaries-iso.shaus dem CloudStack-Quellbaum, hosten Sie es auf einem Webserver und registrieren Sie es:bashcmk add kubernetessupportedversion name="Kubernetes 1.35.0" semanticversion=1.35.0 \ url=https://files.example.com/setup-v1.35.0-calico-amd64.iso zoneid=<zone-id> \ mincpunumber=2 minmemory=2048 cmk list kubernetessupportedversions filter=name,semanticversion,state,isostateWarten Sie, bis der ISO-Status Ready lautet und die Version auf Enabled steht.
Erstellen Sie das Control-Plane-Angebot, beschränkt auf die NexCMP-Domain:
bashcmk create serviceoffering name=K8S-CP-2-2 displaytext="Kubernetes control plane" \ cpunumber=2 cpuspeed=1000 memory=2048 limitcpuuse=true offerha=false domainid=<domain-id>Überprüfen Sie, ob ein CKS-Netzwerkangebot aktiviert ist:
bashcmk list networkofferings state=Enabled forvpc=false filter=id,name
Private Cloud: Angebote erstellen
In der CloudStack-Benutzeroberfläche (Service Offerings › Network Offerings › Add network offering) oder mit cmk:
Listen Sie auf, was Sie haben:
bashcmk list vpcofferings filter=id,name,state cmk list networkofferings forvpc=true filter=id,name,networkrate,stateVerwenden Sie ein aktiviertes VPC-Angebot (Dual-Stack, falls Sie IPv6 wünschen). Wenn Sie ein neues benötigen, klonen Sie das Standard-VPC-Angebot von CloudStack und aktivieren Sie es.
Erstellen Sie für jeden Bandbreitenplan, den Sie verkaufen, ein Netzwerkangebot für VPC (klonen Sie das Standardangebot „isolated network offering for VPC networks“) und setzen Sie Network rate (Mb/s) auf die Geschwindigkeit des Plans:
50,100,500,1000,3000. Aktivieren Sie jedes Angebot.Erstellen Sie ein weiteres Angebot mit der Netzwerkrate 1 (
VPC-LOCKED-1M) für gesperrte VPCs: Kunden können ihre Server weiterhin über SSH erreichen, aber die Geschwindigkeit ist begrenzt.Notieren Sie die UUID jedes Angebots. NexCMP benötigt diese im nächsten Abschnitt.
Die mitgelieferten Angebots-IDs existieren nicht in Ihrer Cloud
Das Formular für die Private Cloud ist mit Angebots-UUIDs vorab ausgefüllt, die zu einer anderen CloudStack-Installation gehören. Ersetzen Sie jederlei davon durch Ihre eigenen, da sonst die erste VPC-Bestellung fehlschlägt.
In NexCMP verbinden
Kubernetes
Öffnen Sie Infrastructure › Cloud provider › CloudStack und wählen Sie den Tab Kubernetes (CKS). Die rechte Karte CKS status on CloudStack (read-only) zeigt
kubernetesserviceenabled,endpoint.urlmit Endpoint check, das CKS-Netzwerkangebot, diecloud.kubernetes.*-Einstellungen sowie die Liste der ISOs und Versionen. Klicken Sie auf Recheck, nachdem Sie etwas behoben haben.Wählen Sie unter Sales config das Control plane Offering (eine Warnung erscheint, falls es nicht exakt 2 vCPU / 2048 MB / CPU-Limit entspricht), legen Sie Max workers per cluster fest (1 bis 9: CKS erlaubt 10 Nodes einschließlich des Control-Nodes), schalten Sie Enable CKS for this backend ein und klicken Sie auf Save. Der Schalter bleibt deaktiviert, bis ein Angebot ausgewählt wird.

Öffnen Sie Services › Kubernetes › Versions und klicken Sie auf Sync from CloudStack. Schalten Sie Available for new clusters für die Versionen ein, die Sie verkaufen möchten, legen Sie den Standard und optional ein End of life (EOL)-Datum fest.
Öffnen Sie Services › Kubernetes › Policy. Fügen Sie unter Worker plans Pläne mit einem Plan code hinzu (A-Z, 0-9, Bindestrich, bis zu 16 Zeichen). Legen Sie NVMe per worker (GB), Min and max workers sowie die Cluster-Limits fest (aktive Cluster pro Account, Erstellungen pro 24 Stunden, globales Limit, gleichzeitige CKS-Vorgänge). Schalten Sie dann Sell Kubernetes (CKS) ein. Mindestens ein Plan muss zum Verkauf angeboten werden.

Private Cloud
Öffnen Sie Services › Private Cloud (Übersicht). Ersetzen Sie in der Richtlinienkarte VPC offering und Locked offering tier durch Ihre eigenen UUIDs. Überprüfen Sie die Limits (VPCs pro Account, Tiers, VMs und ACL-Regeln pro VPC, erforderliches Guthaben in Stunden der Plangebühr für die Erstellung, Planänderungen pro 24 Stunden, gleichzeitige Operationen, wobei 0 ein Notstopp ist) und die DNS-Server. Klicken Sie auf Save (ein Grund wird abgefragt).

Öffnen Sie Services › Private Cloud › Plans & pricing. Klicken Sie für jeden Plan auf Edit und legen Sie den VND price per month, On sale sowie die UUID des CloudStack tier offering fest, dessen Netzwerkrate der Mbps des Plans entspricht. Die Zeile zeigt Kosten und Gewinn bei Vollauslastung, sodass Sie sehen können, welche Pläne unter Ihren Kosten liegen.

Schalten Sie Sell Private Cloud ein. Um es zuerst zu testen, fügen Sie Test-Account-IDs zu Beta accounts hinzu: Diese Accounts können den Dienst nutzen, während der Verkaufsschalter ausgeschaltet ist.
Verifizierung
- Kubernetes: Die Statuskarte zeigt
kubernetesserviceenabled: true, einen erfolgreichen Endpunkt-Check und eine aktivierte Version. Erstellen Sie als Kunde einen Test-Cluster mit einem Worker; dieser sollte den Status „running“ erreichen undkubectl get nodessollte ihn als bereit anzeigen. Löschen Sie ihn anschließend: Das Netzwerk und die IP gehen zurück in den Pool. - Private Cloud: Erstellen Sie als Testkunde eine VPC mit dem kleinsten Plan. Die VPC wird als aktiv angezeigt, ein Tier erhält sein Subnetz, eine VM im Tier erreicht das Internet über den VPC-Router, und Change plan auf einen größeren Plan greift innerhalb von ca. 20 Sekunden ohne Verbindungsabbrüche.
Grenzwerte und Hinweise
- Kubernetes: Worker werden wie VMs zu den Planpreisen abgerechnet und zählen als VMs in den VM-Limits. Ein Cluster kann aufgrund des CKS-Limits von 10 Nodes höchstens 9 Worker haben.
- Kubernetes: Control Plane, Router und öffentliche IP eines Clusters sind für den Kunden kostenlos; Sie tragen deren Kosten.
- Private Cloud: Alle Pläne sind unmetered (unlimitiert). Die Preise im Formular sind in vietnamesischen Dong pro Monat angegeben; die Kostenspalte verwendet einen Referenzpreis, der nicht Ihrer ist, verwenden Sie daher Ihre eigenen Zahlen.
- Eine gesperrte VPC ist auf 1 Mbps begrenzt, wird nicht abgerechnet und nicht automatisch gelöscht.
- Private Cloud verwendet einen Router pro VPC, kein redundantes Paar. Wenn dessen Host ausfällt, baut CloudStack ihn in wenigen Minuten neu auf.
Fehlerbehebung
| Symptom | Ursache | Behebung |
|---|---|---|
cp_offering_invalid / "Dieses Offering entspricht nicht 2 vCPU / 2048 MB / limitcpuuse" | Das Control-Plane-Offering hat andere Größen oder kein CPU-Limit | Erstellen Sie das Offering wie in Schritt 3 und wählen Sie es erneut aus. |
| Enable CKS-Schalter ist deaktiviert | Kein Control-Plane-Offering ausgewählt | Wählen Sie zuerst eines aus. |
kubernetesserviceenabled: false | CKS ist in CloudStack deaktiviert | Aktivieren Sie es und starten Sie den Verwaltungsserver neu. |
| Endpunktprüfung fehlgeschlagen | endpoint.url ist von den Cluster-VMs aus nicht erreichbar | Legen Sie eine erreichbare URL fest, starten Sie den Verwaltungsserver neu und klicken Sie auf Recheck. |
| "EOL: Kann nicht für den Verkauf aktiviert werden" | Das End-of-Life-Datum der Version ist überschritten | Registrieren Sie eine neuere Version. |
| "Keine Versionen: Klicken Sie auf Sync from CloudStack" | Keine Kubernetes-Version registriert | Registrieren Sie eine Version und synchronisieren Sie diese. |
| "CKS-Backend ist OFF: Kunden können keine Cluster erstellen, selbst wenn das Sales-Flag aktiviert ist" | Der Verkaufsschalter ist an, aber das CKS-Backend ist aus | Aktivieren Sie CKS auf dem CloudStack-Tab. |
| "Mindestens 1 Plan muss im Verkauf sein" | Letzter Worker-Tarif entfernt | Behalten Sie mindestens einen Tarif bei oder schalten Sie den Kubernetes-Verkauf aus. |
| Cluster beim Erstellen hängen geblieben | Nicht genügend Kapazität oder eine fehlende ISO | Überprüfen Sie die Kapazitäts-Tabs und den ISO-Status der Version. |
| Ein neuer VPC schlägt im ersten Schritt fehl | Die VPC-Offering- oder Tier-Offering-ID ist ungültig | Ersetzen Sie jede Offering-UUID durch eine aus Ihrem CloudStack. |
| "cs_offering_id muss eine UUID sein" | Eine Offering-ID ist keine UUID | Fügen Sie die ID aus cmk list networkofferings ein. |
| Tarifänderung fehlgeschlagen | Das neue Tier-Offering existiert nicht oder die Netzwerkrate ist falsch | Überprüfen Sie die Offering-UUID und dessen Netzwerkrate. |