Kubernetes Service Operations
Jump to navigation
Jump to search
Internal
List Services
kubectl [-n <namespace>] get svc
Describe a Service
kubectl [-o yaml] get svc <service-name>
kubectl describe svc <service-name>
Create a Service
With CLI
A service of any type (ClusterIP, NodePort, LoadBalancer, or ExternalName) can be created with the kubectl expose command.
More details:
With Metadata
Describe the service in a metadata YAML file:
apiVersion: v1
kind: Service
metadata:
name: some-service
spec:
selector:
function: serves-http
ports:
- port: 80
targetPort: 8888
More details about the service manifest available in:
POST it with:
kubectl apply -f ./service.yaml
Service Troubleshooting
Services can be tested as follows:
- Deploy an auxiliary pod, kubectl exec into it and attempt to connect to the target pods via the service.
- ssh into a Kubernetes node and use the curl command from there.
Check:
- Make sure to connect to a ClusterIP service from within the cluster not from outside.
- Pinging ClusterIP services does not work, the service's cluster IP is a virtual IP address.
- The readiness probe works correctly and returns the correct state.
- kubectl get endpoints
- Make sure you're using the service "port", not "targetPort"
- Try connecting to the pod directly, circumventing the service.
- If connecting to the pod directly does not work, make sure the application isn't only binding to localhost.