3.4. 자동 스케일링 구성


Red Hat OpenShift Dev Spaces 자동 스케일링의 다양한 측면에 대해 알아보십시오.

3.4.1. Red Hat OpenShift Dev Spaces 컨테이너의 복제본 수 구성

Kubernetes HorizontalPodAutoscaler (HPA)를 사용하여 OpenShift Dev Spaces 피연산자의 복제본 수를 구성하려면 배포에 대한 HPA 리소스를 정의할 수 있습니다. HPA 는 지정된 메트릭을 기반으로 복제본 수를 동적으로 조정합니다.

프로세스

  1. 대상 지표와 원하는 복제본 수를 지정하여 배포에 대한 HPA 리소스를 생성합니다.

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: scaler
      namespace: openshift-devspaces
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: <deployment_name> 1
      ...
    1
    & lt;deployment_name >은 다음 배포에 해당합니다.
    • devspaces
    • che-gateway
    • devspaces-dashboard
    • plugin-registry
    • devfile-registry

예 3.14. devspaces 배포를 위한 HorizontalPodAutoscaler 를 생성합니다.

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: devspaces-scaler
  namespace: openshift-devspaces
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: devspaces
  minReplicas: 2
  maxReplicas: 5
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 75

이 예에서 HPA는 최소 2개의 복제본, 최대 5개의 복제본 및 CPU 사용률을 기반으로 하는 스케일링을 사용하여 devspace라는 배포를 대상으로 합니다.

3.4.2. 머신 자동 스케일링 구성

리소스 요구 사항에 따라 노드 수를 조정하도록 클러스터를 구성한 경우 OpenShift Dev Spaces 작업 공간의 원활한 작동을 유지하기 위해 추가 구성이 필요합니다.

자동 스케일러가 노드를 추가하고 제거할 때 작업 공간을 특별히 고려해야 합니다.

자동 스케일러에서 새 노드를 추가하면 노드 프로비저닝이 완료될 때까지 작업 공간 시작 시간이 평상보다 오래 걸릴 수 있습니다.

반대로 노드를 제거하면 작업 공간을 사용하는 동안 중단을 방지하고 저장된 데이터가 손실될 가능성이 있는 자동 스케일러에서 작업 공간 Pod를 실행하는 노드를 제거할 수 없습니다.

3.4.2.1. 자동 스케일러가 새 노드를 추가하는 경우

새 노드를 추가하는 동안 적절한 작업 공간을 시작하도록 OpenShift Dev Spaces 설치를 구성해야 합니다.

프로세스

  1. CheCluster 사용자 정의 리소스에서 spec.devEnvironments.startTimeoutSeconds 필드를 600초 이상으로 설정하여 작업 공간을 시작하는 동안 필요할 때 새 노드를 프로비저닝할 시간을 허용합니다.

    spec:
      devEnvironments:
        startTimeoutSeconds: 600
  2. openshift-devspaces 네임스페이스의 DevWorkspaceOperatorConfig 사용자 정의 리소스에서 FailedScheduling 이벤트를 config.workpsace.ignoredUnrecoverableEvents 필드에 추가합니다. 이를 통해 사용 가능한 노드가 충분하지 않은 경우 작업 공간 시작이 실패하지 않습니다. 새 노드가 프로비저닝되면 작업 공간 시작을 계속할 수 있습니다.

    config:
      workspace:
        ignoredUnrecoverableEvents:
        - FailedScheduling

3.4.2.2. 자동 스케일러가 노드를 제거하는 경우

자동 스케일러가 노드를 제거해야 할 때 작업 공간 Pod가 제거되지 않도록 하려면 모든 작업 공간 Pod에 "cluster-autoscaler.kubernetes.io/safe-to-evict": "false" 주석을 추가합니다.

프로세스

  1. CheCluster 사용자 정의 리소스에서 spec.devEnvironments.workspacesPodAnnotations 필드에 cluster-autoscaler.kubernetes.io/safe-to-evict: "false" 주석을 추가합니다.

    spec:
      devEnvironments:
        workspacesPodAnnotations:
          cluster-autoscaler.kubernetes.io/safe-to-evict: "false"

검증 단계

  1. 작업 영역을 시작하고 작업 공간 Pod에 cluster-autoscaler.kubernetes.io/safe-to-evict: "false" 주석이 포함되어 있는지 확인합니다.

    $ oc get pod <workspace_pod_name> -o jsonpath='{.metadata.annotations.cluster-autoscaler\.kubernetes\.io/safe-to-evict}'
    false
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.