Kubernetes Cheatsheet

Kubernetes CheatsheetKapitel 03 von 11

Kubernetes Networking

Stand Kubernetes 1.37 · Edition 2026.11 · Release-Daten geprüft am 30. Oktober 2026

Service-Typen

ClusterIP (default): VIP im Cluster. NodePort: + Port 30000–32767 auf jedem Node. LoadBalancer: + externer LB via cloud-controller. ExternalName: DNS-CNAME, kein Proxy. Headless (clusterIP: None): A-Records pro Endpoint, für StatefulSets + Client-side LB.

spec.externalIPs: seit 1.36 deprecated (CVE-2020-8554), kube-proxy-Support frühestens ab 1.40 per Default aus, Entfernung frühestens 1.43. Admission DenyServiceExternalIPs aktivieren.

apiVersion: v1
kind: Service
metadata: {name: api}
spec:
  selector: {app: api}
  ports:
  - {name: http, port: 80, targetPort: 8080}
  internalTrafficPolicy: Cluster  # Local: nur Client-Node
  trafficDistribution: PreferSameZone

EndpointSlice (seit 1.21)

Löst Endpoints ab (v1-API seit 1.33 deprecated, wird nicht entfernt). Slices à 100 Endpoints (Default, --max-endpoints-per-slice bis 1000), skaliert auf >1000 Pods. Zonen-Routing: spec.trafficDistribution: PreferSameZone (GA 1.35, auch PreferSameNode). Die Annotation service.kubernetes.io/topology-mode ist seit 1.33 deprecated.

Ingress vs. Gateway API

Ingress ist eingefroren, HTTP/L7-only, vendor-Annotations explodieren. Die API bleibt im Core.

Gateway API (eigene CRDs, v1.0 GA seit 31.10.2023, aktuell v1.7.0 vom 29.10.2026) trennt Rollen: Infrastructure (GatewayClass, Gateway) vs. App-Team (HTTPRoute, GRPCRoute, TLSRoute, seit v1.6 auch TCPRoute/UDPRoute GA). Cross-Namespace via ReferenceGrant. CRDs gelten clusterweit: eine Version für alle Controller. Die VAP safe-upgrades.gateway.networking.k8s.io (seit v1.5) lehnt CRD-Bundles unter der eigenen Minor-Version ab (v1.7.0: alles vor v1.7.0), ebenso Experimental- über Standard-CRDs. HTTPRoute-retry ist seit v1.7 Standard.

ingress-nginx ist retired

kubernetes/ingress-nginx wurde am 24.03.2026 archiviert: keine Releases, keine Bugfixes, keine CVE-Patches mehr. Bestand läuft weiter, ein EOL-Controller im L7-Datenpfad ist aber ein Audit-Fund.

Nicht verwechseln: der NGINX Ingress Controller von F5/NGINX ist ein anderes Projekt und nicht betroffen.

Migration: ingress2gateway (1.0 seit 20.03.2026, aktuell 1.2.0 vom 07.07.2026) übersetzt Ingress samt gängiger Annotations nach Gateway API.

NetworkPolicy (Default-Deny)

Allowlist-Modell, ohne Policy: alles offen. Pattern: default-deny pro Namespace, dann Ingress/Egress explizit öffnen. podSelector: {} = alle Pods, policyTypes: [Ingress, Egress] ohne egress:-Block = total dicht, auch für DNS: UDP+TCP 53 zu CoreDNS explizit freigeben.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata: {name: default-deny, namespace: prod}
spec:
  podSelector: {}
  policyTypes: [Ingress, Egress]
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata: {name: allow-api, namespace: prod}
spec:
  podSelector: {matchLabels: {app: api}}
  ingress:
  - from:
    - namespaceSelector:
        matchLabels: {kubernetes.io/metadata.name: ingress}
    ports: [{port: 8080}]