1. eksctl란?
AWS에서 공식으로 지원하는 eks관리 CLI입니다. kubectl처럼 eks를 관리하고 싶으신 분들에게 매우 좋습니다. eksctl의 단점은 eks만 관리합니다. aws다른 리소스를 관리하지 못합니다.
개인적으로 eks에 익숙하지 않으면, eksctl로 eks를 관리하는 것이 매우 좋은 선택인 것 같습니다.
2. 준비
2.1 eksctl 설치
eksctl은 실행파일로 제공됩니다. 공식문서에서 제공해준 명령어 그대로 입력하면 실행파일 다운로드 받습니다.
출처: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eksctl.html
# linux기준
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
2.2 IAM USER
Administrator policy를 갖는 IAM USER가 필요합니다. 스터디 원만한 진행을 위해 Administrator를 사용했습니다.
3. EKS 설치
eksctl create명령어로 쉽게 EKS를 설치할 수 있습니다. 약 15분정도 소요됩니다.
3.1 설정파일 생성
EKS를 설치할 때 EKS설정을 argument 또는 설정파일로 넘길 수 있습니다. 저는 설정파일로 EKS를 설정했습니다.
참고자료: https://eksctl.io/usage/creating-and-managing-clusters/
cat << EOF > cluster.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: baisc-cluster # eks 이름
region: ap-northeast-2
version: "1.24" # 쿠버네티스 버전
vpc:
cidr: "10.0.0.0/16" # eks클러스터에서 사용할 VPC의 CIDR
managedNodeGroups:
- name: node-group-a
instanceType: t3.medium
desiredCapacity: 2
volumeSize: 20
privateNetworking: true
EOF
설정파일은 EKS메타정보, 네트워크(VPC), 워커노드(Auto Scaling group)으로 구성됩니다.
- EKS메타정보는 쿠버네티스 버전, 설지 리전 등을 설정합니다.
- VPC는 AWS VPC를 설정합니다. VPC설정에 AWS Subnet이 설정됩니다. 그리고 클러스터 네트워크 정보가 설정됩니다.
- 워커노드를 설정합니다. EKS는 EC2 인스턴스와 Fargate를 사용할 수 있습니다. 이 글에선느 EC2 인스턴스를 사용했고 Managed Node group을 선택했습니다. Managed Node group은 Auto scaling group으로 워커노드가 관리됩니다.
3.2 EKS 생성
eksctl create명령어로 EKS를 설치합니다.
eksctl create cluster -f cluster.yaml
eksctl은 cloudformation으로 동작합니다.
설치시간은 약 15분정도 소요됩니다. 정상적으로 설치되 “EKS cluster … ready”라는 메세지가 출력됩니다.
3.3 kubectl 명령어 사용
EKS가 설치되면 kubectl명령어를 사용할 수 있습니다. kubecontext는 자동으로 추가됩니다.
kubectl config get-contexts
pod전체 목록을 조회해보세요!
kubectl get pod
EKS가 설치되면 쿠버네티스 네트워킹을 위한 pod가 자동으로 생성됩니다. 관련된 내용은 EKS애드온 공식문서를 참조하시길 바랍니다.
EKS애드온 문서: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eks-add-ons.html
3. EKS 대시보드 찾아가기
EKS대시보드는 AWS console에서 “Elastic kubernetes Service”에서 볼 수 있습니다.
EKS대시보드에는 현재 EKS목록을 보여줍니다. EKS 정보를 더 알고 싶으면 원하는 클러스터를 클릭하면 됩니다.
주의사항은 AWS Administrator policy를 갖더라도 EKS를 생성한 계정이 아니면 EKS대시보드 정보가 제한적으로 조회됩니다.
4. 네트워크 구성 살펴보기
네트워크 구성은 “Networking”탭에서 확인할 수 있습니다.
4.1 EKS 네트워크 살펴보기
EKS네트워크 구조는 AWS블로그에 자세히 설명되어 있습니다. 간단히 요약하면 control-plane과 worker node모두 AWS VPC를 사용합니다.
control-plane VPC는 AWS가 직접관리하고 worker node VPC는 사용자가 관리합니다. 그리고 control-plane이 worker node에 접근할 때 미리 만들어 놓은 EKS ENI를 사용합니다.
4.2 API server접근 유형
EKS API server접근 유형은 “Network”탭에서 확인할 수 있습니다. default는 public으로 설정되어 있어 누구나 외부에서 EKS API server에 접근할 수 있습니다.
API서버주소는 “Overview”메뉴에서 확인할 수 있습니다.
웹 브라우저로 API서버주소로 접근하면 API서버 응답을 볼 수있습니다.
4.3 VPC와 Subnet
EKS가 사용하는 VPC와 Subnet정보는 “Networking”탭에서 확인할 수 있습니다.
VPC정보는 eksctl로 EKS클러스터를 만들 때 설정할 수 있습니다. 아무런 정보를 입력하지 않으면 디폴트로 subnet 6개, Nat gateway, Internet gateway를 생성합니다.
5. 워커노드 설정 살펴보기
worker node는 “Compute”탭에서 확인할 수 있습니다.
5.1 Managed Node Group
이 예제에서 EKS를 설치할때, managedNodeGroups이 추가되었습니다.
Managed node group은 AWS가 알아서 워커 노드를 관리하는 개념으로 Auto Scaling group을 사용합니다.
따라서, 이 예제에서 생성한 EKS 워커노드는 auto scaling group으로 생성된 EC2 인스턴스입니다.
5.2 security group
security group은 cluster 전체에 적용하는 security group입니다.
그림으로 표현하면 아래와 같습니다. EKS클러스터 전체에 적용됩니다.
클러스터에 전체에 적용되야하므로, cluster security group은 managed worker node의 security group에 사용됩니다.
cluster security group은 2가지 규칙이 디폴트로 설정되어 있습니다. 첫 번째 규칙은, 클러스터간 통신을 위한 규칙입니다. 두 번째 규칙은 unmanaged node를 위한 규칙입니다.
6. 클러스터 삭제
eksctl delete cluster -f cluster.yaml
'연재 시리즈' 카테고리의 다른 글
EKS 스터디 - 2주차 2편 - EKS POD IP는 무한대로 할당할 수 있을까? (0) | 2023.04.19 |
---|---|
EKS 스터디 - 2주차 1편 - EKS는 어떤 CNI를 사용할까? (2) | 2023.04.18 |
EKS 스터디 - 1주차 2편 EKS를 생성하는 도구 소개 (0) | 2023.04.15 |
EKS 스터디 - 1주차 1편 EKS란? (0) | 2023.04.15 |
pkos 스터디 5주차 6편 - securityContext.allowPrivilegeEscalation (0) | 2023.04.08 |