imhamburger 님의 블로그
쿠버네티스(Kubernetes) - k3s 로 멀티노드 사용해보기 본문
이전글에서는 minikube를 사용하였었는데 이번에는 k3s를 이용하여 부하테스트를 해보고자 한다.
minikube는 로컬 환경에서 Kubernetes를 쉽게 테스트하고 학습할 수 있도록 설계된 싱글 노드 Kubernetes 클러스터 이지만,
k3s는 경량화된 Kubernetes 배포판으로, Kubernetes의 모든 기능을 유지하면서도 리소스가 적은 환경에서도 효율적으로 작동하도록 설계되어있다.
중요한건 minikube는 싱글노드이지만
k3s는 멀티 노드 클러스터를 쉽게 구성할 수 있으며, 실제 프로덕션 환경에서도 사용할 수 있다.
k3s를 설치하는 방법은 아래 공식문서 참고!!
부하테스트를 하기 전에 다른 서버에 K3s의 워커노드인 Agent를 추가해야 한다. (멀티노드)
워커노드는 마스터 노드로부터 할당받은 Pod와 컨테이너를 실제로 실행하는 역할이다.
워커노드 설정하기
$ curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -
TOKEN 확인하기 (마스터노드에서)
$ cat /var/lib/rancher/k3s/server/node-token
워커노드가 잘 연결된 것을 확인하기
$ sudo kubectl get nodes
결과
나는 부하테스트를 위해 autoscaler yaml도 추가하였다.
autoscaler의 역할은 설정해놓은 cpu를 넘어가면 pods를 하나씩 늘리는 역할이다. 만약, cpu 사용량이 일정 기준 이하일 때는 pods를 줄여간다.
httpd-hpa.yaml (autoscaler 추가)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: http-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: httpd-deployment
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 90
behavior:
scaleDown:
stabilizationWindowSeconds: 10 #안정화 대기 시간
policies:
- type: Pods
value: 1 #CPU 사용량이 기준 이하일 때 Pod 수를 1개씩 줄임
periodSeconds: 20 #이 정책의 유효기간
그리고나서,
httpd / nginx 로드밸런서 / 로드밸런서 config / hpa yaml 파일을 모두 클러스터에 추가하였다.
pods 확인하기
$ sudo kubectl get pods
결과
httpd와 nginx 모두 Status가 Running 상태여야 정상적으로 실행중인 것이다.
이제 부하테스트를 진행해보자.
port 번호를 먼저 확인하기
$ sudo kubectl get svc
그런 다음 아래와 같이 진행하면 끝!
ab -c 10 -t 60 http://localhost:30836/
결과
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 2
Processing: 3 127 104.4 100 895
Waiting: 2 127 104.4 100 894
Total: 3 127 104.4 100 895
Percentage of the requests served within a certain time (ms)
50% 100
66% 102
75% 194
80% 196
90% 295
95% 303
98% 404
99% 500
100% 895 (longest request)
kubectl 명령어 모음
kubectl 컨테이너 접속하기
$ kubectl exec -it <pod 이름> -- /bin/bash\n
'데이터엔지니어 부트캠프' 카테고리의 다른 글
데이터엔지니어 부트캠프 - 다섯번째 팀프로젝트 (11/11 ~ 11/13) (18주차) (1) | 2024.11.17 |
---|---|
카프카(Kafka) - Kafka Broker 왜 홀수 개의 브로커가 필요할까? (0) | 2024.11.12 |
데이터엔지니어 부트캠프 - 쿠버네티스 시작하기, Apache HTTP 부하테스트하기 (18주차) (2) | 2024.11.04 |
데이터엔지니어 부트캠프 - 네번째 팀프로젝트 (10/24 ~ 10/25) (17주차) (0) | 2024.10.29 |
데이터엔지니어 부트캠프 - 젠킨스(Jenkins) 이해하기&실행해보기 (16주차) (0) | 2024.10.22 |