Questa pagina spiega come eseguire il deployment di carichi di lavoro che utilizzano il protocollo Stream Control Transmission Protocol (SCTP) sui cluster standard Google Kubernetes Engine (GKE).
SCTP è supportato dalla tecnologia Cilium. Poiché GKE Dataplane V2 è implementato utilizzando Cilium, puoi utilizzare SCTP solo sui cluster in cui è stato abilitato GKE Dataplane V2. Con il supporto di SCTP, puoi abilitare la comunicazione SCTP diretta per il traffico pod-to-pod e pod-to-service. Per saperne di più, consulta Supporto SCTP su Cilium.
Questa pagina è rivolta a operatori e sviluppatori che eseguono il provisioning e la configurazione delle risorse cloud e il deployment di app e servizi. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui si fa riferimento nei contenuti di Google Cloud, consulta la pagina Ruoli utente e attività comuni di GKE Enterprise.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione
eseguendo
gcloud components update
.
Requisiti e limitazioni
Il supporto di SCTP sui cluster GKE Standard presenta i seguenti requisiti e limitazioni:
- Il cluster deve eseguire GKE 1.32.2-gke.1297000 o versioni successive.
- I nodi del cluster devono utilizzare immagini dei nodi Ubuntu. SCTP non è supportato per le immagini Container-Optimized OS.
- Per attivare il supporto di SCTP, assicurati che le immagini container basate su Ubuntu e il
sistema operativo del nodo GKE sottostante siano caricate con il modulo del kernel
sctp
. - Non puoi utilizzare SCTP sui cluster in cui è abilitato il supporto di più reti per i pod.
- Il tempo di configurazione di un'associazione SCTP può essere più lungo di quello di una connessione TCP. Progetta le tue applicazioni in modo che gestiscano i potenziali ritardi durante la creazione delle associazioni.
- Per scoprire di più su ciò che Cilium supporta e non supporta con SCTP, consulta la documentazione di Cilium.
Esegui il deployment dei carichi di lavoro con SCTP
Testa a fondo il deployment in un ambiente non di produzione prima di eseguire il deployment dei carichi di lavoro in produzione.
A partire dalla versione 1.32.2-gke.1297000 di GKE, SCTP è abilitato per impostazione predefinita nei cluster che utilizzano GKE Dataplane V2 e immagini dei nodi Ubuntu. Per eseguire il deployment dei workload con SCTP, completa i seguenti passaggi:
Per creare un cluster con GKE Dataplane V2 e immagini Ubuntu, esegui il seguente comando:
gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --cluster-version=CLUSTER_VERSION \ --enable-dataplane-v2 \ --image-type=ubuntu_containerd
Sostituisci i seguenti valori:
CLUSTER_NAME
: il nome del tuo cluster.CONTROL_PLANE_LOCATION
: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.CLUSTER_VERSION
: la versione di GKE, che deve essere 1.32.2-gke.1297000 o successive.
Per inserire l'applicazione in un container, assicurati che l'immagine container includa un'applicazione configurata per utilizzare SCTP. Puoi utilizzare qualsiasi applicazione che supporti SCTP, ad esempio un'applicazione personalizzata.
Di seguito è riportato un esempio di
Dockerfile
per containerizzare l'applicazione, supponendo che utilizzi Docker:Crea l'immagine ed eseguine il push in un registro dei container come Artifact Registry. Per ulteriori informazioni su come funziona questo file, consulta Riferimento a Dockerfile nella documentazione di Docker.
Per creare un deployment e un servizio, salva il seguente manifest come
sctp-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: sctp-app spec: replicas: 1 selector: matchLabels: app: sctp-app template: metadata: labels: app: sctp-app spec: containers: - name: sctp-container image: CONTAINER_IMAGE ports: - containerPort: PORT protocol: SCTP --- apiVersion: v1 kind: Service metadata: name: sctp-service spec: selector: app: sctp-app ports: - protocol: SCTP port: PORT targetPort: PORT type: ClusterIP
Sostituisci quanto segue:
CONTAINER_IMAGE
: l'immagine del container che hai creato nel passaggio precedente.PORT
: i numeri di porta SCTP e di porta di destinazione dell'applicazione. Il valore diport
etargetPort
deve essere lo stesso.
Per applicare il deployment e il servizio, esegui questo comando:
kubectl apply -f sctp-deployment.yaml
Per verificare la connettività SCTP per il servizio, crea un pod all'interno dello stesso cluster ed esegui questo comando:
kubectl run sctp-client \ --image=ubuntu:latest \ --namespace=default \ -it --rm \ --command -- bash -c 'apt-get update && apt-get install -y socat && (echo "Hello, SCTP!"; sleep 1) | socat - SCTP:sctp-service:PORT'
L'output è simile al seguente:
Preparing to unpack .../socat_1.8.0.0-4build3_amd64.deb ... Setting up socat (1.8.0.0-4build3) ... Hello, SCTP!
Risoluzione dei problemi
Se riscontri problemi di connettività SCTP, segui queste indicazioni per determinare l'origine del problema:
Controlla i log dei pod. Per controllare i log della tua applicazione per eventuali errori, esegui questo comando:
kubectl logs POD_NAME
Questi log possono aiutarti a identificare la causa dell'arresto anomalo del pod.
Controlla lo stato dell'oggetto servizio SCTP:
kubectl describe service SCTP_SERVICE_NAME
Controlla i criteri di rete. Le policy di rete possono limitare il traffico SCTP. Assicurati che i criteri di rete consentano il traffico SCTP necessario per le tue applicazioni.
Controlla lo stato di GKE Dataplane V2. Per verificare che GKE Dataplane V2 sia abilitato sul cluster, esegui questo comando:
kubectl -n kube-system get pods -l k8s-app=cilium -o wide
Verifica che l'output includa pod con il prefisso
anetd-
. anetd è il controller di rete per GKE Dataplane V2.Per migliorare la velocità effettiva, aumenta i parametri
sysctl
,net.core.wmem_default
enet.core.rmem_default
a un valore maggiore, ad esempio 4194304 (4 MB). Per saperne di più, consulta Opzioni di configurazione di Sysctl.Potresti riscontrare problemi se utilizzi Network Address Translation (NAT) con SCTP in GKE. Per saperne di più su ciò che Cilium supporta con SCTP, consulta la documentazione di Cilium.
I pacchetti SCTP sono soggetti all'unità massima di trasmissione (MTU) della rete. Assicurati che l'MTU della rete sia sufficiente per il traffico SCTP.
Le prestazioni di SCTP possono essere influenzate da fattori quali la latenza di rete, la perdita di pacchetti e l'ottimizzazione del kernel. Monitora il rendimento di SCTP della tua applicazione e modifica le impostazioni in base alle necessità.
Passaggi successivi
- Scopri di più sul supporto SCTP nella documentazione di Cilium.
- Scopri come abilitare GKE Dataplane V2 sul tuo cluster.