Kubernetes
[ Kans 3 Study - 8w ] 실습 환경 구성
su''@
2024. 10. 27. 05:04
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 자격증명 설정 상태.
설치 옵션 : kubeadm init ... --skip-phases=addon/kube-proxy
# YAML 파일 다운로드 curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/kans/kans-8w.yaml # CloudFormation 스택 배포 # aws cloudformation deploy --template-file kans-8w.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-8w.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-8w.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 # EC2 SSH 접속 : 바로 접속하지 말고, 5~7분 정도 후에 접속 할 것 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) ... (⎈|kubernetes-admin@kubernetes:N/A) root@k8s-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 정도)
- k8s-s , testpc 각각 접속 후 확인
- 실습 환경은 K8S v1.30.5 , 노드 OS(Ubuntu 22.04.5) , CNI(Cilium) , kube-proxy 미설치
- [자신의 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
- k8s-s 접속 후 확인 : ssh -i <> ubuntu@3.38.151.222
# config rename-context kubectl config rename-context "kubernetes-admin@kubernetes" "CiliumLab" # 기본 정보 확인 kubectl cluster-info # node 상태 확인 kc get node -owide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-s NotReady control-plane 5m54s v1.30.5 192.168.10.10 <none> Ubuntu 22.04.5 LTS 6.8.0-1015-aws containerd://1.7.22 k8s-w1 NotReady <none> 5m32s v1.30.5 192.168.10.101 <none> Ubuntu 22.04.5 LTS 6.8.0-1015-aws containerd://1.7.22 k8s-w2 NotReady <none> 5m34s v1.30.5 192.168.10.102 <none> Ubuntu 22.04.5 LTS 6.8.0-1015-aws containerd://1.7.22 # kube-proxy 없다! kc get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-55cb58b774-8l84j 0/1 Pending 0 8m17s kube-system coredns-55cb58b774-9prtv 0/1 Pending 0 8m17s kube-system etcd-k8s-s 1/1 Running 0 8m31s kube-system kube-apiserver-k8s-s 1/1 Running 0 8m31s kube-system kube-controller-manager-k8s-s 1/1 Running 0 8m31s kube-system kube-scheduler-k8s-s 1/1 Running 0 8m31s hostnamectl # cilium 의 제대로?된 동작을 위해서 커널 버전은 최소 5.8 이상 권장 uname -a Linux k8s-s 6.8.0-1015-aws #16~204.1-Ubuntu SMP Mon Aug 19 19:38:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
- testpc 각각 접속 후 확인 : ssh -i <> ubuntu@54.180.243.135
ip -br -c addr hostnamectl curl localhost