Docker & Kubernetes for Developers · Lezione

Esposizione delle applicazioni con i Service

Scopra i diversi tipi di Service Kubernetes (ClusterIP, NodePort, LoadBalancer) per rendere accessibili le sue applicazioni.

Lezione 2 di 412 passaggi

Esposizione delle applicazioni con i Service è una lezione Docker & Kubernetes for Developers 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 Docker & Kubernetes for Developers, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Docker & Kubernetes for Developers include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

What are K8s Services?

When you deploy applications in Kubernetes, your Pods can come and go. They get new IPs, they scale up or down, and they might even crash and restart.

This creates a challenge: how do other parts of your application, or external users, consistently find and communicate with these ever-changing Pods?

Services: Stable Access Point

Kubernetes Services solve this problem by providing a stable network abstraction over a set of Pods. Think of a Service as a single, unchanging IP address and DNS name for your application.

  • Services act as load balancers, distributing traffic to healthy Pods.
  • They ensure your application remains reachable even if individual Pods change or fail.

How Services Find Pods

Services don't directly manage Pods. Instead, they use labels and selectors to find the Pods they should route traffic to. When a Pod matches a Service's selector, it becomes an endpoint for that Service.

  • Labels: Key-value pairs attached to objects (like Pods) for identification.
  • Selectors: Rules defined in a Service to match Pod labels.

ClusterIP: Internal Only

The ClusterIP Service type is the default. It exposes the Service on an internal IP address within the cluster. This means the Service is only reachable from inside the cluster.

It's perfect for internal communication between different services in your application, like a frontend talking to a backend database.

ClusterIP Service Example

Here's a YAML definition for a ClusterIP Service. It targets Pods with the label app: my-app and exposes port 80, routing traffic to container port 8080.

Apply it with kubectl apply -f service.yaml.

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

NodePort: External via Node IP

A NodePort Service opens a specific port on all worker nodes in your cluster. External traffic can reach your Service by contacting any node's IP address on that specific port (e.g., NodeIP:NodePort).

This is useful for exposing services to the outside world, especially in small setups or for development, without needing a cloud load balancer.

NodePort Service Example

This NodePort Service will expose port 80 of your application on a high port (typically 30000-32767) on every node. You can specify a nodePort or let Kubernetes assign one.

After applying, find the assigned port with kubectl get svc.

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

LoadBalancer: Cloud Integration

A LoadBalancer Service is primarily used when running Kubernetes on a cloud provider (like AWS, GCP, Azure). It automatically provisions an external cloud load balancer.

This provides a dedicated, stable external IP address and often integrates with cloud-specific features like SSL termination and advanced routing.

LoadBalancer Service Example

When deployed on a cloud provider, this Service will automatically create and configure an external load balancer, assigning it an external IP address.

The external IP will be visible via kubectl get svc once provisioned.

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

Service Type Overview

Let's quickly compare the primary Service types:

  • ClusterIP: Internal access only, within the cluster.
  • NodePort: External access via a specific port on each node.
  • LoadBalancer: External access via a cloud provider's load balancer, stable external IP.

Choosing the right type depends on whether your application needs to be accessible internally or externally, and your deployment environment.

Service Type Quiz

Which Kubernetes Service types provide a direct mechanism for external traffic to reach applications running inside the cluster?

Recap: Exposing Apps

Great job! You've learned how Kubernetes Services abstract network access to your Pods and make your applications reachable. We explored three main types:

  • ClusterIP: For internal-only communication within the cluster.
  • NodePort: Exposes services on a static port across all nodes for external access.
  • LoadBalancer: Integrates with cloud providers to provision an external load balancer, providing a stable external IP.

Understanding these Service types is fundamental for designing accessible and robust applications in Kubernetes.

Gratis per iniziare

Impara Docker & Kubernetes for Developers con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
12
Lezioni
48

Domande Frequenti

La lezione «Esposizione delle applicazioni con i Service» è gratuita?

Sì — il testo completo di «Esposizione delle applicazioni con i Service» è 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 Docker & Kubernetes for Developers, passa a CoddyKit PRO. Il corso Docker & Kubernetes for Developers include 4 lezioni in totale.

Cosa imparerò in «Esposizione delle applicazioni con i Service»?

Scopra i diversi tipi di Service Kubernetes (ClusterIP, NodePort, LoadBalancer) per rendere accessibili le sue applicazioni. Eserciti Docker & Kubernetes for Developers 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 Docker & Kubernetes for Developers?

Non è richiesta alcuna esperienza precedente. Docker & Kubernetes for Developers 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 «Esposizione delle applicazioni con i Service»?

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 Docker & Kubernetes for Developers?

Sì. Ogni lezione Docker & Kubernetes for Developers 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. Comprendere le Deployment di Kubernetes
  2. Esposizione delle applicazioni con i Service
  3. Scalabilità e autoriparazione delle applicazioni
  4. Aggiornamenti rolling e rollback
← Torna a Docker & Kubernetes for Developers