Kubernetes

[ Kans 3 Study - 7w ] 실습환경 구성

su''@ 2024. 10. 19. 15:09

CloudNetaStudy - Kubernets Networtk 3기 실습 스터디 게시글입니다.

실습 환경 : VPC 1개(퍼블릭 서브넷 2개), EC2 인스턴스 3대 (Ubuntu 22.04 LTS, t3.xlarge - vCPU 4 , Mem 16) , testpc 1대는 t3.small
  • VPC 1개(퍼블릭 서브넷 2개), EC2 인스턴스 4대 (Ubuntu 22.04 LTS, t3.medium - vCPU 2 , Mem 4)
    • CloudFormation 스택 실행 시 파라미터를 기입하면, 해당 정보가 반영되어 배포됩니다.
    • CloudFormation 에 EC2의 UserData 부분(Script 실행)으로 실습 환경에 필요한 기본 설정들이 자동으로 진행됩니다.
    • CloudFormation 스택 배포 ← 실행하는 PC에 aws cli 설치되어 있고, aws configure 자격증명 설정 상태.
      # YAML 파일 다운로드
      curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/kans/kans-7w.yaml
      
      # CloudFormation 스택 배포
      # aws cloudformation deploy --template-file kans-7w.yaml --stack-name mylab --parameter-overrides KeyName=<My SSH Keyname> SgIngressSshCidr=<My Home Public IP Address>/32 --region ap-northeast-2
      예시) aws cloudformation deploy --template-file kans-7w.yaml --stack-name mylab --parameter-overrides KeyName=kp-gasida SgIngressSshCidr=$(curl -s ipinfo.io/ip)/32 --region ap-northeast-2
      
      ## Tip. 인스턴스 타입 변경 : MyInstanceType=t3.xlarge (vCPU 4, Mem 16)
      예시) aws cloudformation deploy --template-file kans-7w.yaml --stack-name mylab --parameter-overrides MyInstanceType=t3.xlarge KeyName=kp-gasida SgIngressSshCidr=$(curl -s ipinfo.io/ip)/32 --region ap-northeast-2
      
      # CloudFormation 스택 배포 완료 후 작업용 EC2 IP 출력
      aws cloudformation describe-stacks --stack-name mylab --query 'Stacks[*].Outputs[0].OutputValue' --output text --region ap-northeast-2
      
      # [모니터링] CloudFormation 스택 상태 : 생성 완료 확인
      while true; do 
        date
        AWS_PAGER="" aws cloudformation list-stacks \
          --stack-status-filter CREATE_IN_PROGRESS CREATE_COMPLETE CREATE_FAILED DELETE_IN_PROGRESS DELETE_FAILED \
          --query "StackSummaries[*].{StackName:StackName, StackStatus:StackStatus}" \
          --output table
        sleep 1
      done
      
      # 배포된 aws ec2 유동 공인 IP 확인
      aws ec2 describe-instances --query "Reservations[*].Instances[*].{PublicIPAdd:PublicIpAddress,InstanceName:Tags[?Key=='Name']|[0].Value,Status:State.Name}" --filters Name=instance-state-name,Values=running --output text
      k3s-s	3.38.151.222	running
      k3s-w1	15.165.75.117	running
      k3s-w2	3.39.223.99	running
      testpc	54.180.243.135	running
      
      # EC2 SSH 접속 : 바로 접속하지 말고, 3~5분 정도 후에 접속 할 것
      ssh -i ~/.ssh/kp-gasida.pem ubuntu@$(aws cloudformation describe-stacks --stack-name mylab --query 'Stacks[*].Outputs[0].OutputValue' --output text --region ap-northeast-2)
      ...
      (⎈|default:N/A) root@k3s-s:~# <- kubeps 가 나오지 않을 경우 ssh logout 후 다시 ssh 접속 할 것!
    •  EC2 생성 수량 부족 실패 시 : 사용자 계정의 해당 리전에 EC2 최대 갯수 제한 일 경우, Service Quotas (EC2) 증설 요청으로 해결 - 링크 EC2 요청
      • Limit Type(EC2 Instances) ⇒ 서울 리전, All Standard (A, C, D, H, I, M, R, T, Z) Instances, New limit value(40 정도)
    • k3s-s , testpc 각각 접속 후 확인
      • 실습 환경은 K3S v1.30.4 , 노드 OS(Ubuntu 22.04.5) , CNI(Flannel) , IPTABLES proxy mode , Istio v1.23.2(Envoy v1.32.2)
      • [자신의 PC] 배포된 aws ec2 유동 공인 IP 확인
        aws ec2 describe-instances --query "Reservations[*].Instances[*].{PublicIPAdd:PublicIpAddress,InstanceName:Tags[?Key=='Name']|[0].Value,Status:State.Name}" --filters Name=instance-state-name,Values=running --output text

      • k3s-s 접속 후 확인 : ssh -i <> ubuntu@43.202.6.100 
        kc get node -owide
        NAME     STATUS   ROLES                  AGE     VERSION        INTERNAL-IP      EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
        k3s-s    Ready    control-plane,master   8m57s   v1.30.5+k3s1   192.168.10.10    <none>        Ubuntu 22.04.5 LTS   6.8.0-1015-aws   containerd://1.7.21-k3s2
        k3s-w1   Ready    <none>                 8m46s   v1.30.5+k3s1   192.168.10.101   <none>        Ubuntu 22.04.5 LTS   6.8.0-1015-aws   containerd://1.7.21-k3s2
        k3s-w2   Ready    <none>                 8m45s   v1.30.5+k3s1   192.168.10.102   <none>        Ubuntu 22.04.5 LTS   6.8.0-1015-aws   containerd://1.7.21-k3s2
        
        hostnamectl 
        ...
         Hardware Vendor: Amazon EC2
          Hardware Model: t3.xlarge

      • testpc 각각 접속 후 확인 : ssh -i <> ubuntu@52.79.212.26