Cluster API (CAPI) na Hetznerju
Vzpostavi Kubernetes clustre z uporabo Cluster API in Hetznerjevega infrastrukturnega ponudnika (CAPH).
En cluster, preproste zahteve? KubeOne je preprostejši: glej, kdaj uporabiti katerega →
Predpogoji
- Nameščen lok8s CLI
- Upravljalni CAPI cluster. Ali pa pusti, da ga
loz nastavitvijomanagementCluster.local: truev specifikaciji ustvari lokalno kot kind cluster (glej vodnik lok8s za CAPI). V vsakem primeru jemanagementCluster.domainobvezen: poimenuje upravljalni cluster,local: truepa le določa, ali ga lok8s ustvari, namesto da bi pričakoval obstoječega. - Nameščen clusterctl
- Hetzner Cloud API žeton, izvožen kot
HCLOUD_TOKEN
Konfiguracija clustra
Ustvari clusters/example.com/cluster.lok8s.yaml s kind: Capi (mapa je poimenovana po tvoji domeni), nato zaženi lo use example.com. Za razliko od KubeOne gonilnik Capi obdrži controlPlane in workers v specifikaciji, ker vire strojev CAPI ustvari sam; blok ponudnika nosi le to, kar potrebuje CAPH:
# clusters/example.com/cluster.lok8s.yaml
apiVersion: cluster.lok8s.dev/v1beta1
kind: Capi
metadata:
name: capi-cluster
spec:
kubernetes:
version: "v1.35.5"
cluster:
# OBVEZNO: domena, ki jo nadzoruješ; za končno točko API in certifikate
domain: example.com
managementCluster:
# OBVEZNO za self-hosted CAPI: `lo provision` se brez tega ne zažene
domain: mgmt.example.com
# Ustvari ga kot lokalni kind cluster, namesto da pričakuje obstoječega
local: true
provider:
name: hetzner
config:
# fsn1, nbg1 ali hel1
region: fsn1
# SSH ključ, ki obstaja v tvojem projektu Hetzner
sshKeyName: my-key
# standardna slika; Kubernetes se namesti prek cloud-init
image: ubuntu-24.04
network:
# zasebno omrežje hcloud
enabled: true
# razporedi kontrolno ravnino in workerje po različnih gostiteljih
placementGroups: true
credentials:
envVars:
- HCLOUD_TOKEN
secretRef: capi-cluster-credentials
controlPlane:
# liho število za kvorum etcd
replicas: 3
type: cx33
workers:
platform:
replicas: 2
type: cpx31
bootstrap:
- cilium
- ccm: {networking: {enabled: true}}Kako deluje vzpostavitev s CAPI
Ko zaženeš lo provision s kind: Capi, lok8s:
- Generira manifeste CAPI Cluster in MachineDeployment
- Jih uveljavi na upravljalnem clustru
- CAPH ustvari Hetzner Cloud strežnike
- Kubeadm vzpostavi Kubernetes na vozliščih
- Kubeconfig delovnega clustra se zapiše v
.kubeconfig/capi-cluster.yamlv projektu, poimenovan pometadata.name. Kubeconfig upravljalnega clustra je.kubeconfig/mgmt.example.com.yaml, poimenovan pomanagementCluster.domain. Tvoj~/.kube/configse ne spremeni.
Vzpostavi
lo provisionZgornja konfiguracija pri Hetznerju zahteva pet strežnikov (3 za kontrolno ravnino in 2 workerja), ki se obračunavajo po urah po objavljenih cenah Hetznerja za te tipe strežnikov. Nič od tega ni nepovratno: lo destroy kadar koli odstrani vsak strežnik, ki ga je ustvaril lok8s.
Struktura predloge
lok8s iz tvoje konfiguracije generira te CAPI vire:
Cluster: nastavitve na ravni clustra (omrežje, regija)HetznerCluster: infrastruktura, specifična za HetznerKubeadmControlPlane: stroji kontrolne ravnineMachineDeployment: nabori worker vozliščHetznerMachineTemplate: tip strežnika in slika (image)
Preveri
Viri CAPI živijo na upravljalnem clustru, tvoja vozlišča pa na delovnem. Nobeden ni tvoj privzeti kubectl kontekst, zato vsak kubeconfig navedi izrecno:
# Stanje CAPI clustra — na upravljalnem clustru
kubectl --kubeconfig=.kubeconfig/mgmt.example.com.yaml get clusters -A
# Vozlišča delovnega clustra
kubectl --kubeconfig=.kubeconfig/capi-cluster.yaml get nodesKdaj uporabiti CAPI in kdaj KubeOne
| Vidik | KubeOne | CAPI |
|---|---|---|
| Upravljalni cluster | Ni potreben | Potreben |
| Deklarativni življenjski cikel | Delno | Popolno |
| Več clustrov | Ročno | Izvorno (native) |
| Kompleksnost | Nižja | Višja |
KubeOne uporabi za posamezne clustre s preprostimi zahtevami. CAPI uporabi za okolja z več clustri ali infrastrukturo, vodeno z GitOps.
Naslednji koraki
- GitHub Actions: avtomatizacija vzpostavitve s CAPI v CI
- Registracija: registracija v nadzorno ploščo kubehz
- KubeOne: preprostejše alternativno orodje za vzpostavitev
Status dokumenta
| Vidik | Podrobnost |
|---|---|
| Stanje | aktivno |
| Nazadnje pregledano | 2026-09-05 |