Aide-mémoire CKAD
exemple YAML Service k8s
Un Service équilibre vers les Pods dont les labels matchent selector. port = Service, targetPort = conteneur.
kubectl expose deploy/web --name=web --port=80 --target-port=80
kubectl expose po/web --name=web --port=80 --target-port=80 --type=NodePort
apiVersion: v1
kind: Service
metadata:
name: web
namespace: default
spec:
type: ClusterIP
selector:
app: web
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
apiVersion: v1
kind: Service
metadata:
name: web
spec:
type: NodePort
selector:
app: web
ports:
- port: 80
targetPort: 80
nodePort: 30080
spec:
clusterIP: None
selector:
app: web
ports:
- port: 80
targetPort: 80
kubectl get svc,ep web
kubectl describe svc web
Champs
- selector
- Matche les labels du Pod (template.metadata.labels). Pas le nom du Deployment.
- port
- Le port du Service. Les clients utilisent celui-là.
- targetPort
- Le port du conteneur. Souvent le même numéro que port. Souvent pas.
- nodePort
- Seulement si type NodePort ou LoadBalancer.
- clusterIP
- None = headless. Le DNS renvoie les IP des Pods.
- kubectl expose
- --port est le Service. --target-port est le conteneur.
Pièges
- selector matche les labels du Pod (Deployment : template.metadata.labels), pas le nom du Deployment.
- port = Service. targetPort = conteneur. nodePort seulement sur NodePort / LoadBalancer.
- Le type par défaut est ClusterIP. clusterIP: None = headless — le DNS renvoie les IP des Pods.
Doc officielle Services