Peta dunia

 

EN: Read in English

Dunia K2: Dulang & Pesanan

Blue/green dan canary dengan Deployment

Anda akan belajar: blue/green dengan tukar selector Service, dan canary dengan bilangan replika.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Kubernetes 1.37 pada 31 Okt 2026

Masalahnya

Menu versi 2 sudah siap. Anda mahu ia hidup dalam satu saat. Kalau rosak, hilang dalam satu saat. Dengan objek Kubernetes biasa, bagaimana?

Pilih satu jawapan.

Tengok

Anda di sini: kluster kind-dev namespace default
Dua Deployment berjalan: shop-blue dan shop-green. Selector Service ialah app=shop,version=blue, jadi client dapat menu v1. Output terminal: $ kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE shop-blue 2/2 2 2 16s shop-green 2/2 2 2 16s $ kubectl get service shop -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR shop ClusterIP 10.96.151.105 <none> 80/TCP 16s app=shop,version=blue $ kubectl exec client -- wget -qO- -T 5 http://shop <h1>Kedai Kancil menu v1</h1>

blue/green (blue/green deployment): Dua dapur penuh. Uji yang baharu, kemudian tukar papan tanda supaya semua ke sana. Tukar balik untuk undur.: dua Deployment penuh berjalan sebelah-menyebelah. Selector Service tulis version=blue, jadi hanya dulang blue dapat pelanggan.

Cuba

Giliran anda. service-green.yaml ialah nombor pesanan yang sama, tapi tuju ke green. Apply fail itu. Kemudian tanya kedai sekali lagi dari client.

Anda di sini: kluster kind-dev namespace default
Gerai: 3. Dulang: 5 (5 sedia). Menunggu gerai: 0.
  • shop2/2 sedia
dev-control-planeBukaPengurus

Tiada dulang di sini.

dev-workerBuka
  • client
  • shop·gl7xh
  • shop·68n9z
dev-worker2Buka
  • shop·kw9rw
  • shop·nhlrr
Masa: +0s (dipercepat)

Teka

Green ada bug. Secepat mana anda boleh kembali ke blue?

Pilih satu jawapan.

Tengok

Anda di sini: kluster kind-dev namespace default
shop-stable ada 3 pod dan shop-canary ada 1. Service pilih keempat-empat pod, sebab semuanya ada app=shop. Output terminal: $ kubectl apply -f canary.yaml deployment.apps/shop-canary created $ kubectl rollout status deployment/shop-canary --timeout=120s Waiting for deployment "shop-canary" rollout to finish: 0 of 1 updated replicas are available... deployment "shop-canary" successfully rolled out $ kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE shop-canary 1/1 1 1 4s shop-stable 3/3 3 3 20s $ kubectl get endpointslices -l kubernetes.io/service-name=shop NAME ADDRESSTYPE PORTS ENDPOINTS AGE shop-c8v4d IPv4 80 10.244.2.4,10.244.1.3,10.244.2.3 + 1 more... 20s

canary (canary release): Sedikit pengguna dapat versi baharu dulu, macam beberapa pelanggan rasa hidangan baharu. Okey? Hidang kepada lebih ramai.: Deployment kedua dengan label app: shop yang sama, tapi hanya 1 dulang. Service pilih keempat-empatnya, jadi lebih kurang 1 daripada 4 pelanggan rasa versi 2.

Cuba

Trafik sebenar, ralat sebenar. Alihkan pelanggan ke versi 2 langkah demi langkah. Rollback sebelum 150 orang kena bug.

Hantar sedikit pengguna ke v2. Tengok graf. Roll back jika ralat melonjak.

Pengguna sekarang: 100% di v1 (lama), 0% di v2 (baharu).

Kadar ralat setiap minit
0%6%11%amaranminit →

v1 (lama) v2 (baharu)

Minit 0

Pengguna yang kena ralat v2: 0 (had 150)

Nombor, minit demi minit

Belum ada trafik.

Semak

Blue/green atau canary? Susun setiap fakta.

Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.

      Anda berjaya!

      Kini anda boleh jalankan keluaran blue/green dan canary dengan Deployment biasa.

      Nak tahu lebih (pilihan)

      Di mana cerita ini tak tepat: dulang sebenar ialah program yang berjalan. Gerai ialah sebuah komputer penuh. Canary ikut replika juga kasar: 1 daripada 4 ialah 25%, bukan 5%. Untuk bahagian tepat, guna berat Gateway API (Dunia K3) atau Argo Rollouts (Dunia K7).

      Latihan sebenar (pilihan): dalam kluster yang boleh dibuang, tukar selector Service, kemudian tukar balik.