본문 바로가기

EKS/EKS Cluster

(12)
EKS - VPC CNI Udpate CNI는 Container Network Interface로 제가 Secondary IP 리밋을 주는 글을 작성했을 때, Docs 링크와 같이 간단하게 설명을 주었습니다. VPC CNI가 1.6.3 / 1.7.5 두개의 버전을 현재 공식적으로 권유하고 있으며 최근 EKS를 생성할 때는 위의 두 버전 중 하나를 골라 구성할 수 있도록 바뀌었습니다. IP 할당에 관한 이슈들이 생겼을때 AWS에서는 VPC CNI1.7.5로의 업데이트도 권유합니다. 먼저 CNI 버전이 낮다면, 각 클러스터 버전에서 가장 맞는 kube-proxy와 coredns 버전을 맞춰주시기 바랍니다. 아래 Docs를 참조하면 가능하며, 간단하게 그 방법을 소개하겠습니다. docs.aws.amazon.com/ko_kr/eks/latest/u..
EKS - Secondary IP 제어 하기 EKS를 구성하다보면, Node 당 IP에 대한 개수 제한이 있습니다. 더욱이 파드당 IP를 한개씩 가져가기 때문에 Node를 구축할 때, 많은 IP를 먼저 선점하여 가져가게 합니다. 하지만 Hybrid구조로 구축하여 진행할 경우 IP가 넉넉하지 않을 때가 많습니다. 하지만 타입이 높은 노드가 생성될 때는, IP를 필요 이상으로 과하게 가져가는 경우가 있습니다. WAS를 띄우기 위해 메모리를 2기가로 놓고 파드를 띄운다면 c5.2xlarge에서 띄울 수 있는 파드는 그리 많지 않습니다. 하지만 30여개의 IP를 기본적으로 할당하기 때문에, IP가 낭비되는 것을 볼 수 있습니다. 즉, IP를 노드마다 제한해 줄 필요가 있습니다. 이러한 세팅을 위해서 Pod 수를 제한하거나 Secondary IP에 대해서 ..
EKS AutoScaling - 2. AutoScaler 파드가 오토스케일링이 되어 꽉 찰 경우, 노드 자체를 오토스케일링 시켜줘야합니다. docs.aws.amazon.com/ko_kr/eks/latest/userguide/cluster-autoscaler.html Cluster Autoscaler - Amazon EKS 필요한 버전에 따라 이전 주소를 gcr.io/google-containers/cluster-autoscaler:v1. 으로 변경해야 할 수도 있습니다. 이미지 주소는 릴리스 페이지에 나와 있습니다. docs.aws.amazon.com 공식다큐가 정말 정리가 잘 되어있어 다를게 없을 게시글이나 조금 더 상세하게 써보도록 하겠습니다. 먼저 적용하고자 하는 노드 그룹 EC2에는 아래와 같은 태그가 적용되어야 합니다. 또한 노드에는 아래와 같은 IA..
EKS AutoScaling - 1. HPA 설정하기 HPA가 어떤 조건에서 움직이는지, 어떠한 옵션이 있는지 아래 링크에서 확인할 수 있습니다. github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md kubernetes/autoscaler Autoscaling components for Kubernetes. Contribute to kubernetes/autoscaler development by creating an account on GitHub. github.com 아래와 같은 준비과정이 필요합니다. 1. Metric Server 구성 각 파드의 리소스 메트릭을 읽을 수 있어야 하기 때문에, Metric Server를 구성하시거나 커스텀 매트릭을 수집하여 세팅하셔야합니다. htt..
EKS Cluster 구축 - 8. EKS IAM User - RBAC 권한 부여 EKS Cluster를 구축하면, 구축한 IAM에 대해서는 마스터 권한이 있습니다. 또한 아래와 같이 수정하여 다른 IAM 유저에게도 그 권한을 부여할 수 있습니다. kubectl edit configmap aws-auth -n kube-system apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::{account_id}:role/{workernode-role} username: system:node:{{EC2PrivateDNSName}} mapUsers: | - userarn: arn:aws:iam::{account_id}:user/{user_name1} username..
EKS Cluster 구축 - 7. Pod에 IAM Role 부여하기 기존에 Pod에 IAM Role을 부여하기 위해서는 Kube2IAM or KIAM을 사용하였습니다. KIAM은 하나의 노드에서 어슘롤을 가지고 모든 SDK의 응답을 대신해서 처리해주는 방식, Kube2IAM은 모든 노드가 어슘롤을 가지고 각 파드들의 응답을 처리하는 방식입니다. 하지만 이제 EKS 1.14이상부터는 IAM OIDC를 통해 Service Account와 연동되게 구성할 수 있습니다. 이렇게 되면, 각 노드에 어슘롤이 부여 될 필요가 없으며 정말 해당 파드가 EC2에 롤을 부여하듯 롤을 가지게 됩니다. 제가 이해한 바로는 아래와 같습니다. 틀릴 수도 있으니 참고용으로만 보시기 바랍니다. 제가 이해한 바로는 쿠버네티스 API는 아래와 같은 절차를 거쳐 처리되게 됩니다. API 서버로 들어오는 ..
EKS Cluster 구축 - 6. Helm3 설치 Helm3 버전이 출시되고 꽤 안정화되어 이제 구글에도 레퍼런스가 많아지기 시작했습니다. 먼저, 기존 helm2를 설치하셨다면 아래 명령어를 통해서 찾아지는 경로를 모두 삭제해주시면 됩니다. sudo find / -name helm kubectl -n kube-system delete deployment tiller-deploy kubectl -n kube-system delete service/tiller-deploy 이제, helm3를 설치해보도록 하겠습니다. 맥의 경우 아래와 같습니다. brew install helm 일반 리눅스의 경우 아래와 같습니다. curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_..
EKS Cluster 구축 - 5. Helm2 설치 Helm이란 Kubernetes Package manage tool로 Mac의 brew, NodeJS의 npm과 같은 느낌이라고 생각하시면 됩니다. 각 패키지를 Chart라고 부르며, 이를 통해 필요한 리소스들을 쉽게 설치하고 운영할 수 있습니다. 아래 쉘을 수행해서 Helm을 다운로드 받습니다. mkdir -p ~/environment cd ~/environment curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh chmod 700 get_helm.sh ./get_helm.sh 만약 Amazon Linux에서 위의 명령어를 수행하는 중에 path에러가 난다면, 아래 쉘을 수행해주세요 export PATH=/..