이 페이지에서는 Google Kubernetes Engine (GKE) Standard 클러스터에서 스트림 제어 전송 프로토콜 (SCTP)을 사용하는 워크로드를 배포하는 방법을 설명합니다.
SCTP는 Cilium 기술에서 지원됩니다. GKE Dataplane V2는 Cilium을 사용하여 구현되므로 GKE Dataplane V2가 사용 설정된 클러스터에서만 SCTP를 사용할 수 있습니다. SCTP 지원을 사용하면 포드 간 트래픽 및 포드 간 서비스 트래픽에 직접 SCTP 통신을 사용 설정할 수 있습니다. 자세한 내용은 Cilium의 SCTP 지원을 참고하세요.
이 페이지는 클라우드 리소스를 프로비저닝 및 구성하고 앱과 서비스를 배포하는 운영자 및 개발자를 위해 작성되었습니다. Google Cloud콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 태스크를 참조하세요.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화하세요. 이전에 gcloud CLI를 설치한 경우
gcloud components update
를 실행하여 최신 버전을 가져옵니다.
요구사항 및 제한사항
GKE Standard 클러스터의 SCTP 지원에는 다음과 같은 요구사항과 제한사항이 있습니다.
- 클러스터는 GKE 버전 1.32.2-gke.1297000 이상을 실행해야 합니다.
- 클러스터 노드는 Ubuntu 노드 이미지를 사용해야 합니다. SCTP는 Container-Optimized OS 이미지에서 지원되지 않습니다.
- SCTP 지원을 사용 설정하려면 Ubuntu 기반 컨테이너 이미지와 기본 GKE 노드 OS가
sctp
커널 모듈로 로드되어 있는지 확인하세요. - 포드에 대한 다중 네트워크 지원이 사용 설정된 클러스터에서는 SCTP를 사용할 수 없습니다.
- SCTP 연결의 설정 시간은 TCP 연결의 설정 시간보다 오래 걸릴 수 있습니다. 연결이 설정되는 동안 발생할 수 있는 지연을 처리하도록 애플리케이션을 설계하세요.
- Cilium에서 SCTP를 지원하는 기능과 지원하지 않는 기능에 대해 자세히 알아보려면 Cilium 문서를 참고하세요.
SCTP로 워크로드 배포
프로덕션에 워크로드를 배포하기 전에 비프로덕션 환경에서 배포를 철저히 테스트하세요.
GKE 버전 1.32.2-gke.1297000부터는 GKE Dataplane V2 및 Ubuntu 노드 이미지를 사용하는 클러스터에서 SCTP가 기본적으로 사용 설정됩니다. SCTP로 워크로드를 배포하려면 다음 단계를 완료하세요.
GKE Dataplane V2 및 Ubuntu 이미지로 클러스터를 만들려면 다음 명령어를 실행합니다.
gcloud container clusters create CLUSTER_NAME \ --region=REGION \ --cluster-version=CLUSTER_VERSION \ --enable-dataplane-v2 \ --image-type=ubuntu_containerd
다음 값을 바꿉니다.
CLUSTER_NAME
: 클러스터 이름입니다.REGION
: 클러스터가 생성된 Google Cloud 리전입니다.CLUSTER_VERSION
: GKE 버전이며 1.32.2-gke.1297000 이상이어야 합니다.
애플리케이션을 컨테이너화하려면 컨테이너 이미지에 SCTP를 사용하도록 구성된 애플리케이션이 포함되어 있어야 합니다. 맞춤 애플리케이션과 같이 SCTP를 지원하는 애플리케이션을 사용할 수 있습니다.
다음은 Docker를 사용하는 경우 애플리케이션을 컨테이너화하는
Dockerfile
의 예입니다.이미지를 빌드하고 Artifact Registry와 같은 Container Registry에 푸시합니다. 이 파일의 작동 방식에 대한 자세한 내용은 Docker 문서의 Dockerfile 참조를 확인하세요.
배포와 서비스를 만들려면 다음 매니페스트를
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
다음을 바꿉니다.
CONTAINER_IMAGE
: 이전 단계에서 빌드한 컨테이너 이미지입니다.PORT
: 애플리케이션의 SCTP 포트 및 타겟 포트 번호입니다.port
및targetPort
값은 동일해야 합니다.
배포 및 서비스를 적용하려면 다음 명령어를 실행합니다.
kubectl apply -f sctp-deployment.yaml
서비스의 SCTP 연결을 확인하려면 동일한 클러스터 내에 포드를 만들고 다음 명령어를 실행합니다.
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'
출력은 다음과 비슷합니다.
Preparing to unpack .../socat_1.8.0.0-4build3_amd64.deb ... Setting up socat (1.8.0.0-4build3) ... Hello, SCTP!
문제 해결
SCTP 연결에 문제가 있는 경우 다음 안내에 따라 문제의 원인을 파악하세요.
포드 로그를 확인합니다. 애플리케이션의 로그에서 오류를 확인하려면 다음 명령어를 실행합니다.
kubectl logs POD_NAME
이러한 로그를 통해 포드가 비정상 종료된 원인을 파악할 수 있습니다.
SCTP 서비스 객체의 상태를 확인합니다.
kubectl describe service SCTP_SERVICE_NAME
네트워크 정책을 확인합니다. 네트워크 정책은 SCTP 트래픽을 제한할 수 있습니다. 네트워크 정책이 애플리케이션에 필요한 SCTP 트래픽을 허용하는지 확인합니다.
GKE Dataplane V2의 상태를 확인합니다. 클러스터에서 GKE Dataplane V2가 사용 설정되어 있는지 확인하려면 다음 명령어를 실행합니다.
kubectl -n kube-system get pods -l k8s-app=cilium -o wide
출력에
anetd-
접두사가 있는 포드가 포함되어 있는지 확인합니다. anetd는 GKE Dataplane V2의 네트워킹 컨트롤러입니다.처리량을 개선하려면
sysctl
매개변수net.core.wmem_default
및net.core.rmem_default
를 더 큰 값(예: 4194304(4MB))으로 늘립니다. 자세한 내용은 Sysctl 구성 옵션을 참고하세요.GKE에서 SCTP와 함께 네트워크 주소 변환 (NAT)을 사용하는 경우 문제가 발생할 수 있습니다. Cilium에서 SCTP로 지원하는 기능에 대한 자세한 내용은 Cilium 문서를 참고하세요.
SCTP 패킷에는 네트워크의 최대 전송 단위 (MTU)가 적용됩니다. 네트워크의 MTU가 SCTP 트래픽에 충분한지 확인합니다.
SCTP 성능은 네트워크 지연 시간, 패킷 손실, 커널 조정과 같은 요인에 영향을 받을 수 있습니다. 애플리케이션의 SCTP 성능을 모니터링하고 필요에 따라 설정을 조정합니다.
다음 단계
- Cilium 문서에서 SCTP 지원에 대해 알아보세요.
- 클러스터에서 GKE Dataplane V2를 사용 설정하는 방법을 알아봅니다.