KubeOne na Hetznerju
Vzpostavi produkcijski Kubernetes cluster z uporabo KubeOne kot orodja za vzpostavitev.
Predpogoji
- Nameščen lok8s CLI
- Nameščen in avtenticiran hcloud CLI
- Par SSH ključev, dodan v tvoj Hetzner projekt
- Hetzner Cloud API žeton, izvožen kot
HCLOUD_TOKEN
Konfiguracija clustra
Ustvari clusters/example.com/cluster.lok8s.yaml s kind: KubeOne (mapa je poimenovana po tvoji domeni), nato zaženi lo use example.com. Stroje deklariraš v opisniku ponudnika Hetzner: en vnos server na vozlišče, z vlogo v oznaki lok8s.dev/role. Vsak ključ je razložen v poglavju Prvi cluster.
# clusters/example.com/cluster.lok8s.yaml
apiVersion: cluster.lok8s.dev/v1beta1
kind: KubeOne
metadata:
name: production
spec:
kubernetes:
version: "v1.35.5"
cluster:
# OBVEZNO: domena, ki jo nadzoruješ; za končno točko API in certifikate
domain: example.com
provider:
name: hetzner
config:
cluster_name: production
sshUser: root
sshPrivateKey: ~/.ssh/id_ed25519
sshPublicKey: ~/.ssh/id_ed25519.pub
ssh-key:
- name: production
public-key-from-file: ~/.ssh/id_ed25519.pub
network:
- name: production
ip-range: 10.0.0.0/16
"#subnets":
- network-zone: eu-central
type: cloud
ip-range: 10.0.0.0/24
server:
- name: cp-1
type: cx33
image: ubuntu-24.04
location: fsn1
ssh-key: [0]
network: 0
label: lok8s.dev/cluster=production,lok8s.dev/role=control-plane
- name: cp-2
type: cx33
image: ubuntu-24.04
location: fsn1
ssh-key: [0]
network: 0
label: lok8s.dev/cluster=production,lok8s.dev/role=control-plane
- name: cp-3
type: cx33
image: ubuntu-24.04
location: fsn1
ssh-key: [0]
network: 0
label: lok8s.dev/cluster=production,lok8s.dev/role=control-plane
- name: worker-1
type: cpx31
image: ubuntu-24.04
location: fsn1
ssh-key: [0]
network: 0
label: lok8s.dev/cluster=production,lok8s.dev/role=worker
- name: worker-2
type: cpx31
image: ubuntu-24.04
location: fsn1
ssh-key: [0]
network: 0
label: lok8s.dev/cluster=production,lok8s.dev/role=workerVzpostavi
lo provisionTo bo:
- Ustvarilo Hetzner Cloud strežnike za kontrolno ravnino in workerje
- Vzpostavilo zasebno omrežje
- Namestilo Kubernetes prek KubeOne
- Zapisalo kubeconfig v
.kubeconfig/production.yamlv projektu, poimenovano pometadata.name, način0600. Tvoje~/.kube/configse ne spremeni.
Zgornja 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.
Preveri
kubectl še vedno kaže na kontekst, ki si ga uporabljal prej, zato novo gručo izberi izrecno; sicer get nodes odgovarja za tvojo prejšnjo gručo:
export KUBECONFIG=.kubeconfig/production.yaml
kubectl get nodes
# (AGE trimmed — VERSION is what to check)
# NAME STATUS ROLES VERSION
# cp-1 Ready control-plane v1.35.5
# cp-2 Ready control-plane v1.35.5
# cp-3 Ready control-plane v1.35.5
# worker-1 Ready <none> v1.35.5
# worker-2 Ready <none> v1.35.5Premisleki o HA
- Za produkcijo deklariraj tri strežnike
control-plane - Vozlišča kontrolne ravnine so samodejno razporejena po domenah napak (fault domains)
- Zasebno omrežje (
network[].ip-range) izolira promet clustra
Dodajanje bootstrap dodatkov
Cluster-infra dodatki (CNI, CCM, cert-manager, monitoring, …) so navedeni pod spec.bootstrap in se ob vzpostavitvi uveljavijo v zaporedju:
bootstrap:
- cilium
- ccm
- monitoringZaženi lo bootstrap, da spremembe bootstrapa uveljaviš na obstoječem clustru; ukaz znova uveljavi spec.bootstrap in preskoči usklajevanje infrastrukture. lo provision naredi oboje in ga je prav tako varno ponoviti.
Naslednji koraki
- Registracija: registracija v nadzorno ploščo kubehz
- GitHub Actions: avtomatizacija vzpostavitve v CI
- CAPI: alternativno orodje za vzpostavitev s Cluster API
Status dokumenta
| Vidik | Podrobnost |
|---|---|
| Stanje | aktivno |
| Nazadnje pregledano | 2026-09-05 |