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들이 있기 때문에 시간을 두고 계속 모니터링하면서 초기 할당량에서 적절하게 조절하는 게 좋을 것 같다.
'Study > Docker & Kubernetes' 카테고리의 다른 글
kubernetes pod에 resource 설정해 보기 (0) | 2023.04.06 |
---|---|
kubernetes에 Promtail, Loki 사용해 보기 (1) | 2023.03.21 |
kubernetes에 OpenTelemetry Collector, Grafana Tempo를 설치하고 tracing 구현해 보기 (2) | 2023.03.18 |
helm chart로 kubernetes yaml 파일 만들기 (0) | 2023.03.17 |
kubernetes에 sonarqube 설치 & jenkins에서 사용해 보기 (0) | 2023.03.16 |
kubernetes에 Prometheus, Grafana 설치하고 metric 정보 수집해 보기 (1) | 2023.03.15 |
kubernetes ConfigMap, Secret 사용해 보기 (0) | 2023.03.11 |
kubernetes PersistentVolume, PersistentVolumeClaim 사용해 보기 (0) | 2023.03.11 |
Rancher Desktop에서 docker 명령어 사용하기 (0) | 2022.10.20 |
로컬 docker-desktop의 kubernetes (k8s)에 elasticsearch, kibana 설치해보기 (0) | 2022.10.08 |