스테이트리스(Stateless) 워크로드 만들기

이 문서에서는 Google Distributed Cloud (GDC) 에어 갭 Kubernetes 클러스터 내에서 상태 비저장 워크로드를 만들고 관리하는 방법을 설명합니다. 스테이트리스(Stateless) 워크로드를 사용하면 Kubernetes 클러스터에서 영구 스토리지를 관리하여 데이터 또는 애플리케이션 상태를 저장하지 않고도 워크로드 요구에 따라 애플리케이션 배포를 확장할 수 있습니다. 이 문서는 애플리케이션의 가용성을 효율적으로 최적화하고 조정할 수 있도록 시작하는 데 도움이 됩니다.

이 문서는 조직의 애플리케이션 워크로드를 만드는 애플리케이션 운영자 그룹의 개발자를 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.

시작하기 전에

이 문서의 작업을 완료하려면 다음 리소스와 역할이 있어야 합니다.

  • Kubernetes 클러스터에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.

    • Kubernetes 클러스터 이름을 찾거나 플랫폼 관리자 그룹의 구성원에게 클러스터 이름을 묻습니다.

    • Kubernetes 클러스터의 kubeconfig 파일이 없는 경우 로그인하여 생성합니다.

    • Kubernetes 클러스터의 kubeconfig 경로를 사용하여 이 안내의 KUBERNETES_CLUSTER_KUBECONFIG를 바꿉니다.

  • 공유 클러스터에서 상태 비저장 워크로드를 만드는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 프로젝트 네임스페이스에 네임스페이스 관리자 역할(namespace-admin)을 부여해 달라고 요청하세요.

  • 표준 클러스터에서 상태 비저장 워크로드를 만드는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 표준 클러스터의 클러스터 개발자 역할 (cluster-developer)을 부여해 달라고 요청하세요.

배포 만들기

Deployment 매니페스트를 작성하고 kubectl apply를 실행하여 리소스를 만들어 배포를 만듭니다. 이 메서드는 또한 변경사항을 매니페스트 파일에 다시 병합하지 않고도 실시간 리소스에 적용된 업데이트를 보관합니다.

매니페스트 파일에서 Deployment를 만들려면 다음을 실행하세요.

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: DEPLOYMENT_NAME
spec:
  replicas: NUMBER_OF_REPLICAS
  selector:
    matchLabels:
      run: APP_NAME
  template:
    metadata:
      labels: # The labels given to each pod in the deployment, which are used
              # to manage all pods in the deployment.
        run: APP_NAME
    spec: # The pod specification, which defines how each pod runs in the deployment.
      containers:
      - name: CONTAINER_NAME
        image: CONTAINER_IMAGE
EOF

다음을 바꿉니다.

  • KUBERNETES_CLUSTER_KUBECONFIG: 컨테이너 워크로드를 배포할 Kubernetes 클러스터의 kubeconfig 파일입니다.

  • NAMESPACE: 컨테이너 워크로드를 배포할 네임스페이스입니다. 공유 클러스터의 경우 프로젝트 네임스페이스여야 합니다. 표준 클러스터의 경우 모든 네임스페이스가 될 수 있습니다.

  • DEPLOYMENT_NAME: Deployment 객체 이름

  • APP_NAME: 배포 내에서 실행할 애플리케이션의 이름입니다.

  • NUMBER_OF_REPLICAS: 배포에서 관리하는 복제된 Pod 객체 수입니다.

  • CONTAINER_NAME: 컨테이너의 이름.

  • CONTAINER_IMAGE: 컨테이너 이미지의 이름입니다. REGISTRY_PATH/hello-app:1.0와 같은 컨테이너 레지스트리 경로와 이미지 버전을 포함해야 합니다. 컨테이너 레지스트리 경로 설정에 대한 자세한 내용은 관리형 Harbor 서비스 개요를 참고하세요.

예를 들면 다음과 같습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      run: my-app
  template:
    metadata:
      labels:
        run: my-app
    spec:
      containers:
      - name: hello-app
        image: REGISTRY_PATH/hello-app:1.0

컨테이너에 GPU 워크로드를 배포하는 경우 GPU 컨테이너 워크로드 관리를 참고하세요.

다음 단계