8.9.3. Ingress 컨트롤러 자동 스케일링


Ingress 컨트롤러를 자동으로 확장하여 라우팅 성능 또는 가용성 요구 사항을 동적으로 충족할 수 있습니다. 예를 들어 처리량을 늘려야 합니다.

다음 절차에서는 기본 Ingress 컨트롤러를 확장하는 예제를 제공합니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있어야 합니다.
  • cluster-admin 역할의 사용자로 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • VMware vSphere, 베어 메탈 및 Nutanix 설치 관리자 프로비저닝 인프라에서 Ingress 컨트롤러 Pod를 확장해도 외부 트래픽 성능이 향상되지 않습니다. 성능을 향상하려면 다음 사전 요구 사항을 완료해야 합니다.

    • 클러스터의 사용자 관리 로드 밸런서를 수동으로 구성했습니다.
    • Ingress 컨트롤러에서 들어오는 트래픽을 처리하는 클러스터 노드에 로드 밸런서가 구성되어 있는지 확인합니다.
  • Custom Metrics Autoscaler Operator 및 관련 KEDA 컨트롤러가 설치되어 있습니다.

    • 웹 콘솔에서 OperatorHub를 사용하여 Operator를 설치할 수 있습니다. Operator를 설치한 후 KedaController 의 인스턴스를 생성할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 Thanos로 인증할 서비스 계정을 생성합니다.

    $ oc create -n openshift-ingress-operator serviceaccount thanos && oc describe -n openshift-ingress-operator serviceaccount thanos

    출력 예

    Name:                thanos
    Namespace:           openshift-ingress-operator
    Labels:              <none>
    Annotations:         <none>
    Image pull secrets:  thanos-dockercfg-kfvf2
    Mountable secrets:   thanos-dockercfg-kfvf2
    Tokens:              <none>
    Events:              <none>

  2. 다음 명령을 사용하여 서비스 계정 시크릿 토큰을 수동으로 생성합니다.

    $ oc apply -f - <<EOF
    apiVersion: v1
    kind: Secret
    metadata:
      name: thanos-token
      namespace: openshift-ingress-operator
      annotations:
        kubernetes.io/service-account.name: thanos
    type: kubernetes.io/service-account-token
    EOF
  3. 서비스 계정의 토큰을 사용하여 openshift-ingress-operator 네임스페이스에 TriggerAuthentication 오브젝트를 정의합니다.

    1. TriggerAuthentication 오브젝트를 생성하고 secret 변수 값을 TOKEN 매개변수에 전달합니다.

      $ oc apply -f - <<EOF
      apiVersion: keda.sh/v1alpha1
      kind: TriggerAuthentication
      metadata:
        name: keda-trigger-auth-prometheus
        namespace: openshift-ingress-operator
      spec:
        secretTargetRef:
        - parameter: bearerToken
          name: thanos-token
          key: token
        - parameter: ca
          name: thanos-token
          key: ca.crt
      EOF
  4. Thanos에서 메트릭을 읽는 역할을 생성하고 적용합니다.

    1. Pod 및 노드에서 지표를 읽는 새 역할 thanos-metrics-reader.yaml 을 생성합니다.

      thanos-metrics-reader.yaml

      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        name: thanos-metrics-reader
        namespace: openshift-ingress-operator
      rules:
      - apiGroups:
        - ""
        resources:
        - pods
        - nodes
        verbs:
        - get
      - apiGroups:
        - metrics.k8s.io
        resources:
        - pods
        - nodes
        verbs:
        - get
        - list
        - watch
      - apiGroups:
        - ""
        resources:
        - namespaces
        verbs:
        - get

    2. 다음 명령을 실행하여 새 역할을 적용합니다.

      $ oc apply -f thanos-metrics-reader.yaml
  5. 다음 명령을 입력하여 서비스 계정에 새 역할을 추가합니다.

    $ oc adm policy -n openshift-ingress-operator add-role-to-user thanos-metrics-reader -z thanos --role-namespace=openshift-ingress-operator
    $ oc adm policy -n openshift-ingress-operator add-cluster-role-to-user cluster-monitoring-view -z thanos
    참고

    add-cluster-role-to-user 인수는 네임스페이스 간 쿼리를 사용하는 경우에만 필요합니다. 다음 단계에서는 이 인수가 필요한 kube-metrics 네임스페이스의 쿼리를 사용합니다.

  6. 기본 Ingress 컨트롤러 배포를 대상으로 하는 새 scaled Object YAML 파일 ingress-autoscaler.yaml 을 만듭니다.

    scaled Object 정의의 예

    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: ingress-scaler
      namespace: openshift-ingress-operator
    spec:
      scaleTargetRef: 
    1
    
        apiVersion: operator.openshift.io/v1
        kind: IngressController
        name: default
        envSourceContainerName: ingress-operator
      minReplicaCount: 1
      maxReplicaCount: 20 
    2
    
      cooldownPeriod: 1
      pollingInterval: 1
      triggers:
      - type: prometheus
        metricType: AverageValue
        metadata:
          serverAddress: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091 
    3
    
          namespace: openshift-ingress-operator 
    4
    
          metricName: 'kube-node-role'
          threshold: '1'
          query: 'sum(kube_node_role{role="worker",service="kube-state-metrics"})' 
    5
    
          authModes: "bearer"
        authenticationRef:
          name: keda-trigger-auth-prometheus

    1
    대상으로 하는 사용자 정의 리소스입니다. 이 경우 Ingress 컨트롤러입니다.
    2
    선택사항: 최대 복제본 수입니다. 이 필드를 생략하면 기본 최대값이 100개의 복제본으로 설정됩니다.
    3
    openshift-monitoring 네임스페이스의 Thanos 서비스 끝점입니다.
    4
    Ingress Operator 네임스페이스입니다.
    5
    이 표현식은 배포된 클러스터에 많은 작업자 노드가 있는 것으로 평가됩니다.
    중요

    네임스페이스 간 쿼리를 사용하는 경우 serverAddress 필드에서 포트 9091이 아닌 포트 9091을 대상으로 지정해야 합니다. 또한 이 포트에서 메트릭을 읽을 수 있는 높은 권한이 있어야 합니다.

  7. 다음 명령을 실행하여 사용자 정의 리소스 정의를 적용합니다.

    $ oc apply -f ingress-autoscaler.yaml

검증

  • 다음 명령을 실행하여 기본 Ingress 컨트롤러가 kube-state-metrics 쿼리에서 반환된 값과 일치하도록 확장되었는지 확인합니다.

    • grep 명령을 사용하여 Ingress 컨트롤러 YAML 파일에서 복제본 수를 검색합니다.

      $ oc get -n openshift-ingress-operator ingresscontroller/default -o yaml | grep replicas:
    • openshift-ingress 프로젝트에서 Pod를 가져옵니다.

      $ oc get pods -n openshift-ingress

      출력 예

      NAME                             READY   STATUS    RESTARTS   AGE
      router-default-7b5df44ff-l9pmm   2/2     Running   0          17h
      router-default-7b5df44ff-s5sl5   2/2     Running   0          3d22h
      router-default-7b5df44ff-wwsth   2/2     Running   0          66s

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동