brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Dec 18. 2023

EKS 10탄-1. EKS 설치-2023-12월

1/4

목표

EKS 생성법

명령서버 1대 만들어 EKS 생성 관리하는법

Pod접속법

모니터링툴인 kubeops view 설치

node 수 증가/감소 = 물리서버 증가/감소 이해



<1> EKS생성법 구성1

<2> EKS생성법 구성2

<3> 사용자PC------명령서버1대 ---- EKS 생성으로 생성해보자.

<4>  EC2의 베스천 서버 공인 IP로  로그인 

<5> pod안의 컨터이너에 들어가서 어플리케이션 설치 (선택)

<6> 모니터링툴인 kubeops view 설치

<7> node 수 증가 감소 = 물리서버 증가 감소해보기

<8> 확인



<1> EKS생성법 구성1


1

구성

개발자(명령PC)---------- EKS 생성


사용자PC에서 명령을 내려는 관리하는 방법이다.

개인이 혼자 관리할때 사용한다.





2

필요한것

EKS 만들수 있는 권한 = AWS IAM >  Access-key / Secret-Key

EC2 키페어

eksctl등 eks 만들수 있는 유틸

eks 만들고 명령을 날릴수 있는 kubectl 




<2> EKS생성법 구성2


1

구성

개발자------명령서버1대 ---- EKS 생성


명령서버를 1대 만들어 관리하는 법이다.

여러 사람이 관리할때 사용하는 방법이다.



2-1

필요한것


명령서버를 만드는 방법 3가지

AWS cloud9으로 만들기

수동으로 EC2만들기

Cloudformation으로 EC2 만들기



2-2  eksctl , kubectl 설치법 2가지 

eksctl , kubectl 수동 설치 = cloud9이나 EC2에 로그온 해서 설치

eksctl , kubectl 자동 설치 = Cloudfomation , 테라폼으로 자동 설치 





<3> 사용자PC------명령서버1대 ---- EKS 생성으로 생성해보자.




https://console.aws.amazon.com/console/home




여기서는 eksctl , kubectl 자동 설치 = Cloudfomation으로 자동 설치 해보자.

EKS까지 한번에 생성된다.



1

Cloudformation  링크 클릭해 설치


1.27 버전으로 설치한다.  (2023년 12월 최신버전은 1.28 버전이다.)



아래  cloud formation 파일을 클릭 하세요  !!

cloud formation  파일



EC2 키페어 선택

Access 키 복붙

Secret 복붙

다음> 다음 >  실행


클라우드 포메이션 실행하고 바로 EKS 클러스터가면 생성중이라고 나와야 한다.

Access-key/Secret-key만 똑바로 넣었다면 EKS 클러스터가 생성된다.

제대로 넣지 않았다면 베스천 호스트 ec2 1대만 생성 된다.




1분후  eksctl  생성까지 진행되는것이 보여야 정상.

클러스터 생성에 30분 소요 된다.





2

EC2 > 인스턴스는 20분이 지나야 생성이 확인 된다.



3

(선택) yaml 파일 받아 생성 하기.

stackName=myeks


https://vclock.kr/timer/#countdown=00:10:00&enabled=0&seconds=0&sound=xylophone&loop=1



3

업그레이드 하지 않아도 된다.


단지, 업그레이드 하고 싶으면 반드시 설치 완료된후 업그레이드 하자. (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





또는



4


최신 버전으로 설치한다.  

최신 버전은 1.28 이다.


https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html


myeks


EKS 생성중임을 확인하자.

eksctl-myeks-cluster가 진행중임을 확인하자.

Access-key / Secret-key가 제대로 들어갔다면 진행중이다.

아래 참조




5

클라우드 포메이션 실행하고 바로 EKS 클러스터가면 생성중이라고 나와야 한다.

Access-key/Secret-key만 똑바로 넣었다면 EKS 클러스터가 생성된다.

제대로 넣지 않았다면 베스천 호스트 ec2 1대만 생성 된다.








<4>  EC2의 베스천 서버 공인 IP로  로그인 



1

k get nodes




2

# 노드 보안그룹 ID 확인

aws ec2 describe-security-groups --filters Name=group-name,Values=*ng1* --query "SecurityGroups[*].[GroupId]" --output text


NGSGID=$(aws ec2 describe-security-groups --filters Name=group-name,Values=*ng1* --query "SecurityGroups[*].[GroupId]" --output text)

echo $NGSGID


3

# 노드 보안그룹에 eksctl-host 에서 노드(파드)에 접속 가능하게 룰(Rule) 추가 설정

aws ec2 authorize-security-group-ingress --group-id $NGSGID --protocol '-1' --cidr 192.168.1.100/32





10

멱등성 테스트

https://brunch.co.kr/@topasvga/3486








<5> pod안의 컨터이너에 들어가서 어플리케이션 설치 (선택)



export MY_POD_NAME=$(kubectl get pods -n default -o jsonpath='{.items[0].metadata.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






<6> 모니터링툴인 kubeops view 설치


kube-ops-view 설치


helm repo add geek-cookbook https://geek-cookbook.github.io/charts/


helm install kube-ops-view geek-cookbook/kube-ops-view --version 1.2.2 --set env.TZ="Asia/Seoul" --namespace kube-system


kubectl patch svc -n kube-system kube-ops-view -p '{"spec":{"type":"LoadBalancer"}}'


kubectl annotate service kube-ops-view -n kube-system "external-dns.alpha.kubernetes.io/hostname=kubeopsview.$MyDomain"


echo -e "Kube Ops View URL = http://kubeopsview.$MyDomain:8080/#scale=1.5"


( 5분 걸림)



watch -d kubectl get svc,pods -A




 k get svc

kube-ops-view                       LoadBalancer   10.100.18.156   a2f43379b1fb0440db35af6dc4a29f2b-1377535766.ap-northeast-2.elb.amazonaws.com   8080:30385/TCP   2m1s

[root@ip-172-31-40-122 alb-ingress-controller]# 



watch -d kubectl get svc




8080 접속


http://kubeopsview.masterseo0.link:8080



pod 생성

kubectl run myweb --image nginx 


kubectl delete pod --all




# 선택

모니터링2

k ns kube-system

watch -d kubectl get nodes



모니터링3

 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


// 모니터링 3 반영,  모니터링 2 반영 , 모니터링 1반영




<7> node 수 증가 감소 = 물리서버 증가 감소해보기


eksctl scale nodegroup --cluster $CLUSTER_NAME --name ng1 --nodes 4 --nodes-min 4 --nodes-max 6


or


eksctl scale nodegroup --cluster $CLUSTER_NAME --name ng1 --nodes 2 --nodes-min 2 --nodes-max 6






<8> 확인


EKS 생성법 아시겠죠

명령서버 1대 만들어 EKS 생성 관리하는법

Pod접속법

모니터링툴인 kubeops view 설치

node 수 증가/감소 = 물리서버 증가/감소 이해





다음

https://brunch.co.kr/@topasvga/3573



감사합니다.


매거진의 이전글 38탄-18. EKS DB -Getting Start
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari