In questo suggerimento su Kubernetes imparerai come eliminare un servizio in Kubernetes.
Cos'è un servizio Kubernetes?
I servizi consentono la comunicazione tra vari componenti all'interno e all'esterno dell'applicazione. I servizi Kubernetes ti aiutano a connettere le applicazioni insieme ad altre applicazioni o utenti. Fornisce un indirizzo IP virtuale (VIP) stabile. Utilizzando un IP di servizio, i client possono connettersi in modo affidabile ai contenitori in esecuzione all'interno dei pod.
Ad esempio, la tua applicazione ha gruppi di pod in esecuzione per varie sezioni, come un gruppo per fornire il carico front-end agli utenti e un altro gruppo per l'esecuzione di processi back-end e un terzo gruppo che si connette a un'origine dati esterna.
Sono i servizi che consentono la connettività tra questi gruppi di pod. Puoi avere tutti i servizi richiesti all'interno del cluster.
Perché utilizziamo il servizio?
I pod Kubernetes sono risorse inaffidabili e non permanenti perché vengono creati e distrutti per adattarsi allo stato del tuo cluster. Quando crei una distribuzione Kubernetes per eseguire la tua app, può creare e distruggere i pod in modo dinamico.
Ogni pod ha il proprio indirizzo IP e questo potrebbe cambiare in un secondo momento perché quel pod potrebbe essere distrutto e potrebbe emergerne uno nuovo.
Questo porta a un problema:se alcuni set di Pod (chiamateli "backend") forniscono funzionalità ad altri Pod (chiamateli "frontend") all'interno del vostro cluster, in che modo i frontend scoprono e tengono traccia di quale indirizzo IP connettersi a , in modo che il frontend possa utilizzare la parte backend del carico di lavoro?
Questo è il motivo per cui gli architetti Kubernetes hanno escogitato una soluzione nota come Servizio.
Eliminazione del servizio Kubernetes
Per prima cosa elenca i servizi disponibili nel tuo cluster kubernetes.
Questo comando elencherà tutti i servizi creati all'interno di tutti gli spazi dei nomi:
[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
Puoi vedere un servizio chiamato my-dep-svc
creato all'interno di webapps
spazio dei nomi.
Descriviamo quel servizio per comprenderne rapidamente la funzionalità.
[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>
Come accennato in precedenza, un servizio è un raggruppamento di pod. È possibile che questo servizio abbia due endpoint associati a questo. Maggiori informazioni sull'associazione degli endpoint in un articolo futuro forse.
Servizio my-dep-svc
ha un IP virtuale assegnato 10.100.159.167
.
Per una rapida demo, proviamo ad accedere all'applicazione in esecuzione su questi due endpoint (pod) utilizzando l'IP del servizio (10.100.159.167) e la relativa porta (8080).
[email protected]:~/pod-create# curl 10.100.159.167:8080
<html><body><h1>It works!</h1></body></html>
[email protected]:~/pod-create#
Penso che a questo punto potresti avere un'idea di base sui servizi Kubernetes.
Ora, ci sono due modi per eliminare un servizio in Kubernetes. Vediamoli uno per uno.
Metodo 1:usa il comando kubectl delete per eliminare il servizio
Puoi eliminare un servizio in Kubernetes fornendo il nome della risorsa direttamente al comando kubectl:
[email protected]:~/pod-create# kubectl delete svc --namespace=webapps my-dep-svc
service "my-dep-svc" deleted
Ora, se elenchi tutti i servizi:
[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
Metodo 2:elimina facendo riferimento allo stesso file YAML con cui è stato creato
Il file di configurazione YAML da cui il servizio my-dep-svc
è stato creato.
[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
Ora elimina il servizio facendo riferimento allo stesso file YAML utilizzato per crearlo.
[email protected]:~/pod-create# kubectl delete -f my-dep-svc.yml
service "my-dep-svc" deleted
Elenca di nuovo tutti i servizi.
[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
Questo è tutto. Hai imparato a eliminare il servizio in Kubernetes. Resta sintonizzato per saperne di più.