파란하늘의 지식창고
반응형

spinnaker의 경우 halyard를 사용해 배포를 한다.

kubernetes의 resource 설정을 하지 않으면 대략 다음과 같이 memory resource를 사용한다.

C:\Users\bluesky>kubectl top po -n spinnaker
NAME                               CPU(cores)   MEMORY(bytes)
spin-clouddriver-9cd8859b6-2hc4m   109m         1802Mi
spin-deck-dfb4446b7-l9pch          1m           68Mi
spin-echo-676b7f55d5-d24cv         4m           678Mi
spin-front50-6ff45f885b-6ncvm      8m           1255Mi
spin-gate-7464dcd68f-j624v         3m           1146Mi
spin-igor-57f6658c6f-ftfhc         2m           1134Mi
spin-orca-58764544dd-2rmss         25m          1410Mi
spin-redis-6bcf6b49d5-8ptkz        23m          26Mi
spin-rosco-74dd8b4867-cx6nb        3m           965Mi

해당 resouce를 관리하기 위해 halyard에서는 component sizing 설정을 제공한다.

https://spinnaker.io/docs/reference/halyard/commands/#hal-config-deploy-component-sizing

만약 cpu와 memory를 둘 다 설정한다면 다음과 같이 설정할 수 있다.

(적정 설정값이 어떤지 정확히 알고 있진 않아 대충의 예시이다.)

hal config deploy component-sizing clouddriver edit --container-requests-cpu 500m --container-limits-cpu 1 --container-requests-memory 512Mi --container-limits-memory 1Gi
hal config deploy component-sizing echo edit --container-requests-cpu 100m --container-limits-cpu 250m --container-requests-memory 256Mi --container-limits-memory 512Mi
hal config deploy component-sizing front50 edit --container-requests-cpu 500m --container-limits-cpu 1 --container-requests-memory 256Mi --container-limits-memory 512Mi
hal config deploy component-sizing gate edit --container-requests-cpu 500m --container-limits-cpu 1 --container-requests-memory 256Mi --container-limits-memory 512Mi
hal config deploy component-sizing igor edit --container-requests-cpu 250m --container-limits-cpu 1000m --container-requests-memory 256Mi --container-limits-memory 512Mi
hal config deploy component-sizing orca edit --container-requests-cpu 100m --container-limits-cpu 250m --container-requests-memory 256Mi --container-limits-memory 512Mi
hal config deploy component-sizing rosco edit --container-requests-cpu 100m --container-limits-cpu 250m --container-requests-memory 256Mi --container-limits-memory 512Mi

위와 같이 설정을 하면 halyard에서 생성한 config에 다음과 같이 deploymentEnvironment의 customSizing 설정이 추가된다.

  deploymentEnvironment:
    customSizing:
      clouddriver:
        requests:
          memory: 512Mi
          cpu: 250m
        limits:
          memory: 1Gi
          cpu: 1000m
      orca:
        requests:
          memory: 256Mi
          cpu: 100m
        limits:
          memory: 512Mi
          cpu: 250m
      front50:
        requests:
          memory: 256Mi
          cpu: 250m
        limits:
          memory: 512Mi
          cpu: 1000m
      rosco:
        requests:
          memory: 256Mi
          cpu: 100m
        limits:
          memory: 512Mi
          cpu: 250m
      echo:
        requests:
          memory: 256Mi
          cpu: 100m
        limits:
          memory: 512Mi
          cpu: 250m
      gate:
        requests:
          memory: 256Mi
          cpu: 250m
        limits:
          memory: 512Mi
          cpu: 1000m

내 경우 로컬에서 사용하는 경우여서 cpu에 대해서는 설정을 하지 않고 다음과 같이 설정하였다.
(cpu 설정까지 먼저 한 경우엔 해당 설정이 config 파일에 남아 있기 때문에 기존 deploymentEnvironment.customSizing  설정 부분을 삭제한 후 진행해야 한다.)

hal config deploy component-sizing clouddriver edit --container-requests-memory 512Mi --container-limits-memory 1Gi 
hal config deploy component-sizing echo edit --container-requests-memory 256Mi --container-limits-memory 512Mi
hal config deploy component-sizing front50 edit --container-requests-memory 256Mi --container-limits-memory 512Mi
hal config deploy component-sizing gate edit --container-requests-memory 256Mi --container-limits-memory 512Mi
hal config deploy component-sizing igor edit --container-requests-memory 256Mi --container-limits-memory 512Mi
hal config deploy component-sizing orca edit --container-requests-memory 256Mi --container-limits-memory 512Mi 
hal config deploy component-sizing rosco edit --container-requests-memory 256Mi --container-limits-memory 512Mi

해당 설정을 완료한 후 적용하면 기존의 memory 사용이 제한되어 관리되는 것을 확인할 수 있다.

// Memory resource 설정 이전
C:\Users\bluesky>kubectl top po -n spinnaker
NAME                               CPU(cores)   MEMORY(bytes)
spin-clouddriver-9cd8859b6-2hc4m   109m         1802Mi
spin-deck-dfb4446b7-l9pch          1m           68Mi
spin-echo-676b7f55d5-d24cv         4m           678Mi
spin-front50-6ff45f885b-6ncvm      8m           1255Mi
spin-gate-7464dcd68f-j624v         3m           1146Mi
spin-igor-57f6658c6f-ftfhc         2m           1134Mi
spin-orca-58764544dd-2rmss         25m          1410Mi
spin-redis-6bcf6b49d5-8ptkz        23m          26Mi
spin-rosco-74dd8b4867-cx6nb        3m           965Mi

// Memory resource 설정 이후
C:\Users\bluesky>kubectl top po -n spinnaker
NAME                               CPU(cores)   MEMORY(bytes)
spin-clouddriver-8fd69987c-2vs8f   4m           632Mi
spin-deck-dfb4446b7-pgtbl          1m           18Mi
spin-echo-86bfcd8769-hkvbr         4m           344Mi
spin-front50-848bfbc56d-4k4lc      6m           340Mi
spin-gate-8665cd57cc-hh62c         7m           351Mi
spin-igor-659849f5cc-5kbwm         4m           339Mi
spin-orca-79f7c4b988-bz5jx         34m          387Mi
spin-redis-64c4f995d9-xxkfb        23m          17Mi
spin-rosco-57898d675-95bzm         5m           272Mi

배포된 직후의 경우여서 적합한 수치 비교는 될 수 없다.
다만 memory resource를 제한하지 않으면 memory 자원이 계속 증가하여 사용하는 pod들이 있기 때문에 시간을 두고 계속 모니터링하면서 초기 할당량에서 적절하게 조절하는 게 좋을 것 같다.

반응형
profile

파란하늘의 지식창고

@Bluesky_

도움이 되었다면 광고를 클릭해주세요