Kubernetes_services
Chapter 21: Kubernetes Services
Section titled βChapter 21: Kubernetes ServicesβServices provide stable network endpoints for pods, enabling service discovery and load balancing.
What is a Service?
Section titled βWhat is a Service?βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ Kubernetes Service ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β ββ Service ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β β ββ β my-service:80 β ββ β β ββ β ββββββββββββ ββββββββββββ ββββββββββββ β ββ β β Pod 1 β β Pod 2 β β Pod 3 β β ββ β β app=v1 β β app=v1 β β app=v1 β β ββ β β 10.0.0.1 β β 10.0.0.2 β β 10.0.0.3 β β ββ β ββββββββββββ ββββββββββββ ββββββββββββ β ββ β β ββ β Stable endpoint: my-service.default.svc.cluster.local β ββ β β ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββService Types
Section titled βService Typesβ1. ClusterIP (Default)
Section titled β1. ClusterIP (Default)βapiVersion: v1kind: Servicemetadata: name: my-servicespec: type: ClusterIP selector: app: myapp ports: - port: 80 targetPort: 8080ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ClusterIP Service ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β ββ Cluster Network (10.96.0.0/12) ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β β ββ β my-service:80 βββββββββββββββββββ β ββ β (10.96.0.100) β β ββ β β β ββ β βΌ β ββ β ββββββββββββ¬βββββββββββ¬βββββββββββ β ββ β β Pod 1 β Pod 2 β Pod 3 β β ββ β β :8080 β :8080 β :8080 β β ββ β ββββββββββββ΄βββββββββββ΄βββββββββββ β ββ β β ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ ββ Only accessible within cluster ββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ2. NodePort
Section titled β2. NodePortβapiVersion: v1kind: Servicemetadata: name: my-servicespec: type: NodePort selector: app: myapp ports: - port: 80 targetPort: 8080 nodePort: 30080ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ NodePort Service ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β ββ External Network ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β β ββ β http://any-node-ip:30080 β ββ β β ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β ββ βΌ ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β Node 1:30080 Node 2:30080 Node 3:30080 β ββ β β ββ β ββββββββββββ ββββββββββββ ββββββββββββ β ββ β β Pod 1 β β Pod 2 β β Pod 3 β β ββ β ββββββββββββ ββββββββββββ ββββββββββββ β ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ ββ Exposes service on each node's IP at static port ββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ3. LoadBalancer
Section titled β3. LoadBalancerβapiVersion: v1kind: Servicemetadata: name: my-servicespec: type: LoadBalancer selector: app: myapp ports: - port: 80 targetPort: 8080ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ LoadBalancer Service ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β ββ External Traffic ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β β ββ β βββββββββββββββββββ β ββ β β Load Balancer β (Cloud Provider LB) β ββ β β my-lb-12345.elb β β ββ β β .amazonaws.com β β ββ β ββββββββββ¬βββββββββ β ββ β β β ββ ββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β ββ βΌ ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β Node IP Node IP Node IP β ββ β ββββββββββββ ββββββββββββ ββββββββββββ β ββ β β Pod 1 β β Pod 2 β β Pod 3 β β ββ β ββββββββββββ ββββββββββββ ββββββββββββ β ββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ ββ Cloud provider manages external load balancer ββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ4. ExternalName
Section titled β4. ExternalNameβapiVersion: v1kind: Servicemetadata: name: my-servicespec: type: ExternalName externalName: my-database.example.comService Discovery
Section titled βService Discoveryβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ Service DNS Resolution ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β ββ Full DNS: <service>.<namespace>.svc.cluster.local ββ Short DNS: <service>.<namespace> ββ Cluster DNS: <service> ββ ββ Example: ββ - Namespace: production ββ - Service name: myapp ββ ββ Resolves to: ββ - myapp.production.svc.cluster.local ββ - myapp.production ββ - myapp (from same namespace) ββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββService Commands
Section titled βService Commandsβ# Get serviceskubectl get services
# Get services with endpointskubectl get svc -o wide
# Describe servicekubectl describe service my-service
# Create servicekubectl expose deployment myapp --port=80 --targetPort=8080
# Delete servicekubectl delete service my-serviceHeadless Services
Section titled βHeadless ServicesβapiVersion: v1kind: Servicemetadata: name: my-headlessspec: clusterIP: None selector: app: myapp ports: - port: 80 targetPort: 8080Summary
Section titled βSummaryβIn this chapter, you learned:
- Service types (ClusterIP, NodePort, LoadBalancer, ExternalName)
- Service discovery with DNS
- Creating and managing services