실습
해당 실습은 AWS 환경에서 t3.small 타입의 EC2 인스턴스에 Ubuntu Server 20.04 LTS 에서 실습을 진행하다고 가정하고 작성되었습니다.
Minikube
EC2 인스턴스 1개를 생성하세요.
Docker 설치
Docker 권한 설정
Minikube 설치
Minikube 실행
실행중인 Pod 확인
데모 애플리케이션 배포
서비스 엔드포인트 생성
서비스 엔드포인트 및 포트 확인
서비스 엔드포인트로 접속되는지 확인
EC2 인스턴스 삭제
Single Master Cluster
EC2 인스턴스 2개를 생성하세요.
마스터 노드 구성
마스터 노드로 사용할 EC2 인스턴스에 접속
Root 유저로 전환
시스템 구동에 필요한 라이브러리 설치
CRI-O 구동에 필요한 overlay와 br_netfilter 커널 모듈 불러오기
CRI-O 구동에 필요한 커널 파라미터 설정파일 생성
위에서 생성한 설정파일 반영
CRI-O 설치
CRI-O CNI 설정 확인
CRI-O CNI 설정 삭제
CRI-O 서비스 재기동
쿠버네티스 설치 및 구동에 필요한 바이너리 설치
리눅스 호스트네임 설정
컨트롤 플레인(마스터 노드) 구성
kubeconfig 설정
kubeconfig 파일 확인
마스터 노드의 사설 IP 확인
노드 목록 확인
마스터 노드 상태 확인
배포된 Pod 확인
Pending 상태의 Pod가 있다면 아래의 명령어를 통해서 그 이유를 확인
CNI 플러그인 설치
마스터 노드 상태 확인
배포된 Pod 확인
정적 Pod 생성 경로에 있는 파일 확인
Manifest 파일 생성
위에서 생성한 Manifest 파일을 정적 Pod 생성 경로로 복사
새로운 Pod가 생성되었는지 확인
kubectl 명령어로 위에서 생성한 Pod 삭제
Pod가 삭제되었는지 확인
정적 Pod 생성 경로에 있는 파일 삭제
Pod가 삭제되었는지 확인
kubectl 명령어로 새로운 Pod 생성
새로운 Pod가 생성되었는지 확인
Pod가 Pending 상태인 이유 확인
마스터 노드에 부여된 Taint 확인
워커 노드 구성
워커 노드로 사용할 EC2 인스턴스에 접속
Root 유저로 전환
시스템 구동에 필요한 라이브러리 설치
CRI-O 구동에 필요한 overlay와 br_netfilter 커널 모듈 불러오기
CRI-O 구동에 필요한 커널 파라미터 설정파일 생성
위에서 생성한 설정파일 반영
CRI-O 설치
CRI-O CNI 설정 삭제
CRI-O 서비스 재기동
쿠버네티스 설치 및 구동에 필요한 바이너리 설치
리눅스 호스트네임 설정
마스터 노드에 연결된 터미널로 이동해서 워커 노드 조인 명령어 생성
워커 노드에서 위의 명령어를 실행하고 나온 명령어를 실행
클러스터 구성 확인
마스터 노드 SSH 세션으로 이동
노드 상태 확인
Pending 상태였던 Pod가 배포됐는지 확인
Service 생성
서비스 엔드포인트 및 포트 확인
웹브라우저에서
ANY_NODE_IP:SERVICE_NODE_PORT
로 접속되는지 확인 - 아래 명령어로 주소 확인 가능
실습에 사용한 인스턴스들을 삭제하세요.
Multi Master Cluster
EC2 인스턴스 5개를 생성하세요.
HAProxy 구성
로드밸런서로 사용할 EC2 인스턴스에 SSH 접속
리눅스 호스트네임 설정
HAProxy 설치
HAProxy 설정파일을
/etc/haproxy/haproxy.cfg
아래와 같이 수정HAProxy 데몬을 재시작하고 상태 확인
웹 브라우저를 열고
HAPROXY_IP:9999/stats
주소로 접속 - 아래 명령어로 주소 확인 가능
마스터 노드 구성
첫번째 마스터 노드 구성
마스터 노드로 사용한 인스턴스중에 하나로 SSH 접속
Root 유저로 전환
시스템 구동에 필요한 라이브러리 설치
CRI-O 구동에 필요한 overlay와 br_netfilter 커널 모듈 불러오기
CRI-O 구동에 필요한 커널 파라미터 설정파일 생성
위에서 생성한 설정파일 반영
CRI-O 설치
CRI-O CNI 설정 삭제
CRI-O 서비스 재기동
쿠버네티스 설치 및 구동에 필요한 바이너리 설치
리눅스 호스트네임 설정
첫번째 컨트롤 플레인(마스터 노드) 구성
위의 명령어를 실행하고 나온 Outputs에서 컨트롤 플레인 노드 조인 명령어를 메모장에 복사
kubeconfig 설정
마스터 노드 상태 확인
CNI 플러그인 설치
마스터 노드 상태 확인
두번째 마스터 노드 구성
마스터 노드로 사용한 인스턴스중에 하나로 SSH 접속
Root 유저로 전환
시스템 구동에 필요한 라이브러리 설치
CRI-O 구동에 필요한 overlay와 br_netfilter 커널 모듈 불러오기
CRI-O 구동에 필요한 커널 파라미터 설정파일 생성
위에서 생성한 설정파일 반영
CRI-O 설치
CRI-O CNI 설정 삭제
CRI-O 서비스 재기동
쿠버네티스 설치 및 구동에 필요한 바이너리 설치
리눅스 호스트네임 설정
[첫번째 마스터 노드 구성] 13번 단계에서 메모한 명령어를 실행
세번째 마스터 노드 구성
마스터 노드로 사용한 인스턴스중에 하나로 SSH 접속
Root 유저로 전환
시스템 구동에 필요한 라이브러리 설치
CRI-O 구동에 필요한 overlay와 br_netfilter 커널 모듈 불러오기
CRI-O 구동에 필요한 커널 파라미터 설정파일 생성
위에서 생성한 설정파일 반영
CRI-O 설치
CRI-O CNI 설정 삭제
CRI-O 서비스 재기동
쿠버네티스 설치 및 구동에 필요한 바이너리 설치
리눅스 호스트네임 설정
[첫번째 마스터 노드 구성] 13번 단계에서 메모한 명령어를 실행
워커 노드 구성
워커 노드로 사용할 EC2 인스턴스에 접속
Root 유저로 전환
시스템 구동에 필요한 라이브러리 설치
CRI-O 구동에 필요한 overlay와 br_netfilter 커널 모듈 불러오기
CRI-O 구동에 필요한 커널 파라미터 설정파일 생성
위에서 생성한 설정파일 반영
CRI-O 설치
CRI-O CNI 설정 삭제
CRI-O 서비스 재기동
쿠버네티스 설치 및 구동에 필요한 바이너리 설치
리눅스 호스트네임 설정
첫번째 마스터 노드에 연결된 터미널로 이동해서 워커 노드 조인 명령어 생성
워커 노드에서 위의 명령어를 실행하고 나온 명령어를 실행
클러스터 구성 확인
첫번째 마스터 노드에 연결된 터미널로 이동
노드 상태 확인
배포된 Pod 확인
HAProxy에 연결된 터미널로 이동
웹 브라우저를 열고
HAPROXY_IP:9999/stats
주소로 접속 - 아래 명령어로 주소 확인 가능
컨트롤 플레인 고가용성 테스트
첫번째 마스터 노드에 연결된 터미널로 이동
실행중인 ETCD Pod 확인
ETCD Pod 로그 확인
실행중인 ETCD Pod의 IP 주소 확인
ETCD 클러스터 상태 확인
ETCD 클러스터의 리더 Pod가 배포된 노드에 가서 컨테이너 런타임 정지 - 첫번째 마스터 노드의 ETCD가 가장 먼저 구성되었기 때문에 일반적으로 첫번째 마스터 노드에 배포된 ETCD가 리더
첫번째 마스터 노드에 연결된 터미널로 이동해서 ETCD Pod 로그 확인
웹 브라우저를 열고
HAPROXY_IP_ADDRESS:9999/stats
주소로 접속해서 위에서 노드들의 연결 상태 확인ETCD 클러스터 상태 확인 - 리더가 변경된 것을 확인
실행중인 ETCD Pod의 IP 주소 확인
ETCD 클러스터의 리더가 아닌 Pod가 배포된 노드에 가서 컨테이너 런타임 정지
HAProxy 상태 페이지에 들어가서 노드들의 연결 상태 확인
첫번째 마스터 노드에 연결된 터미널로 이동해서 노드 상태 확인
컨테이너 런타임을 정지한 노드들에서 컨테이너 런타임 실행
HAProxy 상태 페이지에 들어가서 노드들의 연결 상태 확인
첫번째 마스터 노드에 연결된 터미널로 이동해서 노드 상태 확인
모든 Pod가 정상적으로 실행되고 있는지 확인
ETCD 클러스터 상태 확인
ETCD
ETCD에 저장된 데이터 확인
Deployment 생성
ETCD에 업데이트된 데이터 확인
위에서 생성한 Deployment 객체의 데이터 확인
컨테이너 이미지 변경
위에서 생성한 Deployment 객체 정보를 YAML 형식으로 확인
ETCD에 업데이트된 데이터 확인
새로 생성된 ReplicaSet 확인
EKS Cluster
eksctl 설치
eksctl 버전 확인
ClusterConfig 생성
kubeconfig 삭제
현재 로그인된 IAM 자격증명 확인
EKS 클러스터 생성
Deployment 생성
생성된 Pod 확인
Service 생성
생성된 Service 확인
생성된 ELB 주소 확인
웹브라우저에서 위에서 확인한 URL로 접속
EKS 콘솔에서 Control Plane Logging 활성화
CloudWatch에서 로그 확인
리소스 삭제
EKS 클러스터 삭제 (다른 실습을 계속 진행할 경우에는 클러스터를 삭제하지 않습니다)
Last updated