In diesem Kubernetes-Tipp erfahren Sie, wie Sie einen Dienst in Kubernetes löschen.
Was ist ein Kubernetes-Dienst?
Dienste ermöglichen die Kommunikation zwischen verschiedenen Komponenten innerhalb und außerhalb der Anwendung. Kubernetes-Dienste helfen Ihnen, Anwendungen mit anderen Anwendungen oder Benutzern zu verbinden. Es bietet eine stabile virtuelle IP (VIP)-Adresse. Durch die Verwendung einer Dienst-IP können Clients zuverlässig eine Verbindung zu den Containern herstellen, die in den Pods ausgeführt werden.
Beispielsweise verfügt Ihre Anwendung über Gruppen von Pods, die für verschiedene Abschnitte ausgeführt werden, z. B. eine Gruppe zum Bereitstellen von Front-End-Load für Benutzer und eine andere Gruppe zum Ausführen von Back-End-Prozessen und eine dritte Gruppe, die eine Verbindung zu einer externen Datenquelle herstellt.
Es sind Dienste, die die Konnektivität zwischen diesen Gruppen von Pods ermöglichen. Sie können innerhalb des Clusters beliebig viele Dienste haben.
Warum nutzen wir den Service?
Kubernetes-Pods sind unzuverlässige und nicht dauerhafte Ressourcen, da sie erstellt und zerstört werden, um dem Zustand Ihres Clusters zu entsprechen. Wenn Sie eine Kubernetes-Bereitstellung zum Ausführen Ihrer App erstellen, kann diese Pods dynamisch erstellen und löschen.
Jeder Pod hat seine eigene IP-Adresse und die kann sich zu einem späteren Zeitpunkt ändern, da dieser Pod zerstört werden und ein neuer auftauchen könnte.
Dies führt zu einem Problem:Wenn einige Pods (nennen wir sie „Back-Ends“) innerhalb Ihres Clusters Funktionen für andere Pods (nennen wir sie „Front-Ends“) bereitstellen, wie finden die Front-Ends dann heraus, mit welcher IP-Adresse eine Verbindung hergestellt werden soll, und behalten sie im Auge , damit das Frontend den Backend-Teil der Workload verwenden kann?
Aus diesem Grund haben die Kubernetes-Architekten eine Lösung entwickelt, die als Service bekannt ist.
Löschen des Kubernetes-Dienstes
Listen Sie zuerst die verfügbaren Dienste in Ihrem Kubernetes-Cluster auf.
Dieser Befehl listet alle Dienste auf, die in allen Namespaces erstellt wurden:
[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
Sie können einen Dienst namens my-dep-svc
sehen innerhalb von webapps
erstellt Namensraum.
Lassen Sie uns diesen Dienst beschreiben, um seine Funktionalität schnell zu verstehen.
[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>
Wie ich bereits erwähnt habe, ist ein Service eine Gruppierung von Pods. Sie können, dass diesem Dienst zwei Endpunkte zugeordnet sind. Mehr über die Zuordnung von Endpunkten vielleicht in einem zukünftigen Artikel.
Dienst my-dep-svc
hat eine virtuelle IP zugewiesen 10.100.159.167
.
Versuchen wir für eine kurze Demo, auf die Anwendung zuzugreifen, die auf diesen beiden Endpunkten (Pods) ausgeführt wird, indem wir die Service-IP (10.100.159.167) und ihren Port (8080) verwenden.
[email protected]:~/pod-create# curl 10.100.159.167:8080
<html><body><h1>It works!</h1></body></html>
[email protected]:~/pod-create#
Ich denke, Sie haben jetzt vielleicht eine grundlegende Vorstellung von Kubernetes-Diensten.
Nun gibt es zwei Möglichkeiten, einen Dienst in Kubernetes zu löschen. Sehen wir sie uns nacheinander an.
Methode 1:Verwenden Sie den kubectl delete-Befehl, um den Dienst zu löschen
Sie können einen Dienst in Kubernetes löschen, indem Sie den Ressourcennamen direkt an den kubectl-Befehl übergeben:
[email protected]:~/pod-create# kubectl delete svc --namespace=webapps my-dep-svc
service "my-dep-svc" deleted
Wenn Sie nun alle Dienste auflisten:
[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
Methode 2:Löschen durch Bezugnahme auf dieselbe YAML-Datei, durch die sie erstellt wurde
Die YAML-Konfigurationsdatei, aus der der Dienst my-dep-svc
wurde erstellt.
[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
Löschen Sie nun den Dienst, indem Sie auf dieselbe YAML-Datei verweisen, mit der er erstellt wurde.
[email protected]:~/pod-create# kubectl delete -f my-dep-svc.yml
service "my-dep-svc" deleted
Listen Sie noch einmal alle Dienste auf.
[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
Das ist es. Sie haben gelernt, Dienste in Kubernetes zu löschen. Bleiben Sie dran für mehr.