본문 바로가기

kubernetes, helm, rancher

kubernetes Auto Scaling, metric server

  • 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% 이상이면 자동으로 늘려준다.

 

 

GitHub - kodekloudhub/kubernetes-metrics-server: Development environment deployment of metrics-server

Development environment deployment of metrics-server - GitHub - kodekloudhub/kubernetes-metrics-server: Development environment deployment of metrics-server

github.com

  • 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]]