Peta dunia

 

EN: Read in English

Dunia K7: Pandu Sendiri

Self-heal dan drift

Anda akan belajar: apa itu drift, dan cara self-heal atau Sync kembalikan versi Git.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Kubernetes 1.37 pada 31 Okt 2026

Masalahnya

Anda di sini: kluster kind-dev namespace default
kubectl get deployment shop tunjuk 1/1 sedia, tetapi shop.yaml dalam Git minta 3. Output terminal: $ kubectl get deployment shop NAME READY UP-TO-DATE AVAILABLE AGE shop 1/1 1 1 37s

Git minta 3 dulang. Kluster jalankan 1. Lantai gerai tak lagi sama dengan papan pesanan. Jurang ini dipanggil drift (hanyut) (drift): Kluster tak lagi sama dengan Git, selalunya selepas perubahan secara manual. (hanyut).

Cuba

Self-heal dihidupkan. Buat perubahan manual dengan butang kubectl. Kemudian perhati.

Tukar kluster secara manual. Kemudian pastikan perubahan itu dibatalkan.

Git (papan pesanan)

apps/shop/deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
name: shop
spec:
replicas: 3
# selector dan template: sama seperti tadi
image:
Tunjuk seluruh fail
apiVersion: apps/v1
kind: Deployment
metadata:
  name: shop
  namespace: shop
spec:
  replicas: 3
  selector:
    matchLabels:
      app: shop
  template:
    metadata:
      labels:
        app: shop
    spec:
      containers:
        - name: web
          image: ghcr.io/kedai-kancil/shop:1.4.0

Commit

  1. f89a8e9 Add shopdalam kluster

Kluster · namespace shop

Sync: SyncedHealth: Healthy

Deployment shop: 3/3 sedia · image 1.4.0

Perubahan manual (drift)
syncPolicy:
  automated:
    selfHeal: true
Tunjuk Application Argo CD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: shop
  namespace: argocd
spec:
  project: default
  source:
    repoURL: "https://github.com/kedai-kancil/gitops.git"
    path: apps/shop
    targetRevision: main
  destination:
    server: "https://kubernetes.default.svc"
    namespace: shop
  syncPolicy:
    automated:
      selfHeal: true
Tiada kerja. Git dan kluster sama.

Teka

Sekarang self-heal (pulih sendiri) (self-heal): Argo CD kembalikan versi Git dengan sendiri bila seseorang ubah kluster secara manual. (pulih sendiri) dimatikan. Seseorang scale kepada 1 secara manual. Apa jadi?

Pilih satu jawapan.

Cuba

Self-heal dimatikan. Buat perubahan manual, kemudian undurkannya sendiri.

Tukar kluster secara manual. Kemudian pastikan perubahan itu dibatalkan.

Git (papan pesanan)

apps/shop/deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
name: shop
spec:
replicas: 3
# selector dan template: sama seperti tadi
image:
Tunjuk seluruh fail
apiVersion: apps/v1
kind: Deployment
metadata:
  name: shop
  namespace: shop
spec:
  replicas: 3
  selector:
    matchLabels:
      app: shop
  template:
    metadata:
      labels:
        app: shop
    spec:
      containers:
        - name: web
          image: ghcr.io/kedai-kancil/shop:1.4.0

Commit

  1. f89a8e9 Add shopdalam kluster

Kluster · namespace shop

Sync: SyncedHealth: Healthy

Deployment shop: 3/3 sedia · image 1.4.0

Perubahan manual (drift)
syncPolicy:
  automated:
    selfHeal: false
Tunjuk Application Argo CD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: shop
  namespace: argocd
spec:
  project: default
  source:
    repoURL: "https://github.com/kedai-kancil/gitops.git"
    path: apps/shop
    targetRevision: main
  destination:
    server: "https://kubernetes.default.svc"
    namespace: shop
  syncPolicy:
    automated:
      selfHeal: false
Tiada kerja. Git dan kluster sama.

Cuba

Kluster ini tiada pembantu GitOps. Jadilah pembantu itu. Cari drift, kemudian kembalikan versi dalam fail.

Anda di sini: kluster kind-dev namespace default

Mahu 1. Nampak 1. Semua okey.

Mahu1tertulis pada pesanan shop
Nampak11 sedia
Buat Semua okeyKekurangan dibaiki: 0
Gerai: 3. Dulang: 1 (1 sedia). Menunggu gerai: 0.
dev-control-planeBukaPengurus

Tiada dulang di sini.

dev-workerBuka
  • shop·grxfr
dev-worker2Buka

Tiada dulang di sini.

Masa: +0s (dipercepat)

Semak

Leret: tabiat baik atau tidak?

Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.

1 / 3

Baiki production secara manual pukul 2 pagi, dan tak commit langsung.

Baiki production secara manual pukul 2 pagi, dan tak commit langsung.

Anda berjaya!

Kini anda boleh kesan drift dan kembalikan versi Git.

Nak tahu lebih (pilihan)

Secara lalai, self-heal tunggu 5 saat sebelum sync semula. Sesetengah drift memang sengaja: autoscaler ubah replicas. Beritahu Argo CD untuk abaikan medan itu dengan ignoreDifferences. Latihan sebenar (pilihan): pada kluster kind, kubectl scale satu Deployment, kemudian kubectl apply -f failnya. Lihat bilangannya kembali.