Dans cette astuce Kubernetes, vous découvrirez comment supprimer un service dans Kubernetes.
Qu'est-ce qu'un service Kubernetes ?
Les services permettent la communication entre divers composants à l'intérieur et à l'extérieur de l'application. Les services Kubernetes vous aident à connecter des applications avec d'autres applications ou utilisateurs. Il fournit une adresse IP virtuelle (VIP) stable. En utilisant une adresse IP de service, les clients peuvent se connecter de manière fiable aux conteneurs exécutés à l'intérieur des pods.
Par exemple, votre application comporte des groupes de pods exécutés pour différentes sections, comme un groupe pour servir la charge frontale aux utilisateurs et un autre groupe pour exécuter les processus back-end et un troisième groupe se connectant à une source de données externe.
Ce sont les services qui permettent la connectivité entre ces groupes de pods. Vous pouvez avoir autant de services que nécessaire au sein du cluster.
Pourquoi utilisons-nous le service ?
Les pods Kubernetes sont des ressources non fiables et non permanentes, car ils sont créés et détruits pour correspondre à l'état de votre cluster. Lorsque vous créez un déploiement Kubernetes pour exécuter votre application, il peut créer et détruire des pods de manière dynamique.
Chaque pod a sa propre adresse IP et cela peut changer ultérieurement car ce pod peut être détruit et un nouveau peut apparaître.
Cela conduit à un problème :si un ensemble de pods (appelez-les "backends") fournit des fonctionnalités à d'autres pods (appelez-les "frontends") à l'intérieur de votre cluster, comment les frontends trouvent-ils et gardent-ils une trace de l'adresse IP à laquelle se connecter ? , pour que le frontend puisse utiliser la partie backend de la charge de travail ?
C'est la raison pour laquelle les architectes de Kubernetes ont proposé une solution appelée Service.
Suppression du service Kubernetes
Commencez par répertorier les services disponibles dans votre cluster kubernetes.
Cette commande listera tous les services créés dans tous les espaces de noms :
[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
Vous pouvez voir un service nommé my-dep-svc
créé dans webapps
espace de noms.
Décrivons ce service pour comprendre rapidement ses fonctionnalités.
[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>
Comme je l'ai mentionné précédemment, un service est un regroupement de pods. Vous pouvez constater que ce service a deux points de terminaison associés à cela. Plus d'informations sur l'association des points de terminaison dans un futur article peut-être.
Service my-dep-svc
a une adresse IP virtuelle qui lui est assignée 10.100.159.167
.
Pour une démonstration rapide, essayons d'accéder à l'application exécutée sur ces deux points de terminaison (pods) en utilisant l'adresse IP du service (10.100.159.167) et son port (8080).
[email protected]:~/pod-create# curl 10.100.159.167:8080
<html><body><h1>It works!</h1></body></html>
[email protected]:~/pod-create#
Je pense que vous avez peut-être déjà une idée de base sur les services Kubernetes.
Désormais, il existe deux façons de supprimer un service dans Kubernetes. Voyons-les un par un.
Méthode 1 :Utiliser la commande kubectl delete pour supprimer le service
Vous pouvez supprimer un service dans Kubernetes en fournissant le nom de la ressource directement à la commande kubectl :
[email protected]:~/pod-create# kubectl delete svc --namespace=webapps my-dep-svc
service "my-dep-svc" deleted
Maintenant, si vous répertoriez tous les services :
[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éthode 2 :Supprimer en faisant référence au même fichier YAML par lequel il a été créé
Le fichier de configuration YAML à partir duquel le service my-dep-svc
a été créé.
[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
Supprimez maintenant le service en faisant référence au même fichier YAML qui a été utilisé pour le créer.
[email protected]:~/pod-create# kubectl delete -f my-dep-svc.yml
service "my-dep-svc" deleted
Encore une fois, listez tous les services.
[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
C'est ça. Vous avez appris à supprimer un service dans Kubernetes. Restez à l'écoute pour en savoir plus.