Nesta página, explicamos como implantar cargas de trabalho que usam o protocolo de transmissão de controle de fluxo (SCTP) em clusters padrão do Google Kubernetes Engine (GKE).
O SCTP é compatível com a tecnologia Cilium. Como o GKE Dataplane V2 é implementado usando o Cilium, você só pode usar o SCTP em clusters que foram ativados com o GKE Dataplane V2. Com o suporte ao SCTP, é possível ativar a comunicação direta para o tráfego de pod para pod e de pod para serviço. Para saber mais, consulte Suporte a SCTP no Cilium.
Esta página é destinada a operadores e desenvolvedores que provisionam e configuram recursos de nuvem e implantam apps e serviços. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Trusted Cloud by S3NS, consulte Tarefas e funções de usuário comuns do GKE.
Antes de começar
Antes de começar, verifique se você realizou as seguintes tarefas:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a CLI do Google Cloud para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a gcloud CLI anteriormente, instale a versão
mais recente executando
gcloud components update
.
Requisitos e limitações
O suporte ao SCTP em clusters do GKE Standard tem os seguintes requisitos e limitações:
- Seu cluster precisa executar o GKE versão 1.32.2-gke.1297000 ou posterior.
- Os nós do cluster precisam usar imagens de nó do Ubuntu. O SCTP não é compatível com imagens do Container-Optimized OS.
- Para ativar o suporte ao SCTP, verifique se as imagens de contêiner baseadas no Ubuntu e o
SO do nó do GKE subjacente estão carregados com o módulo do kernel
sctp
. - Não é possível usar o SCTP em clusters ativados com o suporte a várias redes para pods.
- O tempo de configuração de uma associação SCTP pode ser maior do que o de uma conexão TCP. Projete seus aplicativos para lidar com possíveis atrasos enquanto as associações são estabelecidas.
- Para saber mais sobre o que o Cilium oferece e não oferece com o SCTP, consulte a documentação do Cilium.
Implantar cargas de trabalho com SCTP
Teste a implantação em um ambiente de não produção antes de implantar cargas de trabalho na produção.
A partir da versão 1.32.2-gke.1297000 do GKE, o SCTP é ativado por padrão em clusters que usam o GKE Dataplane V2 e imagens de nó do Ubuntu. Para implantar cargas de trabalho com SCTP, siga estas etapas:
Para criar um cluster com o GKE Dataplane V2 e imagens do Ubuntu, execute o seguinte comando:
gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --cluster-version=CLUSTER_VERSION \ --enable-dataplane-v2 \ --image-type=ubuntu_containerd
Substitua os seguintes valores:
CLUSTER_NAME
: o nome do cluster.CONTROL_PLANE_LOCATION
: o local do Compute Engine do plano de controle do cluster. Forneça uma região para clusters regionais ou uma zona para clusters zonais.CLUSTER_VERSION
: a versão do GKE, que precisa ser 1.32.2-gke.1297000 ou posterior.
Para colocar o aplicativo em contêiner, verifique se a imagem inclui um aplicativo configurado para usar o SCTP. É possível usar qualquer aplicativo que ofereça suporte ao SCTP, como um aplicativo personalizado.
Confira a seguir um exemplo de
Dockerfile
para contentorizar o aplicativo, supondo que você use o Docker:Crie e envie a imagem para um registro de contêiner, como o Artifact Registry. Para mais informações sobre como esse arquivo funciona, consulte a referência do Dockerfile na documentação do Docker.
Para criar uma implantação e um serviço, salve o manifesto a seguir como
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
Substitua:
CONTAINER_IMAGE
: a imagem do contêiner criada na etapa anterior.PORT
: os números da porta SCTP e da porta de destino do aplicativo. O valor deport
etargetPort
precisa ser o mesmo.
Para aplicar a implantação e o serviço, execute o comando a seguir:
kubectl apply -f sctp-deployment.yaml
Para verificar a conectividade SCTP do serviço, crie um pod no mesmo cluster e execute o seguinte 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'
O resultado será assim:
Preparing to unpack .../socat_1.8.0.0-4build3_amd64.deb ... Setting up socat (1.8.0.0-4build3) ... Hello, SCTP!
Solução de problemas
Se você tiver problemas com a conectividade SCTP, siga estas orientações para ajudar a determinar a origem do problema:
Verifique os registros do pod. Para verificar os registros do aplicativo em busca de erros, execute o seguinte comando:
kubectl logs POD_NAME
Esses registros podem ajudar você a identificar o que causou a falha do pod.
Verifique o status do objeto de serviço SCTP:
kubectl describe service SCTP_SERVICE_NAME
Verifique suas políticas de rede. As políticas de rede podem restringir o tráfego do SCTP. Verifique se as políticas de rede permitem o tráfego SCTP necessário para seus aplicativos.
Verifique o status do GKE Dataplane V2. Para verificar se o GKE Dataplane V2 está ativado no cluster, execute o seguinte comando:
kubectl -n kube-system get pods -l k8s-app=cilium -o wide
Verifique se a saída inclui pods com o prefixo
anetd-
. O anetd é o controlador de rede do GKE Dataplane V2.Para melhorar a capacidade de processamento, aumente os parâmetros
sysctl
net.core.wmem_default
enet.core.rmem_default
para um valor maior, por exemplo, 4194304 (4 MB). Para mais informações, consulte Opções de configuração do Sysctl.Você pode enfrentar problemas se usar a conversão de endereços de rede (NAT) com SCTP no GKE. Para mais informações sobre o que o Cilium oferece com o SCTP, consulte a documentação do Cilium.
Os pacotes SCTP estão sujeitos à unidade de transmissão máxima (MTU) da rede. Verifique se a MTU da sua rede é suficiente para o tráfego SCTP.
O desempenho do SCTP pode ser afetado por fatores como latência da rede, perda de pacotes e ajuste do kernel. Monitore a performance do SCTP do seu aplicativo e ajuste as configurações conforme necessário.
A seguir
- Saiba mais sobre a compatibilidade com SCTP na documentação do Cilium.
- Saiba como ativar o GKE Dataplane V2 no seu cluster.