We couldn't find a match for given <KEYWORD>, please try again.

Che cosa sono i servizi Kubernetes?

Un servizio Kubernetes è un'astrazione logica per un gruppo distribuito di pod in un cluster (che eseguono tutti la stessa funzione).

Poiché i pod sono temporanei, un servizio consente di assegnare un nome e un indirizzo IP univoco (clusterIP) a un gruppo di pod che forniscono funzioni specifiche (servizi web, elaborazione delle immagini, ecc.). Finché il servizio è in esecuzione, l'indirizzo IP non cambierà. I servizi definiscono anche le policy per l'accesso.

Stato di Kubernetes

Operatività completa con Kubernetes

In Kubernetes, qual è la differenza tra un servizio e un deployment?

In Kubernetes, un deployment è un metodo per avviare un pod con applicazioni containerizzate e assicurare che il numero necessario di repliche sia sempre in esecuzione nel cluster.

Dall'altro lato, un servizio è responsabile dell'esposizione di un'interfaccia a tali pod, che consente l'accesso alla rete dall'interno del cluster o tra i processi esterni e il servizio.

Quali sono i componenti dei servizi Kubernetes?

I servizi Kubernetes connettono un set di pod a un nome di servizio e a un indirizzo IP astratti. I servizi forniscono l'individuazione e il routing tra i pod. Ad esempio, i servizi connettono il front-end di un'applicazione al relativo back-end, ognuno dei quali viene eseguito in deployment separati in un cluster. I servizi utilizzano etichette e selettori per abbinare i pod ad altre applicazioni. Gli attributi principali di un servizio Kubernetes sono:

  • Un selettore di etichette che individua i pod.
  • L'indirizzo IP del cluster e il numero di porta assegnato.
  • Le definizioni delle porte.
  • La mappatura opzionale delle porte in ingresso a una targetPort.

I servizi possono essere definiti senza selettori di pod. Ad esempio, per puntare un servizio a un altro servizio in uno spazio dei nomi o cluster diverso.

Quali sono i tipi di servizi Kubernetes?

  • ClusterIP. Espone un servizio accessibile solo dall'interno del cluster.
  • NodePort. Espone un servizio tramite una porta statica sull'IP di ciascun nodo.
  • LoadBalancer. Espone il servizio tramite il bilanciamento del carico del cloud provider.
  • ExternalName. Mappa un servizio a un campo externalName predefinito restituendo un valore per il record CNAME.

Che cos'è il servizio Kubernetes ClusterIP?

ClusterIP è il tipo di servizio predefinito utilizzato per esporre un servizio su un indirizzo IP interno al cluster. L'accesso è consentito solo dall'interno del cluster.

Che cos'è un servizio Kubernetes privo di interfaccia?

I servizi che non richiedono il bilanciamento del carico ed espongono un solo IP possono creare un servizio "privo di interfaccia" specificando "none" come clusterIP.

I servizi privi di interfaccia possono essere definiti con i selettori, nel qual caso i record degli endpoint vengono creati nell'API che modifica il DNS per restituire gli indirizzi che puntano ai pod che espongono il servizio. I servizi privi di interfaccia senza selettori non creano record di endpoint. Il sistema DNS configura il record CNAME o un record per gli endpoint con lo stesso nome del servizio.

Che cos'è un servizio Kubernetes NodePort?

Le NodePort sono porte aperte su ogni nodo del cluster. Kubernetes indirizzerà al servizio il traffico che entra in una NodePort, anche se il servizio non è in esecuzione su quel nodo. NodePort è inteso come base per altri metodi di ingresso di livello superiore come i bilanciamenti del carico ed è utile nello sviluppo.

Che cos'è il servizio Kubernetes ExternalName?

I servizi ExternalName sono simili agli altri servizi Kubernetes; tuttavia, invece di essere accessibili tramite un indirizzo clusterIP, restituiscono un record CNAME con un valore definito nel parametro externalName: durante la creazione del servizio.

Che cos'è un servizio Kubernetes LoadBalancer?

Per i cluster in esecuzione su public cloud provider come AWS o Azure, la creazione di un servizio LoadBalancer equivale a un servizio clusterIP, estendendolo a un bilanciamento del carico esterno specifico per il cloud provider. Kubernetes crea automaticamente il bilanciamento del carico, fornisce regole firewall se necessario e popola il servizio con l'indirizzo IP esterno assegnato dal cloud provider.

Come funzionano i servizi Kubernetes?

I servizi puntano semplicemente ai pod utilizzando le etichette. Poiché i servizi non sono specifici del nodo, un servizio può puntare a un pod indipendentemente dalla posizione in cui viene eseguito nel cluster in un dato momento. Esponendo l'indirizzo IP di un servizio e il nome di un servizio DNS, l'applicazione può essere raggiunta con entrambi i metodi, purché il servizio esista.

Come si definisce un servizio Kubernetes?

I servizi sono definiti in YAML, così come tutti gli oggetti Kubernetes. Supponiamo che tu abbia distribuito pod che eseguono un servizio di back-end per elaborare i dati provenienti da un front-end web. Per esporre un servizio denominato "service-backend" nel deployment "deployment-backend", è necessario utilizzare:

apiVersion: v1

kind: Service

metadata:

name: service-backend

spec:

ports:

- port: 4000

protocol: TCP

targetPort: 333

selector:

run: deployment-backend

type: ClusterIP

Viene creato il servizio "service-backend" e qualsiasi pod nel cluster può accedervi sulla propria porta 333 tramite http://service-backend:4000 o all'indirizzo IP del cluster utilizzando la porta 4000.

I servizi Kubernetes possono anche essere creati utilizzando il comando "kubectl expose", che non richiede un file YAML. Lo stesso servizio può essere creato utilizzando il comando:

kubectl expose deployment deployment-backend - - port=333- - target-port=4000 - - name=service-backend

Come si accede a un servizio Kubernetes?

Esistono due modi per individuare un servizio Kubernetes. Vediamoli nel dettaglio.

DNS (il più comune): il metodo DNS è il metodo consigliato per l'individuazione dei servizi. Per utilizzare questo metodo, è necessario prima installare un server DNS nel cluster. Il server DNS monitora l'API Kubernetes e, quando viene creato un nuovo servizio, il suo nome diventa disponibile per una facile risoluzione per le applicazioni richiedenti.

Variabile ENV: questo metodo si basa sull'aggiunta di variabili di ambiente da parte del kubelet per ogni servizio attivo per ogni nodo su cui è in esecuzione un pod.

Soluzioni e prodotti correlati

Laboratori: modernizzazione delle app

Trasferisci le tue app nel cloud in poche settimane.

Tanzu Kubernetes for Operation

La base per un'infrastruttura di container multi-cloud moderna.

Tanzu Application Platform

Un'esperienza di sviluppo multi-cloud superiore su Kubernetes.