0Pricing
DevOps Bootcamp · Lezione

Tipi di Service: ClusterIP, NodePort, LoadBalancer

Scopra i diversi modi per esporre i Service all'interno e all'esterno del cluster Kubernetes.

Tipi di Service: ClusterIP, NodePort, LoadBalancer è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Esigenze di esposizione dei Service

In Kubernetes, i Pod sono effimeri e hanno indirizzi IP dinamici. I Service forniscono un accesso di rete stabile alle applicazioni. Ma come si espongono?

A seconda che l'applicazione debba essere accessibile dall'interno o dall'esterno del cluster, e del modo in cui deve esserlo, Kubernetes offre diversi tipi di Service. Esaminiamo i tre principali!

ClusterIP: accesso interno

ClusterIP è il tipo di Service predefinito. Assegna al Service un indirizzo IP interno stabile, accessibile solo dall'interno del cluster Kubernetes.

  • I Pod possono raggiungere altri Pod usando questi ClusterIP e il nome del Service.
  • È perfetto per i servizi backend che non devono essere esposti direttamente all'esterno.
  • Lo si può considerare un load balancer interno per i Pod.

YAML di un Service ClusterIP

Ecco come definire un Service di tipo ClusterIP. Noti il campo type: ClusterIP, anche se è facoltativo perché si tratta del valore predefinito.

apiVersion: v1
kind: Service
metadata:
  name: my-internal-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

Accesso ai Service ClusterIP

Una volta eseguito il deployment, Kubernetes assegna automaticamente a questo Service un indirizzo IP interno univoco (il ClusterIP). Gli altri Pod possono quindi usare il nome del Service (ad esempio my-internal-service) o il relativo IP per connettersi.

Il servizio DNS di Kubernetes risolve il nome del Service nel suo ClusterIP, rendendo la comunicazione interna semplice e affidabile.

NodePort: accesso esterno

E se fosse necessario accedere all'applicazione dall'esterno del cluster? È qui che entra in gioco NodePort.

Un Service NodePort espone l'applicazione su una porta statica sull'indirizzo IP di ogni nodo del cluster. Il traffico inviato a NodeIP:NodePort viene instradato al Service.

  • È utile per lo sviluppo e per deployment di piccole dimensioni.
  • NodePort rientra solitamente nell'intervallo 30000-32767.

YAML di un Service NodePort

Per creare un Service NodePort, imposti esplicitamente type: NodePort. Se non ne specifica uno, Kubernetes sceglierà automaticamente una porta disponibile nell'intervallo NodePort.

apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30080 # Optional: K8s picks if omitted
  type: NodePort

Connessione tramite NodePort

Dopo aver eseguito il deployment di un Service NodePort, può accedere all'applicazione dall'esterno del cluster usando <AnyNodeIP>:<NodePort>.

Ad esempio, se l'IP di un nodo è 192.168.1.100 e il NodePort assegnato è 30080, può raggiungere l'applicazione all'indirizzo http://192.168.1.100:30080.

LoadBalancer: integrazione con il cloud

Negli ambienti di produzione sui provider cloud (AWS, GCP, Azure), spesso si preferisce il tipo di Service LoadBalancer. Questo esegue automaticamente il provisioning di un load balancer cloud esterno.

Al load balancer viene assegnato un indirizzo IP pubblico e il traffico esterno viene distribuito ai Pod del Service. Tutto il complesso instradamento viene gestito automaticamente.

YAML di un Service LoadBalancer

Definire un Service LoadBalancer è semplice. Il provider cloud si occuperà del provisioning del load balancer esterno.

apiVersion: v1
kind: Service
metadata:
  name: my-loadbalancer-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

Accesso esterno con LoadBalancer

Una volta eseguito il deployment, il provider cloud creerà un load balancer dedicato e gli assegnerà un indirizzo IP esterno o un hostname. Potrà quindi usare questo endpoint pubblico per accedere all'applicazione.

In questo modo si ottiene un'esposizione dei Service a Internet robusta, scalabile e altamente disponibile.

Verifica rapida: tipi di Service

Quali tipi di Service Kubernetes consentono l'accesso esterno diretto all'applicazione dall'esterno del cluster?

Riepilogo: scegliere il Service

Ha imparato a conoscere i tre principali tipi di Service Kubernetes:

  • ClusterIP: per l'accesso esclusivamente interno al cluster.
  • NodePort: espone i Service su una porta statica sull'IP di ogni nodo, consentendo l'accesso esterno.
  • LoadBalancer: si integra con i provider cloud per eseguire il provisioning di un load balancer esterno con un IP pubblico.

Scelga il tipo corretto in base alle esigenze di esposizione dell'applicazione e all'ambiente di deployment.

Domande Frequenti

La lezione «Tipi di Service: ClusterIP, NodePort, LoadBalancer» è gratuita?

Sì — il testo completo di «Tipi di Service: ClusterIP, NodePort, LoadBalancer» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Tipi di Service: ClusterIP, NodePort, LoadBalancer»?

Scopra i diversi modi per esporre i Service all'interno e all'esterno del cluster Kubernetes. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Tipi di Service: ClusterIP, NodePort, LoadBalancer»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Esposizione delle app con i Service
  2. Tipi di Service: ClusterIP, NodePort, LoadBalancer
  3. Ingress per l'accesso esterno
  4. DNS e service discovery
← Torna a DevOps Bootcamp