Conceptos Avanzados de los Servicios de Kubernetes
Si bien los tipos básicos de servicios de Kubernetes cubren muchos casos de uso, existen algunos conceptos avanzados que pueden proporcionar más flexibilidad y control sobre la red de su aplicación.
Detección de Servicios
Kubernetes proporciona mecanismos de detección de servicios integrados, lo que permite a los Pods encontrarse y comunicarse entre sí. Esto se logra a través del uso de variables de entorno y el servidor DNS de Kubernetes.
Cuando se crea un nuevo servicio, Kubernetes le asigna automáticamente un nombre DNS en el formato <service-name>.<namespace>.svc.cluster.local
. Los Pods pueden entonces usar este nombre DNS para conectarse al servicio.
Kubernetes también inyecta variables de entorno para cada servicio, como MY_SERVICE_HOST
y MY_SERVICE_PORT
, que los Pods pueden usar para conectarse al servicio.
Red de Servicios
Kubernetes utiliza el componente kube-proxy
para manejar la red de los servicios. kube-proxy
se encarga de configurar las reglas de iptables necesarias y de redirigir el tráfico a los Pods adecuados.
Kubernetes admite múltiples modelos de red, como iptables
e ipvs
, que se pueden configurar según sus requisitos.
Escalado de Servicios
Los servicios de Kubernetes pueden escalar automáticamente hacia arriba y hacia abajo según el número de Pods disponibles. Cuando escala su aplicación agregando o eliminando Pods, el servicio ajustará automáticamente su equilibrado de carga para distribuir el tráfico en consecuencia.
También puede configurar opciones de escalado avanzadas, como el escalado automático horizontal de pods, para escalar automáticamente su aplicación según métricas como la utilización de CPU o métricas personalizadas.
A continuación, se muestra un ejemplo de un escalador automático horizontal de pods:
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: my-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 50
En este ejemplo, el escalador automático horizontal de pods escalará automáticamente la implementación my-app
entre 2 y 10 Pods, según la utilización media de CPU de los Pods.