En este consejo de Kubernetes, aprenderá a eliminar un servicio en Kubernetes.
¿Qué es un servicio de Kubernetes?
Los servicios permiten la comunicación entre varios componentes dentro y fuera de la aplicación. Los servicios de Kubernetes lo ayudan a conectar aplicaciones con otras aplicaciones o usuarios. Proporciona una dirección IP virtual (VIP) estable. Mediante el uso de una IP de servicio, los clientes pueden conectarse de manera confiable a los contenedores que se ejecutan dentro de los pods.
Por ejemplo, su aplicación tiene grupos de pods que se ejecutan para varias secciones, como un grupo para servir la carga frontal a los usuarios y otro grupo para ejecutar procesos back-end y un tercer grupo que se conecta a una fuente de datos externa.
Son los servicios los que permiten la conectividad entre estos grupos de pods. Puede tener tantos servicios como necesite dentro del clúster.
¿Por qué usamos el Servicio?
Los pods de Kubernetes son recursos poco confiables y no permanentes porque se crean y destruyen para coincidir con el estado de su clúster. Cuando crea una implementación de Kubernetes para ejecutar su aplicación, puede crear y destruir pods de forma dinámica.
Cada pod tiene su propia dirección IP y eso podría cambiar en un momento posterior porque ese pod podría destruirse y podría aparecer uno nuevo.
Esto lleva a un problema:si algún conjunto de Pods (llámelos "backends") proporciona funcionalidad a otros Pods (llámelos "frontends") dentro de su clúster, ¿cómo descubren los frontends y realizan un seguimiento de a qué dirección IP conectarse? , para que el frontend pueda usar la parte backend de la carga de trabajo?
Esa es la razón por la que los arquitectos de Kubernetes propusieron una solución que se conoce como Servicio.
Eliminación del servicio Kubernetes
Primero enumere los servicios disponibles en su clúster de kubernetes.
Este comando enumerará todos los servicios creados dentro de todos los espacios de nombres:
[email protected]:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24d <none>
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 64d k8s-app=kube-dns
webapps my-dep-svc ClusterIP 10.100.159.167 <none> 8080/TCP 2m45s tier=front-end
Puede ver un servicio llamado my-dep-svc
creado dentro de webapps
espacio de nombres.
Describamos ese servicio para entender su funcionalidad rápidamente.
[email protected]:~/pod-create# kubectl describe svc my-dep-svc --namespace=webapps
Name: my-dep-svc
Namespace: webapps
Labels: <none>
Annotations: Selector: tier=front-end
Type: ClusterIP
IP: 10.100.159.167
Port: <unset> 8080/TCP
TargetPort: 80/TCP
Endpoints: 172.16.213.223:80,172.16.213.5:80
Session Affinity: None
Events: <none>
Como mencioné anteriormente, un servicio es una agrupación de pods. Puede que este servicio tenga dos puntos finales asociados con esto. Más sobre la asociación de puntos finales en un artículo futuro quizás.
Servicio my-dep-svc
tiene asignada una IP virtual 10.100.159.167
.
Para una demostración rápida, intentemos acceder a la aplicación que se ejecuta en esos dos puntos finales (pods) usando la IP del servicio (10.100.159.167) y su puerto (8080).
[email protected]:~/pod-create# curl 10.100.159.167:8080
<html><body><h1>It works!</h1></body></html>
[email protected]:~/pod-create#
Creo que ya tienes una idea básica sobre los servicios de Kubernetes.
Ahora, hay dos formas de eliminar un servicio en Kubernetes. Vamos a verlos uno por uno.
Método 1:Usar el comando kubectl delete para eliminar el servicio
Puede eliminar un servicio en Kubernetes proporcionando el nombre del recurso directamente al comando kubectl:
[email protected]:~/pod-create# kubectl delete svc --namespace=webapps my-dep-svc
service "my-dep-svc" deleted
Ahora, si enumera todos los servicios:
[email protected]:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24d <none>
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 64d k8s-app=kube-dns
Método 2:Eliminar al hacer referencia al mismo archivo YAML con el que se creó
El archivo de configuración YAML desde el cual el servicio my-dep-svc
fue creado.
[email protected]:~/pod-create# cat my-dep-svc.yml
apiVersion: v1
kind: Service
metadata:
name: my-dep-svc
namespace: webapps
spec:
selector:
tier: front-end
ports:
- protocol: TCP
port: 8080
targetPort: 80
Ahora elimine el servicio consultando el mismo archivo YAML que se utilizó para crearlo.
[email protected]:~/pod-create# kubectl delete -f my-dep-svc.yml
service "my-dep-svc" deleted
Nuevamente enumere todos los servicios.
[email protected]:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24d <none>
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 64d k8s-app=kube-dns
Eso es todo. Aprendió a eliminar el servicio en Kubernetes. Estén atentos para más.