Peta dunia

 

EN: Read in English

Dunia K3: Kaunter & Pintu

EndpointSlice: siapa jawab?

Anda akan belajar: lihat pod mana yang jawab sebuah Service, dan baiki Service yang tiada penjawab.

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
EndpointSlice menu tunjuk port unset dan endpoint unset. wget dapat Connection refused. Output terminal: $ kubectl get endpointslices -l kubernetes.io/service-name=menu NAME ADDRESSTYPE PORTS ENDPOINTS AGE menu-hhsm8 IPv4 <unset> <unset> 21s $ kubectl exec client -- wget -qO- -T 5 http://menu wget: can't connect to remote host (10.96.127.123): Connection refused command terminated with exit code 1

Menu ada nombor pesanan, tapi anda dapat Connection refused. Maksudnya: tiada dulang di belakang nombor itu.

Cuba

EndpointSlice: Senarai di belakang nombor pesanan: pod sedia mana yang Service hantar pesanan. ialah senarai di belakang nombor pesanan. Ia namakan dulang yang menjawab. Service ini mahu kedua-dua label. Buat ia pilih dua dulang kedai.

Seret label ke atas dulang, atau tekan label, kemudian dulang.

Service shop (nombor giliran)

selector:app=shoptier=web

Memilih 1 dulang.

Label

  • shop-1

    • app=shop
    • tier=web

    shop memilih dulang ini.

  • shop-2

    • app=shop

    Tidak dipilih: perlu tier=web.

  • api-1

    • app=api
    • tier=web

    Tidak dipilih: perlu app=shop.

kubectl get endpointslices -l kubernetes.io/service-name=shopNAME         ADDRESSTYPE   PORTS   ENDPOINTS     AGEshop-2jl8t   IPv4          80      10.244.1.84   12s

Tengok

Anda di sini: kluster kind-dev namespace default
Senarai kedai ada tiga IP. Selepas scale ke satu dulang, tinggal satu IP. Output terminal: $ kubectl get endpointslices -l kubernetes.io/service-name=shop NAME ADDRESSTYPE PORTS ENDPOINTS AGE shop-4k2wd IPv4 80 10.244.1.4,10.244.2.4,10.244.1.5 21s $ kubectl scale deployment shop --replicas=1 deployment.apps/shop scaled $ sleep 10 $ kubectl get endpointslices -l kubernetes.io/service-name=shop NAME ADDRESSTYPE PORTS ENDPOINTS AGE shop-4k2wd IPv4 80 10.244.1.4 31s

Senarai ikut dulang. Scale turun ke satu, senarai pun tinggal satu. Dulang yang belum sedia pun keluar dari senarai.

Cuba

Masa jadi detektif. Cari kenapa menu tiada dulang. Kemudian buat semula nombor pesanannya.

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

Tiada dulang di sini.

dev-workerBuka
  • client
  • shop·hj8bg
  • shop·rs5v6
dev-worker2Buka
  • menu·n8ltw
  • shop·p7794
Masa: +0s (dipercepat)

Teka

Satu dulang gagal readiness probe. Adakah nombor pesanan masih hantar pesanan kepadanya?

Pilih satu jawapan.

Semak

Sebuah Service tiada endpoint. Susun langkahnya.

Langkah pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.

  • kubectl get endpointslices -l kubernetes.io/service-name=menu
  • Semak endpoint sekali lagi
  • kubectl describe service menu (baca Selector)
  • kubectl get pods --show-labels
  • Baiki selector atau label

Anda berjaya!

Kini anda boleh lihat siapa jawab sebuah Service, dan baikinya.

Nak tahu lebih (pilihan)

Objek Endpoints yang lama sudah deprecated sejak Kubernetes 1.33. Guna EndpointSlice. Satu slice muat hingga 100 endpoint secara lalai. Service besar dapat beberapa slice. Pod yang sedang ditutup kekal dalam senarai sekejap, bertanda belum sedia.

Latihan sebenar (pilihan), di kluster kind untuk dibuang:

Misi sebenar

  1. kubectl get endpointslices -l kubernetes.io/service-name=shop
  2. kubectl create service clusterip nobody --tcp=80:80
  3. kubectl get endpointslices -l kubernetes.io/service-name=nobody

0 daripada 3 langkah siap · Tanda anda disimpan.