Cette page explique comment déployer des charges de travail qui utilisent le protocole SCTP (Stream Control Transmission Protocol) sur des clusters Google Kubernetes Engine (GKE) Standard.
SCTP est compatible avec la technologie Cilium. Étant donné que GKE Dataplane V2 est implémenté à l'aide de Cilium, vous ne pouvez utiliser SCTP que sur les clusters sur lesquels GKE Dataplane V2 a été activé. Grâce à la prise en charge de SCTP, vous pouvez activer la communication SCTP directe pour le trafic entre pods et entre pods et services. Pour en savoir plus, consultez SCTP support on Cilium (Prise en charge de SCTP sur Cilium).
Cette page est destinée aux opérateurs et aux développeurs qui provisionnent et configurent des ressources cloud, et déploient des applications et des services. Pour en savoir plus sur les rôles courants et les exemples de tâches mentionnés dans le contenu Google Cloud, consultez Rôles utilisateur et tâches courantes de GKE Enterprise.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande
gcloud components update
.
Conditions requises et limites
La compatibilité avec SCTP sur les clusters GKE Standard présente les exigences et limites suivantes :
- Votre cluster doit exécuter GKE version 1.32.2-gke.1297000 ou ultérieure.
- Les nœuds de cluster doivent utiliser des images de nœud Ubuntu. SCTP n'est pas compatible avec les images Container-Optimized OS.
- Pour activer la prise en charge de SCTP, assurez-vous que vos images de conteneur basées sur Ubuntu et l'OS du nœud GKE sous-jacent sont chargées avec le module de noyau
sctp
. - Vous ne pouvez pas utiliser SCTP sur les clusters pour lesquels la compatibilité multiréseau des pods est activée.
- Le temps de configuration d'une association SCTP peut être plus long que celui d'une connexion TCP. Concevez vos applications pour gérer les éventuels retards lors de l'établissement des associations.
- Pour en savoir plus sur les fonctionnalités SCTP compatibles et non compatibles avec Cilium, consultez la documentation Cilium.
Déployer des charges de travail avec SCTP
Testez minutieusement votre déploiement dans un environnement hors production avant de déployer des charges de travail en production.
À partir de la version 1.32.2-gke.1297000 de GKE, le protocole SCTP est activé par défaut dans les clusters qui utilisent GKE Dataplane V2 et les images de nœuds Ubuntu. Pour déployer des charges de travail avec SCTP, procédez comme suit :
Pour créer un cluster avec GKE Dataplane V2 et des images Ubuntu, exécutez la commande suivante :
gcloud container clusters create CLUSTER_NAME \ --region=REGION \ --cluster-version=CLUSTER_VERSION \ --enable-dataplane-v2 \ --image-type=ubuntu_containerd
Remplacez les valeurs suivantes :
CLUSTER_NAME
: nom du clusterREGION
: région Google Cloud dans laquelle le cluster est créé.CLUSTER_VERSION
: version de GKE, qui doit être 1.32.2-gke.1297000 ou ultérieure.
Pour conteneuriser l'application, assurez-vous que votre image de conteneur inclut une application configurée pour utiliser SCTP. Vous pouvez utiliser n'importe quelle application compatible avec SCTP, comme une application personnalisée.
Voici un exemple de
Dockerfile
pour conteneuriser l'application, en supposant que vous utilisiez Docker :Créez et transférez l'image vers un registre de conteneurs tel qu'Artifact Registry. Pour en savoir plus sur le fonctionnement de ce fichier, consultez la documentation de référence sur Dockerfile dans la documentation Docker.
Pour créer un déploiement et un service, enregistrez le fichier manifeste suivant sous le nom
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
Remplacez les éléments suivants :
CONTAINER_IMAGE
: image de conteneur que vous avez créée à l'étape précédente.PORT
: numéros de port SCTP et de port cible de l'application. La valeur deport
et detargetPort
doit être identique.
Pour appliquer le déploiement et le service, exécutez la commande suivante :
kubectl apply -f sctp-deployment.yaml
Pour vérifier la connectivité SCTP du service, créez un pod dans le même cluster et exécutez la commande suivante :
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'
Le résultat ressemble à ce qui suit :
Preparing to unpack .../socat_1.8.0.0-4build3_amd64.deb ... Setting up socat (1.8.0.0-4build3) ... Hello, SCTP!
Dépannage
Si vous rencontrez des problèmes de connectivité SCTP, suivez ces conseils pour identifier la source du problème :
Vérifiez les journaux du pod. Pour vérifier si des erreurs se sont produites dans les journaux de votre application, exécutez la commande suivante :
kubectl logs POD_NAME
Ces journaux peuvent vous aider à identifier la cause du plantage du pod.
Vérifiez l'état de l'objet de service SCTP :
kubectl describe service SCTP_SERVICE_NAME
Vérifiez vos règles de réseau. Les règles de réseau peuvent limiter le trafic SCTP. Assurez-vous que vos règles de réseau autorisent le trafic SCTP nécessaire pour vos applications.
Vérifiez l'état de GKE Dataplane V2. Pour vérifier que GKE Dataplane V2 est activé sur votre cluster, exécutez la commande suivante :
kubectl -n kube-system get pods -l k8s-app=cilium -o wide
Vérifiez que la sortie inclut les pods portant le préfixe
anetd-
. anetd est le contrôleur réseau pour GKE Dataplane V2.Pour améliorer le débit, augmentez les paramètres
sysctl
net.core.wmem_default
etnet.core.rmem_default
à une valeur plus élevée, par exemple 4194304 (4 Mo). Pour en savoir plus, consultez Options de configuration Sysctl.Vous pouvez rencontrer des problèmes si vous utilisez la traduction d'adresses réseau (NAT) avec SCTP dans GKE. Pour en savoir plus sur ce que Cilium prend en charge avec SCTP, consultez la documentation Cilium.
Les paquets SCTP sont soumis à l'unité de transmission maximale (MTU) du réseau. Assurez-vous que le MTU de votre réseau est suffisant pour votre trafic SCTP.
Les performances de SCTP peuvent être affectées par des facteurs tels que la latence du réseau, la perte de paquets et le réglage du noyau. Surveillez les performances du SCTP de votre application et ajustez les paramètres si nécessaire.
Étapes suivantes
- Pour en savoir plus sur la compatibilité avec SCTP, consultez la documentation Cilium.
- Découvrez comment activer GKE Dataplane V2 sur votre cluster.