Service
Each pod in the Kubernetes cluster is assigned an internal IP address. Since pods are created and deleted and their IP addresses change, it makes no sense to use IP addresses for pods directly. Use services to get permanent access to the pods and stop using internal IP addresses.
A service is a Kubernetes API object (Service)
If you use a service, you get a permanent IP address that exists throughout the service lifecycle, even if pods change their IP addresses. It also provides load balancing. Clients send requests to a single IP address, and their requests are balanced between the pods belonging to the service.
The set of pods belonging to the service is defined by a selector. The selector is configured by the user when creating the pod and allows filtering the list of resources based on labels (key-value pairs assigned to the resource). The pod belongs to the service if it has all the Kubernetes labels specified in the selector.
Depending on your task, you can use different types of services.
Service types
You can use various types of services in your Kubernetes clusters, including:
ClusterIP
- The service is accessible only within the Kubernetes cluster network via an internal IP address.
- Requires no additional cloud resources.
NodePort
, aClusterIP
extension.- Provides access to the service via internal or public Kubernetes cluster node IP addresses.
- Requires no additional cloud resources.
LoadBalancer
, aNodePort
extension.- Provides access to the service via a cloud network load balancer you create.
- Requires additional cloud resources (network load balancer).
To publish your app, use a LoadBalancer
service based on a network load balancer with a public or internal IP address.
If you need DDoS protection, reserve a public IP address with enabled protection and specify it using the loadBalancerIP
option.
Read more about types of services in the Kubernetes documentation