Noticias
New Serverspace Centro de datos en Uzbekistán: Tashkent
Serverspace Black Friday
BS
Abril 14 2025
Actualizado el 30 de agosto de 2025

Kubernetes Servicios explicados: Guía para principiantes sobre la comunicación en clúster

Kubernetes

En el artículo anterior Guía paso a paso para implementar y administrar KubernetesCubrimos los fundamentos de KubernetesSu arquitectura, componentes clave (como pods, implementaciones y servicios) y principios generales para la implementación y administración de clústeres. Ahora, profundizaremos en el trabajo con Vainas—las unidades ejecutables más pequeñas en KubernetesPara gestionar eficazmente su comunicación y disponibilidad, Kubernetes usos Servicios, cuyo propósito general fue mencionado anteriormente.

En este artículo, exploraremos la funcionalidad de los Servicios a través de ejemplos prácticos: sus tipos (ClusterIP, NodePort, LoadBalancer), configuraciones de manifiesto YAML y casos de uso para garantizar una comunicación estable entre los componentes de la aplicación.

Kubernetes Servicios revisados

Primero, recordemos qué Kubernetes Servicios Son. En resumen, son objetos que proporcionan acceso estable a las aplicaciones en un clúster, incluso cuando los pods cambian dinámicamente. De forma más completa, Kubernetes Servicios Son un mecanismo fundamental para garantizar una comunicación de red estable entre los componentes de la aplicación en un entorno de clúster en constante cambio. En pocas palabras, los servicios actúan como “puntos de entrada estables” A un grupo de pods, incluso si estos se recrean, escalan o mueven entre nodos. A continuación, se muestra una ilustración de los principales tipos de servicios en K8s:

Imagen 1 - Servicios K8s

Problemas abordados por Kubernetes Servicios:

Desde Pods en Kubernetes son efímeras (sus direcciones IP cambian durante los reinicios, el escalamiento o las actualizaciones), lo que crea desafíos para los componentes de la aplicación (por ejemplo, frontend y backend) que requieren un método de comunicación estable.

Kubernetes Los servicios resuelven estos problemas mediante las siguientes acciones:
- Identificadores fijos:Los servicios asignan una dirección IP estable (ClusterIP), DNS nombre o IP externa, independientemente del ciclo de vida de los Pods.
- Balanceo de carga:El tráfico se distribuye automáticamente entre los pods seleccionados mediante etiquetas (por ejemplo, `app: backend`).
- Actualización automática:Los servicios rastrean dinámicamente los cambios en el conjunto de Pods a través de EndpointSlices, actualizando la lista de instancias disponibles.

Nuestras Kubernetes Tipos de servicios con ejemplos

ClusterIP: para acceso interno a pods dentro del clúster

Configuración de ejemplo:

simple-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app.kubernetes.io/name: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376

Comando para crear el Servicio:

kubectl apply -f simple-service.yaml

Comprobación:

kubectl get services # Viewing ClusterIP
kubectl describe service/my-service # Details Service and Endpoints

LoadBalancer está diseñado para el acceso público a través de un balanceador de carga en la nube.

Configuración de ejemplo:

# nodeport-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-nodeport-service
spec:
type: NodePort
selector:
app.kubernetes.io/name: MyApp
ports:
- port: 80
targetPort: 9376
nodePort: 30007 # Optional (default: random port in range)

Comando para crear el Servicio:

kubectl apply -f nodeport-service.yaml

Acceso:

curl http://:30007 # replace with node IP

ExternalName está diseñado para vincularse a un recurso externo a través de DNS Nombre C.

Configuración de ejemplo:

# loadbalancer-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-loadbalancer
spec:
type: LoadBalancer
selector:
app.kubernetes.io/name: MyApp
ports:
- port: 80
targetPort: 9376

Comando para crear el Servicio:

kubectl apply -f loadbalancer-service.yaml

Comprobando la IP externa:

kubectl get service/my-loadbalancer -o wide # Viewing EXTERNAL-IP

El servicio sin cabeza (sin ClusterIP) está diseñado para el acceso directo a los pods sin equilibrio de carga.

Configuración de ejemplo:

# externalname-service.yaml
apiVersion: v1
kind: Service
metadata:
name: external-db
spec:
type: ExternalName
externalName: my.database.example.com

Comando para crear el Servicio:

kubectl apply -f externalname-service.yaml

Uso:
Otros pods pueden acceder a `external-db` como DNS nombre

El servicio sin cabeza (sin ClusterIP) está diseñado para el acceso directo a los pods sin equilibrio de carga.

Ejemplo de configuración:

# headless-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-headless
spec:
clusterIP: None
selector:
app.kubernetes.io/name: MyApp
ports:
- port: 80
targetPort: 9376

Comando para crear el Servicio:

kubectl apply -f headless-service.yaml

DNS comprobación:

nslookup my-headless.default.svc.cluster.local # Returns the IPs of all Pods

Ejemplos adicionales:

La configuración del servicio multipuerto está diseñada para simplificar la configuración de aplicaciones que requieren múltiples puertos.

Configuración:

# multi-port-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-multi-port
spec:
selector:
app.kubernetes.io/name: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 8080
- name: metrics
protocol: TCP
port: 9090
targetPort: 9090

comando:

kubectl apply -f multi-port-service.yaml

La configuración del servicio sin un selector (EndpointSlices manual) se utiliza para integrarse con recursos externos Kubernetes

Configuración del servicio:

# service-without-selector.yaml
apiVersion: v1
kind: Service
metadata:
name: my-external-service
spec:
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376

La configuración de EndpointSlice está diseñada para una gestión flexible de puntos finales (incluidos sistemas externos):

Configuración:

# endpointslice.yaml
apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata:
name: my-service-1
labels:
kubernetes.io/service-name: my-external-service
addressType: IPv4
ports:
- name: http
protocol: TCP
port: 9376
endpoints:
- addresses: ["10.4.5.6"]
- addresses: ["10.1.2.3"]

comandos:

kubectl apply -f service-without-selector.yaml
kubectl apply -f endpointslice.yaml

Comandos útiles:

Ver todos los servicios se utiliza para mostrar una lista de todos los servicios en el espacio de nombres actual:

kubectl get services

La visualización de puntos finales tiene como objetivo mostrar una lista de puntos finales: las direcciones IP y los puertos de los pods asociados con el servicio:

kubectl get endpoints

DNS La verificación de un Servicio tiene como objetivo comprobar la DNS Resolución del nombre del servicio dentro de un Pod:

kubectl exec -it -- nslookup

La eliminación de un servicio tiene como objetivo quitar el servicio del clúster:

kubectl delete service/

PREGUNTAS MÁS FRECUENTES: Kubernetes Servicios

  • Q1: ¿Qué es un Kubernetes ¿Servicio?
    A1: un Kubernetes Un servicio es una abstracción que proporciona acceso estable a la red a un conjunto de pods. Los servicios garantizan una comunicación fiable entre los componentes, incluso cuando los pods se recrean, escalan o se mueven entre nodos.
  • P2: ¿Por qué se necesitan los servicios en Kubernetes?
    A2: Los pods son efímeros, lo que significa que sus direcciones IP pueden cambiar durante los reinicios o el escalado. Los servicios solucionan esto proporcionando direcciones IP fijas. DNS nombres o direcciones externas, junto con equilibrio de carga y actualizaciones automáticas de puntos finales.
  • P3: ¿Cuáles son los principales tipos de servicios en Kubernetes?
    A3: Los tipos de núcleo incluyen:
    ClusterIP: acceso interno dentro del clúster
    NodePort: expone el servicio en un puerto estático en cada nodo
    LoadBalancer: se integra con los balanceadores de carga del proveedor de la nube para acceso externo
    ExternalName: asigna un servicio a un externo DNS nombre
    Servicio sin cabeza: acceso directo al pod sin equilibrio de carga
  • P4: ¿Cómo creo un Kubernetes ¿Servicio?
    A4: Los servicios se definen en manifiestos YAML y se aplican mediante kubectl apply -f Usted especifica el tipo, el selector (etiquetas) y los puertos para configurar cómo se enruta el tráfico a los pods.
  • Q5: ¿Puede un servicio tener múltiples puertos?
    A5: Sí. Los servicios multipuerto permiten exponer varios puertos del mismo conjunto de pods, lo cual es útil para aplicaciones que sirven HTTP, métricas y otros protocolos simultáneamente.
  • Q6: ¿Cómo puedo verificar que un servicio está funcionando?
    A6: Utilice comandos como kubectl get services para enumerar los servicios, kubectl describe service/ Para ver detalles y nslookup dentro de un Pod para comprobar DNS Nuestro proceso de sublimación de tinta infunde la imagen directamente en el recubrimiento, dotando al producto final de una profundidad de color excepcional y una resolución de alta definición.
  • P7: ¿Qué pasa si necesito conectar un servicio a puntos finales externos?
    A7: Puede crear un Servicio sin un selector y definir manualmente puntos finales a través de objetos EndpointSlice, lo que permite la integración con recursos externos. Kubernetes racimo.
  • Q8: ¿Cómo gestionan los servicios el equilibrio de carga?
    A8: Los servicios distribuyen automáticamente el tráfico entrante entre los pods seleccionados según las etiquetas, lo que garantiza una carga uniforme y una alta disponibilidad dentro del clúster.
Votar:
4 de 5
Calificación promedio: 4.5
Calificado por: 2
1101 CT Ámsterdam Países Bajos, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300

También le podría interesar...

Utilizamos cookies para hacer que su experiencia en el Serverspace mejor. Al continuar navegando en nuestro sitio web, usted acepta nuestros
Uso de Cookies además Política de privacidad.