23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
3. AWS EKS 에서 Istio 와 Application Load Balancer 연결
4. Kubernetes 의 Resources 설정을 위한 VPA 및 Goldilocks
6. Loki를 이용한 손쉬운 Kubernetes Logging
7. Kubernetes/Istio 를 위한 Datadog 설정
8. Argo CD 설치 및 설정
https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html 를 참고하여 설정
VPA 및 Goldilocks를 통해 Kubernetes 의 resource request, limit 설정을 완료하고 HPA를 통해 Pod를 늘리고 결국 Node의 자원이 부족하면 Cluster Autoscaler 를 통해 Node를 추가로 생성하게 된다. Cluster Autoscaler 는 Cloud Vendor 마다 설정 방법이 다르다
AWS 에서 eksctl 을 이용하여 kubernetes cluster 를 만들었다면 EKS documentation 의 Prerequisites 에 있는 내용은 모두 완료 된 상태이다. 그 아래부터 차례대로 direction을 따라 설정하면 쉽게 Cluster Autoscaler 를 설치할 수 있다.
Cluster Autoscaler 가 IAM role 을 사용하기 위해 필요한 권한을 주기 위해 IAM Policy 생성이 필요하다.
cluster-autoscaler-policy.json 파일을 생성한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:DescribeTags",
"autoscaling:SetDesiredCapacity",
"autoscaling:TerminateInstanceInAutoScalingGroup",
"ec2:DescribeLaunchTemplateVersions"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
aws iam create-policy \
--policy-name AmazonEKSClusterAutoscalerPolicy \
--policy-document file://cluster-autoscaler-policy.json
위 command 를 실행하고 나오는 output 에서 Amazon Resource Name (ARN)을 아래에서 사용해야 한다.
아래와 같이 eksctl을 사용하여 IAM role을 생성할 수 있다.
eksctl create iamserviceaccount \
--cluster=eks-demo \
--namespace=kube-system \
--name=cluster-autoscaler \
--attach-policy-arn=<위에서 생성한 policy의 arn> \
--override-existing-serviceaccounts \
--approve
curl -o cluster-autoscaler-autodiscover.yaml https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml
을 찾아서 eks-demo 로 replace 한다.그리고 적용한다.
kubectl apply -f cluster-autoscaler-autodiscover.yaml
ℹ️ 문서에는 이 다음에 service account을 annotate 하는 부분이 있는데 확인해보면 이미 되어있다.
cluster-autoscaler.kubernetes.io.safe-to-evict를 추가하기 위해 아래와 같이 patch 한다.
kubectl patch deployment cluster-autoscaler \
-n kube-system \
-p '{"spec":{"template":{"metadata":{"annotations":{"cluster-autoscaler.kubernetes.io/safe-to-evict": "false"}}}}}'
cluster-autoscaler deployment를 수정한다.
kubectl -n kube-system edit deployment.apps/cluster-autoscaler
eks-demo 로 수정하고 container command 에 --balance-similar-node-groups 와 --skip-nodes-with-system-pods=false 를 추가하여 아래와 같이 수정한다.
spec:
containers:
- command
- ./cluster-autoscaler
- --v=4
- --stderrthreshold=info
- --cloud-provider=aws
- --skip-nodes-with-local-storage=false
- --expander=least-waste
- --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/
- --balance-similar-node-groups
- --skip-nodes-with-system-pods=false
kubectl set image deployment cluster-autoscaler \
-n kube-system \
cluster-autoscaler=k8s.gcr.io/autoscaling/cluster-autoscaler:v1.21.2
Cluster Autoscaler 를 deploy 한 후에 로그를 확인하여 제대로 동작하는지 확인한다.
kubectl -n kube-system logs -f deployment.apps/cluster-autoscaler
✋ 참고로 최근에는 Karpenter가 나와서 Cluster Autoscaler 대신 이걸 활용 할 수도 있다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.