- kubernetes Autoscailing은 Cluster level scalability와 Pods layer autoscale로 나뉠 수 있다.
- Cluster level scalability는 pod를 node에 실행할 때 자원이 없어 pending상태라면 CA(Cluster Autoscailing)이 새로운 node를 확장한다. 이는 CSP환경(AWS, GCP, ASURE)에 적합하다.
- Pods layer autoscale은 HPA(Horizontal Pod Autocaler)는 pod개수를 계속적으로 증가해주는 것이고, VPA(Vertical Pods Autoscaler)는 pod의 request 자원의 limit을 증가시키는 것.
- Autoscailing을 사용하기 위해서는 Metrics-Server(pod이며 각 pod와 node의 사용량을 모니터링하고 etcd에 저장)가 설치되어야한다.
- 순서는 처음에 pod들을 deploy하고 metric server를 설치한 다음, autoscale을 구현할 HPA,VPA를 실행해준다.
- VPA는 Pod에 대한 CPU/Memory를 조정할때 더 크게 pod를 새로 만든다음 old버전을 삭제.
- kubectl top nodes -> node들의 cpu와 memory 정보. metrics 서버 설치 후에 사용 가능.
# HPA
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: hpt-web
spec:
maxReplicas: 10
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: deploy-web # autoscail할 deployment name
targetCPUUtilizationPercentage: 50 # 사용량이 50% 이상이면 자동으로 늘려준다.
- 자원소모율이 줄어들면 5분뒤에 줄어든다.
- git clone https://github.com/kodekloudhub/kubernetes-metrics-server.git
- metric server -> node들의 자원 상태를 알 수 있다.
- docker logs -f(스트림으로) [container 이름]처럼 kubernetes도 가능하다.
apiVersion: v1
kind: Pod
metadata:
name: my-logging
spec:
containers:
- name: my-logging-container
image: kubecloude/event-simulator
- name: web-processor
image: web-processor
- kubectl logs -f my-logging my-logging-container
- docker의 entrypoint는 run 할때 --entrypoint [comman]로 override가능하고 command는 args로 주면 override가능. 따라서 kubernetes로 가능. command와 args는 dockerfile과 같이 json으로.
apiVersion: v1
kind: Pod
metadata:
name: args_pod
spec:
containers:
- name: command_pod
image: command_image
command: [[command]]
args: [[args]]
'kubernetes, helm, rancher' 카테고리의 다른 글
kubernetes networks, ingress, ingress controller (0) | 2022.01.09 |
---|---|
kubernetes cluster upgrade (0) | 2022.01.02 |
kubernetes Volumes, pv, pvc, Storage class (0) | 2021.12.03 |
kubernetes auth, certificates (0) | 2021.12.02 |
kubernetes scheduling (0) | 2021.12.01 |