Kubernetes의 데이터베이스 클러스터에서 유지보수 모드 사용

이 페이지에서는 Kubernetes 클러스터에서 데이터베이스를 유지보수 모드로 전환하는 방법을 보여줍니다.

데이터베이스가 Kubernetes 클러스터에서 실행되는 경우 컨테이너화된 애플리케이션에서 실행되는 활성 프로브시작 프로브를 사용 중지하여 데이터베이스 유지보수 모드를 설정하고 데이터베이스 포드가 정상 상태인지 확인할 수 있습니다. 유지보수 모드를 사용하면 유지보수 업데이트를 수행하거나 포드를 복구해야 할 때 포드를 실행 상태로 설정할 수 있습니다.

유지보수 모드 사용 설정

  1. 데이터베이스 pod에 프로브가 있는지 확인합니다.

    1. 활성 여부 프로브:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'

      다음을 바꿉니다.

      • NAMESPACE: 데이터베이스를 실행하는 데 사용되는 네임스페이스의 이름입니다(예: db).
      • DATABASE_POD_NAME: 데이터베이스 포드의 이름입니다(예: al-4017-dbcluster-sample-0).

      다음은 활성 프로브가 있는 샘플 출력입니다.

      {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
      
    2. 시작 프로브:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'

      다음은 시작 프로브가 포함된 샘플 출력입니다.

      {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
      
  2. DBCluster 매니페스트의 spec 섹션에서 modemaintenance로 설정합니다.

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: DB_CLUSTER_NAME
      namespace: NAMESPACE
    spec:
      allowExternalIncomingTraffic: false
      isDeleted: false
      mode: maintenance
      primarySpec:
      ...
    

    DB_CLUSTER_NAME을 이 데이터베이스 클러스터의 이름으로 바꿉니다(예: my-db-cluster).

  3. 매니페스트를 적용합니다.

    kubectl apply -f DB_CLUSTER_YAML

    DB_CLUSTER_YAML을 이 데이터베이스 클러스터 매니페스트 파일의 이름으로 바꿉니다(예: alloydb-omni-db-cluster.yaml).

  4. 유지보수 모드가 사용 설정되었는지 확인하려면 다음 명령어를 실행합니다.

    • 활성 여부 프로브:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'
    • 시작 프로브:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'

    출력에 POD_NAME pod의 spec 섹션에 있는 LivenessStartup 필드가 포함되지 않습니다.

유지보수 모드 사용 중지

실행 중인 활성 상태 및 시작 프로브가 있는 표준 데이터베이스 클러스터 동작으로 돌아가려면 다음 명령어를 사용하여 DBCluster 매니페스트의 spec 섹션에서 maintenance를 삭제합니다.

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"mode":""}}' --type=merge -n DB_CLUSTER_NAMESPACE --type=merge

샘플 출력:

  • 활성 프로브를 사용하면 다음과 같습니다.

    {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
    
  • 시작 프로브를 사용하면 다음과 같은 이점이 있습니다.

    {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,  "periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}