CCE 클라우드 네이티브 공동 배치 시나리오의 테스트 사례

이 기사는 Huawei Cloud 커뮤니티 " CCE 클라우드 기본 혼합 배포 시나리오에서 온라인 작업 선점, 오프라인 작업에 대한 CPU 리소스 억제 및 온라인 작업에 대한 서비스 품질 보장에 대한 테스트 "에서 공유되었습니다. 저자: 친구를 사귈 수 있습니다. .

배경

엔터프라이즈 IT 환경은 일반적으로 두 가지 주요 유형의 프로세스를 실행합니다. 하나는 온라인 서비스이고 다른 하나는 오프라인 작업입니다.

온라인 작업 : 긴 실행 시간, 서비스 트래픽 및 리소스 활용도는 조수 특성을 가지며 지연에 민감하며 전자상거래 거래 서비스 등 서비스 SLA 요구 사항이 높습니다.

오프라인 작업 : 실행 시간을 간격으로 나누어 작업 중 자원 활용률이 높고 지연이 민감하지 않고 내결함성 비율이 높으며 일반적으로 중단으로 인해 빅데이터 처리 등 재실행이 가능합니다.

코로케이션의 주요 형태는 동일한 노드에 온라인 및 오프라인 작업을 배포하여 리소스 활용도를 높이는 것입니다. 예를 들어 이전에는 노드가 높은 서비스 SLA로 3개의 온라인 작업을 배포했지만 이제는 3개의 온라인 작업과 3개의 오프라인 작업을 배포합니다. 혼합 방식으로, 오프라인 서비스는 온라인 서비스의 서비스 품질에 영향을 주지 않고 다양한 기간에 온라인 서비스의 유휴 자원을 활용합니다.

컨테이너 공동 배치 수준에서는 주로 다음을 포함합니다. 1) 예약 수준에서는 노드 예약 리소스가 초과 예약되고 온라인 및 오프라인 작업이 혼합되어 동일한 노드에 예약됩니다. 2) CPU 수준에서는 온라인 작업이 포함됩니다. 3) 이 문서에서는 메모리 수준을 소개하지 않습니다. 공동 배치 기술의 CPU 성능을 통해 운영 프로세스 중에 시스템이 온라인 및 오프라인 작업 리소스의 사용량에 따라 오프라인 작업 리소스의 온라인 "선점" 및 "억제"를 자동으로 완료한다는 것을 실현할 수 있습니다. 온라인 리소스의 리소스 수요를 보장합니다. 4코어 머신을 예로 들어보겠습니다.

  • 온라인 작업에 3코어 CPU 리소스가 필요한 경우 시스템은 최대 1코어 CPU 리소스를 사용하기 위해 오프라인 작업을 "억제"해야 합니다.
  • 당시 온라인 작업은 비즈니스의 정점에 있었고 1개의 코어 CPU 리소스만 사용했습니다. 오프라인 작업은 온라인 작업 비즈니스가 증가하면 단기적으로 나머지 CPU 리소스를 사용할 수 있었습니다. 오프라인 비즈니스 CPU 리소스를 "선점"할 수 있습니다.

환경 준비

환경 요구 사항

클러스터 버전 :

  • v1.19 클러스터: v1.19.16-r4 이상
  • v1.21 클러스터: v1.21.7-r0 이상
  • v1.23 클러스터: v1.23.5-r0 이상
  • v1.25 이상

클러스터 유형 : CCE Standard 클러스터 또는 CCE Turbo 클러스터.

노드 OS : EulerOS 2.9(kernel-4.18.0-147.5.1.6.h729.6.eulerosv2r9.x86_64) 또는 Huawei Cloud EulerOS 2.0

노드 유형 : 탄력적 가상 머신.

Volcano 플러그인 버전 : 1.7.0 이상.

환경정보

CCE 클러스터는 kube-prometheus-stack, grafana 및 Volcano 플러그인을 배포합니다.

이미지.png

이미지.png

이미지.png

CPU 억제 및 선점 시연

스트레스 테스트 기준선

데모에 필요한 워크로드를 생성하고 두 워크로드가 동일한 노드에 예약되어 있는지 확인합니다(대시보드의 일반 표현식은 포드 이름과 연결되어 있으므로 워크로드 이름을 사용하지 않는 것이 좋습니다. 그렇지 않으면 대시보드의 정상적인 표시)

종류: 배포
api버전: 앱/v1
metadata:
  이름: 레디스        
투기:
  복제본: 1
  선택자:
    일치 라벨:
      앱: 레디스
  주형:
    metadata:
      생성타임스탬프: null
      라벨:
        앱: 레디스
      주석:
        prometheus.io/경로: /metrics
        prometheus.io/port: '9121'
        prometheus.io/scrape: '사실'
    투기:
      컨테이너:
        - 이름: 컨테이너-1
          이미지: swr.cn-north-4.myhuaweicloud.com/testapp/redis:v6
          자원:
            제한:
              CPU: '1'
            요청:
              CPU: 250m
        - 이름 : 컨테이너-2
          이미지: bitnami/redis-exporter:최신
          자원:
            제한:
              CPU: 250m
              메모리: 512Mi
            요청:
              CPU: 250m
              메모리: 512Mi
      imagePullSecrets:
        - 이름: 기본 비밀
      스케줄러 이름: 화산
---
종류: 배포
api버전: 앱/v1
metadata:
  이름 : 스트레스
투기:
  복제본: 1
  선택자:
    일치 라벨:
      앱: 스트레스
  주형:
    metadata:
      라벨:
        앱: 스트레스
    투기:
      컨테이너:
        - 이름: 컨테이너-1
          이미지: swr.cn-north-4.myhuaweicloud.com/testapp/centos-stress:v1
          명령:
            - /bin/bash
          인수:
            - '-씨'
            - 사실이지만; 에코 안녕하세요; 수면 10; 완료
          자원:
            제한:
              CPU: '4'
              메모리: 4Gi
            요청:
              CPU: 2500m
              메모리: 1Gi
      imagePullSecrets:
        - 이름: 기본 비밀
      스케줄러 이름: 화산
      유연:
        포드어피니티:
          필수DuringSchedulingIgnoredDuringExecution:
            - 라벨 선택기:
                matchExpressions:
                  - 키: 앱
                    연산자: 에서
                    값:
                      - 레디스
              네임스페이스:
                - 기본
              토폴로지키: kubernetes.io/hostname

redis-benchmark 명령을 사용하여 192.168.1.159redis의 Pod IP에 대해 Redis를 스트레스 테스트하세요.

./redis-benchmark -h 192.168.1.159 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN

Grafana 페이지에서 Redis 지표와 CPU 사용량을 관찰해 간섭 없이 기준 참조 데이터로 사용할 수 있습니다.

이미지.png

혼합되지 않은 장면

하이브리드 배포를 위한 노드 풀을 만들고 위 워크로드를 새 노드에 재배포합니다.

redis-benchmark 명령을 다시 사용하여 192.168.1.172redis의 Pod IP에 대해 Redis를 스트레스 테스트하세요.

./redis-benchmark -h 192.168.1.172 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN

스트레스 컨테이너에 들어가 Redis 표시기가 기준선에 도달하고 안정되면 명령을 실행하여 CPU 사용량을 늘립니다.

-c 4 -t 3600의 스트레스

Grafana 페이지에서 Redis 표시기와 CPU 사용량을 관찰하고 스트레스 컨테이너 스트레스 테스트 중에 Redis의 성능 데이터가 급격히 저하되는 것을 확인하세요.

이미지.png

혼합 장면

노드 풀을 업데이트하고 고급 구성에서 노드에 대한 하이브리드 레이블을 구성합니다.volcano.sh/colocation="true"

이미지.png

노드 풀-kubelet 구성 요소 구성의 구성 관리를 클릭하고 노드 공동 배치 기능을 활성화합니다.

이미지.png

스트레스 테스트 중에 CPU 사용량이 임계값을 초과할 때 직접 제거를 방지하려면 노드의 제거 임계값을 100으로 수정합니다.

kubectl 주석 노드 192.168.0.209 Volcano.sh/evicting-cpu-high-watermark=100

스트레스 워크로드의 주석을 수정하고 스트레스를 오프라인 비즈니스로 표시합니다. Redis 워크로드는 수정할 필요가 없습니다.

종류: 배포
api버전: 앱/v1
metadata:
  이름 : 스트레스
투기:
  복제본: 1
  선택자:
    일치 라벨:
      앱: 스트레스
  주형:
    metadata:
      라벨:
        앱: 스트레스
      주석:          
        Volcano.sh/qos-level: "-1" # 오프라인 작업 주석
    투기:
      컨테이너:
        - 이름: 컨테이너-1
          이미지: swr.cn-north-4.myhuaweicloud.com/testapp/centos-stress:v1
          명령:
            - /bin/bash
          인수:
            - '-씨'
            - 사실이지만; 에코 안녕하세요; 수면 10; 완료
          자원:
            제한:
              CPU: '4'
              메모리: 4Gi
            요청:
              CPU: 2500m
              메모리: 1Gi
      imagePullSecrets:
        - 이름: 기본 비밀
      스케줄러 이름: 화산
      유연:
        포드어피니티:
          필수DuringSchedulingIgnoredDuringExecution:
            - 라벨 선택기:
                matchExpressions:
                  - 키: 앱
                    연산자: 에서
                    값:
                      - 레디스
              네임스페이스:
                - 기본
              토폴로지키: kubernetes.io/hostname
redis-benchmark 명령을 사용하여 192.168.1.172 redis의 Pod IP에 대해 Redis를 스트레스 테스트하세요.
./redis-benchmark -h 192.168.1.172 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN
스트레스 컨테이너에 들어가 Redis 표시기가 기준선에 도달하고 안정되면 명령을 실행하여 CPU 사용량을 늘립니다.
-c 4 -t 3600의 스트레스

grafana 페이지에서 redis 표시기와 CPU 사용량을 관찰하세요. 혼합 시나리오에서는 오프라인 작업이 노드 CPU를 소진시키려고 해도 운영 체제가 온라인 작업의 CPU 수요를 계속 유지하여 온라인 작업의 서비스 품질을 보장합니다. .

이미지.png

 

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

 

1990년대에 태어난 프로그래머가 비디오 포팅 소프트웨어를 개발하여 1년도 안 되어 700만 개 이상의 수익을 올렸습니다. 결말은 매우 처참했습니다! 고등학생들이 성인식으로 자신만의 오픈소스 프로그래밍 언어 만든다 - 네티즌 날카로운 지적: 만연한 사기로 러스트데스크 의존, 가사 서비스 타오바오(taobao.com)가 가사 서비스를 중단하고 웹 버전 최적화 작업 재개 자바 17은 가장 일반적으로 사용되는 Java LTS 버전입니다. Windows 10 시장 점유율 70%에 도달, Windows 11은 계속해서 Open Source Daily를 지원합니다. Google은 Docker가 지원하는 오픈 소스 Rabbit R1을 지원합니다. Electric, 개방형 플랫폼 종료 Apple, M4 칩 출시 Google, Android 범용 커널(ACK) 삭제 RISC-V 아키텍처 지원 Yunfeng은 Alibaba에서 사임하고 향후 Windows 플랫폼에서 독립 게임을 제작할 계획
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4526289/blog/11093550