Sobes.tech
Middle+

Hoe maak je een fault-tolerant Kubernetes-cluster?

sobes.tech AI

Antwoord van AI

Om een fouttolerante Kubernetes-cluster te creëren, is het noodzakelijk om de redundantie van kerncomponenten en gegevens te waarborgen.

Belangrijkste stappen:

  1. Master knooppunten:

    • Verschillende master knooppunten (minimaal drie) inzetten voor de kube-apiserver component, die achter een load balancer werken. Dit zorgt voor API-beschikbaarheid, zelfs als een master knooppunt uitvalt.
    • Elk master knooppunt moet toegang hebben tot een gedeelde opslag van de clusterstatus — etcd.
  2. etcd:

    • Een etcd-cluster met meerdere knooppunten (aanbevolen is een oneven aantal, minimaal drie) inzetten, verspreid over verschillende beschikbaarheidszones of fysieke servers. Dit garandeert de integriteit van de clusterstatusgegevens.
  3. Load balancer:

    • Een L4/L7 load balancer gebruiken om het verkeer tussen de kube-apiserver knooppunten te verdelen.
    • Een andere load balancer gebruiken voor inkomend verkeer naar de applicaties in de cluster (bijvoorbeeld een Ingress Controller met hoge beschikbaarheid).
  4. Werknodenknooppunten:

    • Genoeg werkknopen inzetten om Pods uit te voeren.
    • De werkknopen verspreiden over verschillende beschikbaarheidszones of fysieke servers om de veerkracht op infrastructuurniveau te garanderen.
    • Pod Disruption Budgets (PDBs) configureren om het minimale aantal beschikbare Pods tijdens vrijwillige onderbrekingen te bepalen.
  5. Opslag:

    • Gedistribueerde opslag of cloudopslag met hoge beschikbaarheid gebruiken voor Persistent Volumes.
    • Voorbeelden: Rook (Ceph), GlusterFS, cloudproviders (AWS EBS, GCP Persistent Disk, Azure Managed Disks) met replicatie.
  6. Netwerk:

    • Een betrouwbare CNI (Container Network Interface) netwerkoplossing gebruiken met ondersteuning voor hoge beschikbaarheid (bijvoorbeeld Calico, Cilium met gerepliceerde componenten).
    • Verbindingen tussen master knooppunten, etcd knooppunten en werkknopen garanderen.
  7. Back-ups:

    • Regelmatig back-ups maken van de etcd-gegevens.
    • Gereedschappen zoals Velero gebruiken voor back-up en herstel van de clusterstatus en Persistent Volumes.

Voorbeeldarchitectuur:

graph LR
    subgraph Gebruikers
        A[Gebruiker] --> B(Applicatie Load Balancer)
    end

    subgraph Kubernetes Cluster
        subgraph Master knooppunten
            C1(Master knooppunt 1)
            C2(Master knooppunt 2)
            C3(Master knooppunt 3)
        end

        subgraph etcd Cluster
            D1(etcd 1)
            D2(etcd 2)
            D3(etcd 3)
        end

        subgraph Werkknopen
            E1(Werkknop 1)
            E2(Werkknop 2)
            E3(Werkknop 3)
        end

        subgraph Opslag
            F(Gedistribueerde opslag)
        end

        subgraph Netwerk
            G(CNI netwerk)
        end

        B --> LoadBalancer(Load balancer API-server)
        LoadBalancer --> C1
        LoadBalancer --> C2
        LoadBalancer --> C3

        C1 <--> D1
        C1 <--> D2
        C1 <--> D3
        C2 <--> D1
        C2 <--> D2
        C2 <--> D3
        C3 <--> D1
        C3 <--> D2
        C3 <--> D3

        C1 --> G
        C2 --> G
        C3 --> G

        E1 <--> G
        E2 <--> G
        E3 <--> G

        E1 <--> F
        E2 <--> F
        E3 <--> F

        G --> E1: Pod deployment
        G --> E2: Pod deployment
        G --> E3: Pod deployment

        E1 --> B: Uygulama trafiği
        E2 --> B: Uygulama trafiği
        E3 --> B: Uygulama trafiği
    end

Yaygın otomasyon araçları kubeadm, Kubespray veya bulut sağlayıcıların yönetilen Kubernetes servisleri (EKS, GKE, AKS) kullanılır, bu da arıza toleranslı altyapıların oluşturulmasını kolaylaştırır.