2023년 12월
CloudFormation으로 한번에 명령 EC2 + EKS 생성법
모니터링툴인 kubeops view 설치
node 수 증가/감소 = 물리서버 증가/감소 이해
필요한것 2가지
Access-key / Secret-Key = EKS 만들수 있는 권한.
EC2 키페어 = 명령 EC2 로그인
2
여기서는 eksctl , kubectl 자동 설치 = Cloudfomation으로 한번에 자동 설치 해보자.
EKS까지 한번에 생성된다.
1.31 버전으로 설치한다.
2024년 12월 최신버전은 1.31 버전이다
CloudFormation
stackName
myeks
EC2 키페어 선택
Access 키 복붙
Secret 복붙
T3 large 3대
클라우드 포메이션 실행하고 바로 EKS 클러스터가면 생성중이라고 나와야 한다.
Access-key/Secret-key만 똑바로 넣었다면 EKS 클러스터가 생성된다.
제대로 넣지 않았다면 베스천 호스트 ec2 1대만 생성 된다.
클러스터 생성에 30분 소요 된다.
VPC 생성
클러스터 생성
EC2 인스턴스(worker node)는 20분이 지나야 생성이 확인 된다.
결과
VPC 생성 - pub3 , private 3
클러스터 생성 = myeks
Node groups = ng1 , 클러스터 > Compute > Node Groups > ng1
EC2 - 베스천EC2 - myeks-bastion-EC2
EC2 - 워커노드 EC2이다. 20분이 지나야 생성이 확인 된다. - myeks-ng1-Node
3
https://vclock.kr/timer/#countdown=00:10:00&enabled=0&seconds=0&sound=xylophone&loop=1
5
# 예전 버전 설치시
아래 cloud formation 파일을 클릭 하세요 !!
1.27 cloud formation 파일
6
업그레이드 하지 않아도 된다.
단지, 업그레이드 하고 싶으면 반드시 설치 완료된후 업그레이드 하자. (30분 후) = kubectl get nodes 해서 잘 된상태에서 해야한다.
1.27 버전으로 설치하면 업그레이드는 1.28로 해야한다. 1개 버전씩 업그레이드가 가능하다.
마스터 노드 업그레이드 해야 한다.
워커 노드 업그레이드 해야 한다.
각각 따로 해야한다!
워커 노드 경우, 순차적 업그레이드로 할 경우
(12-18-access22222@myeks:default) [root@myeks-bastion-EC2 ~]# k get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-1-4.ap-northeast-2.compute.internal Ready <none> 93m v1.27.7-eks-e71965b
ip-192-168-1-5.ap-northeast-2.compute.internal Ready <none> 57s v1.28.3-eks-e71965b
ip-192-168-2-145.ap-northeast-2.compute.internal Ready <none> 57s v1.28.3-eks-e71965b
ip-192-168-2-186.ap-northeast-2.compute.internal Ready <none> 93m v1.27.7-eks-e71965b
ip-192-168-3-187.ap-northeast-2.compute.internal Ready <none> 58s v1.28.3-eks-e71965b
ip-192-168-3-32.ap-northeast-2.compute.internal Ready <none> 93m v1.27.7-eks-e71965b
7
최신 버전은 1.31 이다.
https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html
8
클라우드 포메이션 실행하고 바로 EKS 클러스터가면 생성중이라고 나와야 한다.
Access-key/Secret-key만 똑바로 넣었다면 EKS 클러스터가 생성된다.
제대로 넣지 않았다면 베스천 호스트 ec2 1대만 생성 된다.
1
2
k get nodes
ip-192-168-1-241.ap-northeast-2.compute.internal Ready <none> 10m v1.31.3-eks-59bf375
ip-192-168-2-145.ap-northeast-2.compute.internal Ready <none> 10m v1.31.3-eks-59bf375
ip-192-168-3-215.ap-northeast-2.compute.internal Ready <none> 10m v1.31.3-eks-59bf375
3
11
1
# pod 생성
kubectl run myweb --image nginx
kubectl delete pod --all
2
# 운영중인 pod 확인
export MY_POD_NAME=$(kubectl get pods -n default -o jsonpath='{.items[0].metadata.name}')
echo $MY_POD_NAME
kubectl -n default describe pod $MY_POD_NAM
kubectl exec -it ${MY_POD_NAME} -n default -- /bin/bash
참고
https://github.com/troglobit/tetris
/# apk add micro-tetris
# 설치법1
# 방법 1 - git 다운로드 설치
1
git clone https://codeberg.org/hjacobs/kube-ops-view.git
cd kube-ops-view/
kubectl apply -k deploy
2
외부에서 kube-ops-view를 접속하기 위해서 Service Type을 LoadBalancer 로 변경한다.
kubectl edit svc kube-ops-view
apiVersion: v1
kind: Service
metadata:
annotations:
name: kube-ops-view
spec:
....
sessionAffinity: None
type: LoadBalancer
status:
(3분 걸림)
# kube ops view 접속 URL
kubectl get svc kube-ops-view | tail -n 1 | awk '{ print "Kube-ops-view URL = http://"$4 }'
# 설치법2
( 5분 걸림)
2
watch -d kubectl get svc,pods -A
watch -d kubectl get svc,pods
8080 접속
http://kubeopsview.masterseo0.link:8080
3
# 모니터링2
k ns kube-system
watch -d kubectl get nodes
4
# 모니터링3 , 전체 EC2 리스트 보기 , 서버 생성 삭제 확인시 유용하다.
while true; do aws ec2 describe-instances --query "Reservations[*].Instances[*].{PublicIPAdd:PublicIpAddress,PrivateIPAdd:PrivaIpAddress,InstanceName:Tags[?Key=='Name']|[0].Value,Status:State.Name}" --filters Name=instance-state-name,Values=running --output text ; echo "------------------------------" ; sleep 2; done
1
# CLUSTER_NAME 과 --name ng1 을 맞춰야 합니다.
export CLUSTER_NAME=myeks
echo $CLUSTER_NAME
eksctl scale nodegroup --cluster $CLUSTER_NAME --name ng1 --nodes 2 --nodes-min 2 --nodes-max 6
or
# 서버 1대 - 줄어 드는데 시간이 좀 걸린다. 10분
eksctl scale nodegroup --cluster $CLUSTER_NAME --name ng1 --nodes 1 --nodes-min 1 --nodes-max 6
# EKS 1 = eks-demo , node-group
eks-demo # 생성할 EKS 클러스터명
node-group # 클러스터의 노드 그룹명
export CLUSTER_NAME=eks-demo
echo $CLUSTER_NAME
eksctl scale nodegroup --cluster $CLUSTER_NAME --name node-group --nodes 2 --nodes-min 2 --nodes-max 6
https://brunch.co.kr/@topasvga/3573