Ssoon

[1주차] AWS kOps 설치 및 기본 사용 본문

Production Kubernetes Online Study

[1주차] AWS kOps 설치 및 기본 사용

구구달스 2023. 3. 6. 22:37
이정훈님이 집필하신 "24단계 실습으로 정복하는 쿠버네티스" 로 진행하는 CloudNet@ 팀의 PKOS 1주차 정리입니다.

KOPS (Kubernetes OPerationS)

AWS에서 Kubernetes 클러스터를 생성, 업그레이드 및 관리하기 위한 command-line tool 입니다.

 AWS 리소스 생성, Kubernetes 마스터 및 워커 노드 구성, 네트워킹 및 DNS 설정 등 Kubernetes 클러스터를 설정하는 데 관련된 많은 작업을 자동화합니다.

 

실습 구성도

[출처] PKOS 스터디

✅  KOPS 설치

💠 Cloudformation 으로 KOPS EC2 를 설치합니다.

 

     kops-new-ec2.yaml

 

💠 기본 설치 정보를 확인합니다.

💠  K8S 설정 파일이 저장되는 S3 버킷을 생성합니다.

💠 Cluster 를 배포할 때 참고할 변수를 설정합니다.

 

💠 K8S 클러스터를 배포하고 생성되는 EC2 를 모니터링합니다.

kops create cluster --zones="$REGION"a,"$REGION"c --networking amazonvpc --cloud aws \
--master-size t3.medium --node-size t3.medium --node-count=2 --network-cidr 172.30.0.0/16 \
--ssh-public-key ~/.ssh/id_rsa.pub --name=$KOPS_CLUSTER_NAME --kubernetes-version "1.24.10" -y

✔  --zones  : 리전 정보

✔  --networking : CNI 정보

✔  --cloud : CSP정보

✔  --master-size : 마스터노드 EC2 유형

✔  --node-size :  워커노드 EC2 유형

✔  --node-count : 워커노드 수

✔  --network-cidr : CNI 대역 정보

✔  --ssh-public-key : 각노드 접속에 필요한 SSH 키 정보

✔  --name : 클러스터 이름

✔  --kubernetes-version : K8S 버전 정보

💠 Node IP 와 Pod IP 를 확인합니다.

💠 Clusters, Contexts, Users 인증정보를 확인합니다.

💠 Container Runtime 정보를 확인합니다.

💠 Route53 에서 Domain 정보를 확인합니다.

✔  A레코드 3개가 생성됩니다.

💠 Auto Scaling Group 정보를 확인합니다.

 

✅  관리의 편의를 위한 플러그인 설치

💠 kubectl Cli 플러그인 매니저인 krew 를 설치하고 PATH를 추가합니다.

💠 kube-ctx / kube-ns 를 설치합니다.

✔  kube-ctx  : context 사용

✔  kube-ns : namespace 사용

💠 mario  게임을 배포하고 테스트합니다.

✅  ExternalDNS

💠 ExternalDNS Addon 을 설치합니다.

정책 (externaldns-aws-r53-policy.json)  다운로드하고 (마스터/워커) 에 정책을 연결합니다.

 

 externaldns-aws-r53-policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "route53:ChangeResourceRecordSets"
      ],
      "Resource": [
        "arn:aws:route53:::hostedzone/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "route53:ListHostedZones",
        "route53:ListResourceRecordSets"
      ],
      "Resource": [
        "*"
      ]
    }
  ]

💠 kops edit cluster 실행 후 추가하고 업데이트 합니다.

spec:
  certManager:
    enabled: true
  externalDns:
    provider: external-dns

kops update cluster --yes && echo && sleep 3 && kops rolling-update cluster

💠 LB에 ExternalDNS 로 도메인을 연결하고 주소를 확인 합니다.

 

 

✅  워커 노드 증가 실습 (ASG = Auto Scaling Group 활용)

💠 노드를 추가하고 적용합니다.

💠  증가된 워커노드를 확인합니다.

✅  실습 환경 삭제

kops delete cluster --yes
 
Comments