Services
Services
Pody vznikají a zanikají a jejich IP se mění. Service je stabilní adresa před nimi, se zabudovaným rozkládáním zátěže.
graph LR
C[Klient] --> S[Service nginx-svc<br/>ClusterIP 10.96.x.x]
S --> P1[Pod 10.244.1.5]
S --> P2[Pod 10.244.2.7]
S --> P3[Pod 10.244.3.9]
Service vybírá pody podle labelů. IP odpovídajících připravených podů skončí v EndpointSlice a kube-proxy podle toho naprogramuje každý uzel.
Typy
| Typ | Odkud je dostupná | Poznámka |
|---|---|---|
ClusterIP | jen zevnitř clusteru | výchozí |
NodePort | <ip-libovolného-uzlu>:30000-32767 | otevře port na všech uzlech |
LoadBalancer | zvenčí | potřebuje cloud nebo MetalLB – v tomto clusteru není |
ExternalName | – | jen DNS CNAME |
spec:
type: NodePort
selector:
app: nginx # musí odpovídat labelům podů
ports:
- port: 8080 # port Service
targetPort: 80 # port kontejneru
nodePort: 30080 # port na každém uzlu
DNS
nginx-svc # stejný namespace
nginx-svc.dev # jiný namespace
nginx-svc.dev.svc.cluster.local # plně kvalifikované
Headless Services
clusterIP: None znamená žádnou virtuální IP; DNS vrátí přímo adresy podů.
Takhle dává StatefulSet každé replice stabilní jméno – viz
StatefulSets.
Když to nefunguje
kubectl get endpointslices -l kubernetes.io/service-name=nginx-svc
Žádné endpointy znamenají, že selektor neodpovídá žádnému připravenému podu.
Zkontrolujte labely, pak readiness probe, pak targetPort.