[DOIK2] 쿠버네티스 배포 및 기초 지식

2023. 10. 22. 02:45DOIK@CloudNet

- cloudnet에서 주관하는 쿠버네티스 데이터베이스 오퍼레이터 스터디 2기 내용입니다

- 목적: 다양한 db 오퍼레이터 실습으로 eks 환경에서 db 배포 및 운영을 위한 다양한 db 오퍼레이터 실습

 

 

 

0. EKS 사용을 위한 AWS 세팅

1. IAM 만들기

root user는 탈취당하면 감당이 불가능하므로 필요에 따라 권한을 부여한 IAM user를 생성한다.

생성한 IAM은 IAM certificate center나 IAM management console 에서 확인할 수 있다

나는 처음에 IAM을 대충 만들었다가 관리자 권한이 없어서 지우고 새로 만들었다.

 

 

 

2. EC2 인스턴스 만들기

원래 스터디 사전준비에는 SSH만 있었지만 SSH를 만들기 위해서는 접속할 EC2가 필요하다. 프리티어 사양으로 생성.

-> 인 줄 알았는데 키페어가 필요한거지 EC2가 필요한건 아니었다... 키페어는 아래 캡처 좌측하단 밑에서 두번째 '키 페어' 클릭하면 만들 수 있다. 만든 EC2는 중지 후 종료했다. 여담이지만 워딩을 '종료'라 해서 찝찝하다. 삭제였으면 좋겠어...

검색창에서 EC2 검색

인스턴스 시작을 클릭하면 시작 전 설정화면이 나온다

 

 

 

3. SSH 키페어 준비

'새 키 페어 생성' 을 누르면 키페어가 다운로드된다(잃어버리면 안된다!) 

SSH 트래픽을 허용하는 ip를 지정 후 인스턴스 시작 클릭하면 인스턴스가 생긴다

모자이크처리 너무 힘들엉

 

4. ssh 연결 확인

그래서 ssh 클라이언트에서 준 예시대로 바로 연결하면 -> 안된다

이유1. 다운로드된 키가 다운로드 파일 폴더에 들어있었음 (.ssh 폴더로 옮겨줘야 한다)

이유2. .pem 키 권한이 너무 오픈되어 있었다. 디폴트는 644인데 400으로 변경을 권장한다고 한다. 시키는대로 했더니 된다.

chmod 권한 관련 설명은 아래 링크를 참고. 

 

[Linux] 리눅스의 사용자 권한과 chmod 명령어

리눅스의 사용자 권한 확인하기 리눅스의 파일과 디렉토리는 사용권한이 존재한다. 사용 권한에 대해 알아보기 위해 다음 명령어로 디렉토리와 파일을 생성한다. mkdir hello nano hello.java 파일과

ittrue.tistory.com

...자 이제 준비가 끝났다.

 

 

1. 실습환경 배포

1. 실습환경 배포

bastion-ec2 로 접속해서 노드에 접속하거나 워커노드 그룹을 관리하는 방식이다

스터디그룹에 공유해주신 .yaml 파일을 이용하면 정말 쉽게! 배포를 끝낼 수 있다. 

접속가능한 ip주소를 본인ip/32로 제한하는것만 하면 된다. 약 20분 소요 -> 그런데 왜 32인지는 확인 필요

 

 

2. 배포 확인

kubectl cluster-info
kubectl get cluster
kubectl get nodegroup --cluster $CLUSTER_NAME

이외에도 kubectl get ~~ 명령어를 이용해 다양한 정보를 확인할 수 있다고 한다

 

확인하려 들어가려고 하는데 자꾸 zsh: command not found:aws 가 떠서 brew로 aws commandline을 설치해줬다. 설치하고 다시 켰는데도 

brew install awscli

 

설치하고 다시 켰는데 이번엔 config가 없다 해서 IAM console 에 들어갔더니 access key는 만들어야 한다고. 만들어서 집어넣었다

 

AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: ap-northeast-2
Default output format [None]:

 

이제 접속해보니 The connection to the server localhost:8080 was refused - did you specify the right host or port? 해서 환경변수를 확인해보니 privatesubnet, publicsubnet 아무것도 안뜬다... 슬랙에 확인해보니 ec2 갯수가 모자라서 발생한다고. 32개 할당되어 있어서 아닌 것 같긴 하지만 일단 bastion만 만들어진 상황은 맞아서... 스택째로 날리고 새로 배포ㅠㅠ 했더니 된다

 

- 배포 중인 상황에서 eksctl get nodegroup --cluster $CLUSTER_NAME 을 조회하면

Error: cannot perform Kubernetes API operations on cluster "myeks" in "ap-northeast-2" region due to status "CREATING" 이라는 메시지가 뜬다.

 

- 재배포 후 확인: 이렇게 6개 스택이 모두 CREATE_COMPLETE되었으면 배포 성공

 

안될 떄 화면
배포 성공: cluster info, 각 노드 확인 등을 할 수 있다

 

3. 사용 완료 후 삭제

1주차 내용에는 기본 설정작업, 프로메테우스 설치 후 그라파나로 시각화 등 다양한 내용을 다뤘지만 포스팅에서는 앞으로 계속 사용하게 될 배포 과정에서의 삽질을 주로 다뤘고 반복 연습하면서 익숙해지려 했다.

 

마지막으로 자원을 삭제한다. 삭제에는 약 10-15분이 소요된다.

(처음할때는 삽질을 많이한 나머지 실습 끝내고 자려고 누웠을때 다음날 아침에 요금이 와장창 올라가있는 무서운 상상을 했다...)

eksctl delete cluster --name $CLUSTER_NAME && aws cloudformation delete-stack --stack-name $CLUSTER_NAME

이렇게 종료가 잘 되었음을 터미널에서도, ec2 console에서도 확인할 수 있다.

 

 

 

하면서 든 생각

- 입문자에게 가장 큰 장벽은 아는 것과 모르는 것을 빨리 분류하는 것 같다

- 보안은 중요하고 과금은 무섭다 (nn만원 날릴뻔한 GCP의 악몽이 떠오름)

- chmod 777을 남발했던 과거의 내가 부끄러웠다

- 하면서 예상시나리오대로 흘러가지 않을 때 뭘 고쳐야할지 몰라서 답답했고 빨리 알고싶어졌다.

- 나 혼자라면 절대 못했을듯. 좋은 스터디 열어주셔서 감사합니다.

- 다음 스터디부터는 1시간 전에 배포를 돌려놓아야겠다

 

 

 

References

- cloudnet DOIK 스터디 자료

https://www.youtube.com/watch?v=0jjgqsuRnEE&t=2s

 

- IAM user를 관리자 권한으로 만들기 https://seosh817.tistory.com/309#6.%20%ED%82%A4%20%ED%8E%98%EC%96%B4(Key%20pair)%20%EC%84%A4%EC%A0%95-1