Kubernetes-자동 확장

AutoscalingKubernetes 클러스터의 주요 기능 중 하나입니다. 서비스 응답에 대한 요구가 증가하면 클러스터가 노드 수를 늘리고 요구 사항이 감소하면 노드 수를 줄일 수있는 기능입니다. 이 자동 확장 기능은 현재 Google Cloud Engine (GCE) 및 Google Container Engine (GKE)에서 지원되며 곧 AWS에서 시작될 것입니다.

GCE에서 확장 가능한 인프라를 설정하려면 먼저 Google 클라우드 모니터링, Google 클라우드 로깅 및 Stackdriver 기능이 활성화 된 활성 GCE 프로젝트가 있어야합니다.

먼저, 실행중인 노드가 거의없는 클러스터를 설정합니다. 완료되면 다음 환경 변수를 설정해야합니다.

환경 변수

export NUM_NODES = 2
export KUBE_AUTOSCALER_MIN_NODES = 2
export KUBE_AUTOSCALER_MAX_NODES = 5
export KUBE_ENABLE_CLUSTER_AUTOSCALER = true

완료되면 다음을 실행하여 클러스터를 시작합니다. kube-up.sh. 이렇게하면 클러스터 자동 스칼라 추가 기능과 함께 클러스터가 생성됩니다.

./cluster/kube-up.sh

클러스터 생성시 다음 kubectl 명령을 사용하여 클러스터를 확인할 수 있습니다.

$ kubectl get nodes
NAME                             STATUS                       AGE
kubernetes-master                Ready,SchedulingDisabled     10m
kubernetes-minion-group-de5q     Ready                        10m
kubernetes-minion-group-yhdx     Ready                        8m

이제 클러스터에 애플리케이션을 배포 한 다음 수 평형 포드 자동 확장 처리를 활성화 할 수 있습니다. 다음 명령을 사용하여 수행 할 수 있습니다.

$ kubectl autoscale deployment <Application Name> --cpu-percent = 50 --min = 1 --
max = 10

위의 명령은 애플리케이션의로드가 증가함에 따라 POD의 복제본을 최소 1 개에서 최대 10 개까지 유지할 ​​것임을 보여줍니다.

자동 확장 처리의 상태를 확인할 수 있습니다. $kubclt get hpa명령. 다음 명령을 사용하여 포드의 부하를 늘립니다.

$ kubectl run -i --tty load-generator --image = busybox /bin/sh
$ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

우리는 확인할 수 있습니다 hpa 달리다 $ kubectl get hpa 명령.

$ kubectl get hpa
NAME         REFERENCE                     TARGET CURRENT
php-apache   Deployment/php-apache/scale    50%    310%

MINPODS  MAXPODS   AGE
  1        20      2m
  
$ kubectl get deployment php-apache
NAME         DESIRED    CURRENT    UP-TO-DATE    AVAILABLE   AGE
php-apache      7          7           7            3        4m

다음 명령을 사용하여 실행중인 포드 수를 확인할 수 있습니다.

jsz@jsz-desk2:~/k8s-src$ kubectl get pods
php-apache-2046965998-3ewo6 0/1        Pending 0         1m
php-apache-2046965998-8m03k 1/1        Running 0         1m
php-apache-2046965998-ddpgp 1/1        Running 0         5m
php-apache-2046965998-lrik6 1/1        Running 0         1m
php-apache-2046965998-nj465 0/1        Pending 0         1m
php-apache-2046965998-tmwg1 1/1        Running 0         1m
php-apache-2046965998-xkbw1 0/1        Pending 0         1m

마지막으로 노드 상태를 얻을 수 있습니다.

$ kubectl get nodes
NAME                             STATUS                        AGE
kubernetes-master                Ready,SchedulingDisabled      9m
kubernetes-minion-group-6z5i     Ready                         43s
kubernetes-minion-group-de5q     Ready                         9m
kubernetes-minion-group-yhdx     Ready                         9m