Amazon 탄력성 Kubernetes 서비스 클러스터 자동 배율 조정
6855 단어 devopskubernetesdocker
이를 보기 위해 HPA를 구성하고 시스템에 부하를 적용하여 실제 작동을 볼 수 있습니다.
우선 Kubernetes의 패키지 관리자로 Helm을 설치하는 것부터 시작하겠습니다.
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > helm.sh
chmod +x helm.sh
./helm.sh
이제 Tiller라는 Helm의 서버 기본 섹션을 설정합니다.서비스 계정이 필요합니다.---
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
Tiller 서비스 계정이 정의되어 있으며 클러스터 관리자 역할을 이 계정에 할당했습니다.이제 구성을 계속 적용합니다.kubectl apply -f tiller.yml
방금 생성한 Tiller 서비스 계정을 사용하여 실행helm init
:helm init --service-account tiller
그것 때문에 우리는 집단에 Tiller를 설치해서 집단의 자원을 관리할 수 있다.Helm이 설치되면 metric 서버를 배포할 수 있습니다.도량 서버는 자원이 데이터를 사용하는 집단 범위 집합기로서 그 중에서 도량은 각 작업 노드의
kubelet
에서 수집되고 배치의 확장 행위를 지시하는 데 사용된다.이제 설치를 계속하겠습니다.
helm install stable/metrics-server --name metrics-server --version 2.0.4 --namespace metrics
모든 검사가 통과되면 우리는 응용 프로그램을 확장할 수 있다.이 문서의 목적에 따라 CPU 사용률을 생성하기 위한 특수한 Apache와 PHP 구축을 배치합니다.
kubectl run php-apache --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose --port=80
이제 배포를 자동으로 축소합니다.kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
HPA는 모든 POD의 평균 CPU 활용도를 50%로 유지하기 위해 복제본 수를 늘리거나 줄입니다.각각pod가 200밀리 코어를 요청하기 때문에 (이전 명령에서 지정한 바와 같이) 100밀리 코어의 평균 CPU 이용률을 유지합니다.상태를 확인해 보겠습니다.
kubectl get hpa
ReviewTargets
열은 현재 서버에 요청을 보내지 않았기 때문에 unknown/50%
를 나타내면 현재 CPU 소모가 0%임을 나타냅니다.정확한 값을 표시하는 데 몇 분이 걸리기 때문에 커피를 한 잔 마시고 여기서 데이터를 좀 얻고 돌아오자.마지막 명령을 다시 실행하고
Targets
열이 현재 0%/50%
인지 확인하십시오.이제 다음 명령을 실행하여 일부 로드를 생성하여 줌을 실행합니다.kubectl run -i --tty load-generator --image=busybox /bin/sh
이 용기에서, 우리는 우리의 서비스에 무한한 요청을 보낼 것이다.다른 터미널로 돌아가면 자동 축척기가 실행되는 것을 볼 수 있습니다.kubectl get hpa -w
HPA scaler pod가 1에서 구성의 최대치인 10으로 상승하여 평균 CPU 사용률이 목표의 50%보다 낮을 때까지 볼 수 있습니다.실행에 10분 정도 걸립니다. 현재 10개의 복사본이 있습니다.만약 우리가 다른 터미널로 돌아가서 부하 테스트를 중지하고 커서 터미널로 돌아간다면, 우리는 HPA가 복사본 계수를 최소화하는 것을 볼 수 있다.클러스터 자동 축척기
클러스터 자동 축소기는 기본 Kubernetes 구성 요소로 클러스터의 크레인이나 노드를 축소할 수 있습니다.그것은 계속해서 기중기를 성공적으로 놓을 수 있도록 자동 축소 그룹의 크기를 자동으로 증가시킬 것이다.자동 축소 그룹에서 사용하지 않는 작업 노드 (pod를 실행하지 않는 노드) 를 삭제하려고 시도합니다.
다음 AWS CLI 명령은 최소 1, 최대 10의 자동 배율 그룹을 생성합니다.
eksctl create nodegroup --cluster <CLUSTER_NAME> --node-zones <REGION_CODE> --name <REGION_CODE> --asg-access --nodes-min 1 --nodes 5 --nodes-max 10 --managed
이제 내연 IAM 정책을 작업 노드에 적용해야 합니다.{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:DescribeTags",
"autoscaling:SetDesiredCapacity",
"autoscaling:TerminateInstanceInAutoScalingGroup",
"ec2:DescribeLaunchTemplateVersions"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
기본적으로 클러스터 자동 축척기를 게시하는 EC2 작업 노드는 자동 축척을 수행할 수 있습니다.복사하여 EC2 IAM 역할에 추가합니다.다음 파일을 다운로드합니다.
wget https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml
클러스터 이름으로 다음 행을 업데이트합니다. - --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/<YOUR CLUSTER NAME>
마지막으로 Autoscaler를 배포할 수 있습니다.kubectl apply -f cluster-autoscaler-autodiscover.yaml
물론,pod가 생성되기를 기다려야 합니다.일단 완성되면 우리는 집단을 확장할 수 있다.우리는 다음과 같은 nginx
파일이 있는 간단한 yaml
응용 프로그램을 고려할 것이다.apiVersion: extensions/v1beta2
kind: Deployment
metadata:
name: nginx-scale
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 500m
memory: 512Mi
애플리케이션을 계속 배포하는 방법:kubectl apply -f nginx.yaml
배포 확인:kubectl get deployment/nginx-scale
이제 복제본을 10까지 확장합니다.kubectl scale --replicas=10 deployment/nginx-scale
일부pod가 꺼진 상태를 볼 수 있습니다. 이것은 그룹 자동 커서가 EC2 실례군을 확장하는 데 사용되는 트리거입니다.kubectl get pods -o wide --watch
결론
본고에서 우리는 이 두 가지 유형의 EKS 군집 자동 축소를 고려했다.우리는 집단 자동 축소기가 충분히 이용되지 않은 실례나 끊긴pod가 검출될 때마다 신축 작업을 시작하는 방법을 이해했다.마이크로서비스 응용 프로그램을 확장할 때 수평Pod 자동 축소기와 집단 자동 축소기는 Kubernetes의 기본 기능이다.네가 이 문장이 매우 유용하다는 것을 발견하기를 바라지만, 아직 더 많은 내용이 있다.그 전에 즐겁게 지내세요!
Reference
이 문제에 관하여(Amazon 탄력성 Kubernetes 서비스 클러스터 자동 배율 조정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/appfleet/autoscaling-an-amazon-elastic-kubernetes-service-cluster-2hmf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)