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
kind-dev namespace defaultMenu 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
Petunjuk
Dulang mesti ada setiap label dalam selector.Tengok
kind-dev namespace defaultSenarai 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.
kind-dev namespace defaultmenu0/0 sedia tiada dulang sediashop3/3 sedia
dev-control-planeBukaPengurusTiada dulang di sini.
dev-workerBuka- client
- shop·hj8bg
- shop·rs5v6
dev-worker2Buka- menu·n8ltw
- shop·p7794
Petunjuk
kubectl expose deployment menu --port=80 salin selector Deployment itu sendiri, jadi ia sepadan.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
kubectl get endpointslices -l kubernetes.io/service-name=shopkubectl create service clusterip nobody --tcp=80:80kubectl get endpointslices -l kubernetes.io/service-name=nobody
0 daripada 3 langkah siap · Tanda anda disimpan.
English
The menu has an order number, but you get Connection refused. Plain words: no tray stands behind that number.
An EndpointSlice is the list behind an order number. It names the trays that answer. This Service wants both labels. Make it pick the two shop trays.
The list follows the trays. Scale down to one, and the list shrinks to one. A tray that is not ready drops off too.
Detective time. Find why the menu has no trays. Then remake its order number.
kubectl expose deployment menu --port=80 copies the Deployment’s own selector, so it matches.A tray fails its readiness probe. Does the order number still send it orders?
A Service has no endpoints. Put the steps in order.
You can now see who answers a Service, and fix it.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Kubernetes: EndpointSlice · Kubernetes: nyahpepijat Service
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?