Skip to content

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.

yaml
# 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=worker

Vzpostavi

bash
lo provision

To bo:

  1. Ustvarilo Hetzner Cloud strežnike za kontrolno ravnino in workerje
  2. Vzpostavilo zasebno omrežje
  3. Namestilo Kubernetes prek KubeOne
  4. Zapisalo kubeconfig v .kubeconfig/production.yaml v projektu, poimenovano po metadata.name, način 0600. Tvoje ~/.kube/config se 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:

bash
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.5

Premisleki 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:

yaml
  bootstrap:
    - cilium
    - ccm
    - monitoring

Zaž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

VidikPodrobnost
Stanjeaktivno
Nazadnje pregledano2026-09-05