Peta dunia

 

EN: Read in English

Dunia K5: Waktu Puncak

Taint, toleration dan sebaran

Anda akan belajar: cara kunci gerai, beri sesetengah pod anak kunci, dan sebarkan pod.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Kubernetes 1.37 pada 31 Okt 2026

Masalahnya

Node (gerai) dev-worker2 ada ketuhar besar. Ia untuk hidangan ketuhar sahaja. Tapi pod (dulang) kedai asyik mendarat di situ. Macam mana nak halang mereka?

Pilih satu jawapan.

Tengok

Anda di sini: kluster kind-dev namespace default
dev-worker2 ada taint oven=big dengan kesan NoSchedule. Ketiga-tiga pod kedai berjalan di dev-worker. Output terminal: $ kubectl get node dev-worker2 -o jsonpath={.spec.taints} [{"effect":"NoSchedule","key":"oven","value":"big"}] $ kubectl get pods -l app=shop -o jsonpath={.items[*].spec.nodeName} dev-worker dev-worker dev-worker

taint: Kunci pada node. Pod tanpa anak kunci tak boleh masuk. ialah kunci pada gerai. Yang ini datang daripada kubectl taint nodes dev-worker2 oven=big:NoSchedule. Semua pod kedai pergi ke dev-worker.

Cuba

toleration: Anak kunci pada pod. Ia buka kunci node, tapi tak tarik pod ke sana. ialah anak kunci, dibawa oleh pod. Beri anak kunci ketuhar kepada oven-tray. Kemudian letak setiap pod.

Tekan satu dulang, kemudian tekan satu gerai. Atau seret dulang itu.

Dulang menunggu

Kunci (toleration)

  • stall-a
    CPU 0 daripada 2
    Memori 0Mi daripada 4Gi
    • oven-stall
      oven=big oven=big:NoSchedule
      CPU 0 daripada 2
      Memori 0Mi daripada 4Gi
      • Pending

        Dulang yang tak muat di mana-mana gerai menunggu di sini.

        Teka

        Satu pod ada anak kunci ketuhar, tapi tiada papan tanda (tiada nodeSelector). Di mana ia boleh mendarat?

        Pilih satu jawapan.

        Cuba

        oven.yaml ada kedua-duanya: anak kunci dan papan tanda. Apply fail itu. Kemudian semak gerai mana yang ia pilih.

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

        Tiada dulang di sini.

        dev-workerBuka
        • shop·bcbf7
        • shop·tbgr4
        • shop·w6dzr
        dev-worker2Buka

        Tiada dulang di sini.

        Masa: +0s (dipercepat)

        Tengok

        Jangan letak semua pod dalam satu gerai. topology spread: Sebar pod ke banyak node, supaya satu node tutup tak beri kesan besar. jaga gerai seimbang. maxSkew: 1 maksudnya bilangan pod antara gerai beza paling banyak 1. 4 pod, 2 gerai: pembahagian mana yang dibenarkan?

        Pilih satu jawapan.

        Dalam YAML, di dalam templat pod:

        topologySpreadConstraints:
          - maxSkew: 1
            topologyKey: kubernetes.io/hostname
            whenUnsatisfiable: ScheduleAnyway
            labelSelector:
              matchLabels: { app: shop }

        Semak

        Betul atau tidak? Asingkan setiap ayat.

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

            Anda berjaya!

            Kini anda boleh kunci gerai, beri anak kunci, dan sebarkan pod.

            Nak tahu lebih (pilihan)

            Kesan: NoSchedule, PreferNoSchedule (cuba elak) dan NoExecute (turut mengusir). Tanda tolak di hujung buang taint: kubectl taint nodes dev-worker2 oven=big:NoSchedule-. Dengan whenUnsatisfiable: DoNotSchedule, sebaran jadi peraturan keras. Gerai berkunci masih boleh dikira sebagai domain. Baca dokumen sebelum guna.

            Latihan sebenar (pilihan): taint satu pekerja kind, kemudian buang semula.