Kubernetes
Minikube
EBS 볼륨 사이즈 변경
Minikube 설치
클러스터 생성
실행중인 Pod 확인
데모 애플리케이션 배포
서비스 엔드포인트 생성
서비스 엔드포인트 및 포트 확인
서비스 엔드포인트로 접속되는지 확인
클러스터 삭제
쿠버네티스 클러스터 생성
실습 환경 생성
인스턴스 정보 확인
SSH 비밀번호 확인
새로운 터미널을 열고 첫번째 컨트롤 플레인 노드로 사용할 인스턴스로 SSH 연결
시스템 구동에 필요한 라이브러리 설치
컨테이너 런타임 구동에 필요한 overlay와 br_netfilter 커널 모듈 불러오기
컨테이너 런타임 구동에 필요한 커널 파라미터 설정
containerd 설치
쿠버네티스 설치 및 구동에 필요한 바이너리 설치
/etc/hosts
파일에 아래와 같은 라인 추가 - CP_IP_ADDRESS는 CP 노드 IP주소예를들어 CP의 IP주소가 123.45.67.89라면 아래처럼 입력
클러스터 설정 파일 생성
컨트롤 플레인 노드 구성
kubeconfig 파일 복사
kubeconfig 파일 확인
실행중인 Pod 확인
Pending 상태의 Pod의 상세내용 확인
노드 목록 확인
CP 노드 상태 확인
kubelet 로그 확인
CNI 플러그인 설치
실행중인 Pod 확인
CP 노드 상태 확인
kubectl 명령어에 대한 bash completion 설정
새로운 터미널을 열고 워커 노드로 사용할 인스턴스로 SSH 연결
시스템 구동에 필요한 라이브러리 설치
컨테이너 런타임 구동에 필요한 overlay와 br_netfilter 커널 모듈 불러오기
컨테이너 런타임 구동에 필요한 커널 파라미터 설정
containerd 설치
쿠버네티스 설치 및 구동에 필요한 바이너리 설치
/etc/hosts
파일에 아래와 같은 라인 추가 - CP_IP_ADDRESS는 CP 노드 IP주소컨트롤 플레인 노드에 연결된 터미널로 이동
Worker 노드 조인 명령어 생성
Worker 노드에 연결된 터미널로 이동해서 위의 명령어를 실행하고 나온 명령어를 실행
컨트롤 플레인 노드에 연결된 터미널로 이동
노드 상태 확인
샘플 애플리케이션 배포
Deployment 생성
Deployment 상태 확인
Pod가 생성되었는지 확인
생성된 NGINX Deployment 상태 상세 확인
클러스터에 발생한 이벤트 확인
Deployment에 속하는 Pod 삭제
Pod가 존재하는지 확인
Service 생성
NGINX 서비스 확인
NGINX 서비스에 연결된 Endpoints 확인
실행중인 Pod의 IP 주소 확인
서비스 엔드포인트 및 포트 확인
NGINX 서비스의 ClusterIP에 HTTP 요청
NGINX 서비스에 연결된 Endpoints 주소로 HTTP 요청
NGINX Deployment의 Replica 갯수를 3개로 변경
Pod가 추가로 생성됐는지 확인
NGINX 서비스에 연결된 Endpoints 확인
NGNIX 서비스를 NodePort 타입으로 변경
NGINX Service 엔드포인트 및 포트 확인
웹브라우저에서
ANY_NODE_IP:SERVICE_NODE_PORT
로 접속되는지 확인 - 아래 명령어로 주소 확인 가능NGINX Deployment의 Replica 갯수를 0개로 변경
웹브라우저에서
ANY_NODE_IP:SERVICE_PORT
로 접속되는지 확인NGINX Deployment의 Replica 갯수를 2개로 변경
웹브라우저에서
ANY_NODE_IP:SERVICE_PORT
로 접속되는지 확인리소스 삭제
고가용성 쿠버네티스 클러스터 구성
HAProxy로 SSH 접속
HAProxy 설치
HAProxy 설정파일
/etc/haproxy/haproxy.cfg
에 아래의 라인들을 추가 - CP_IP_ADDRESS에 CP 노드의 IP 주소를 넣으세요.HAProxy 데몬을 재시작하고 상태 확인
CP 노드에 연결된 터미널로 이동
/etc/hosts
파일에서 k8scp에 지정된 IP주소를 HAProxy IP 주소로 변경Worker 노드에 연결된 터미널로 이동
/etc/hosts
파일에서 k8scp에 지정된 IP주소를 HAProxy IP 주소로 변경웹 브라우저를 열고 HAPROXY_IP_ADDRESS:9999/stats 주소로 접속
CP 노드에 연결된 터미널로 이동
kubectl 명령어로 API 호출
HAProxy 통계 페이지를 리프레시해서 트래픽 정보가 업데이트 되는지 확인
SecondCP로 SSH 접속
시스템 구동에 필요한 라이브러리 설치
컨테이너 런타임 설치
쿠버네티스 설치
/etc/hosts
파일에 아래와 같은 라인 추가ThirdCP로 SSH 접속
14번부터 17번 단계를 실행
CP 노드에 연결된 터미널로 이동
컨트롤 플레인 조인 명령어 생성
위에서 생성한 명령어를 SecondCP 노드 및 ThirdCP 노드에 실행
HAProxy 노드에 연결된 터미널로 이동
HAProxy 설정파일
/etc/haproxy/haproxy.cfg
을 아래와 같이 수정HAProxy 데몬을 재시작하고 상태 확인
웹 브라우저를 열고 HAPROXY_IP_ADDRESS:9999/stats 주소로 접속해서 위에서 추가한 노드들의 연결 상태 확인
CP 노드에 연결된 터미널로 이동
Node 목록 확인
kubectl 명령어로 몇가지 API 호출을 실행하고 HAProxy 통계사이트에서 로드가 분산되는지 확인
고가용성 테스트
실행중인 ETCD Pod 확인
ETCD Pod 로그 확인
실행중인 ETCD Pod의 IP 주소 확인
ETCD 클러스터의 멤버 목록 확인
ETCD 클러스터 멤버 목록을 환경변수로 지정
ETCD 클러스터의 리더 확인
ETCD 클러스터의 각 멤버별 상태 확인
ETCD 클러스터의 리더 Pod가 배포된 노드에 가서 kubelet 및 컨테이너 런타임 정지- CP 노드의 ETCD가 가장 먼저 구성되었기 때문에 일반적으로 CP 노드에 배포된 ETCD가 리더
ETCD Pod 로그 확인
웹 브라우저를 열고 HAPROXY_IP_ADDRESS:9999/stats 주소로 접속해서 위에서 노드들의 연결 상태 확인
ETCD 클러스터의 리더가 변경되었는지 확인
ETCD 클러스터 각 멤버별 상태 확인
Node 상태 확인
CP 노드에서 kubelet 및 컨테이너 런타임을 재실행
웹 브라우저를 열고 HAPROXY_IP_ADDRESS:9999/stats 주소로 접속해서 위에서 노드들의 연결 상태 확인
노드 상태 확인
모든 Pod가 정상적으로 실행되고 있는지 확인
ETCD 클러스터의 리더가 다시 변경되었는지 확인
ETCD 클러스터 각 멤버별 상태 확인
Cloud9에 연결된 터미널로 이동해서 리소스 삭제
Amazon EKS
eksctl 설치
eksctl 버전 확인
현재 로그인된 IAM 자격증명 확인
EKS 클러스터 생성
kubectl 설치
Node 목록 확인
쿠버네티스 클러스터 버전 확인
Deployment 생성
생성된 Pod 확인
Service 생성
생성된 Service 확인
생성된 ELB 주소 확인
웹브라우저에서 위에서 확인한 URL로 접속
리소스 삭제
Pod의 리소스 사용량 확인
Metrics Server 설치 - https://github.com/kubernetes-sigs/metrics-server#kubernetes-metrics-server
Pod의 리소스 사용량 확인
데모 애플리케이션에 부하를 발생시키는 Pod 생성
Pod의 리소스 사용량 확인
HPA 생성
위에서 생성한 HPA 상태 확인
HPA 상태 모니터링
Ctrl+C를 입력해서 HPA 모니터링을 중지하고 Pod가 생성되었는지 확인
Pod의 리소스 사용량 확인
Pending 상태의 Pod가 있다면 아래의 명령어를 통해서 그 이유를 확인
Cluster Autoscaler 설치
Cluster Autoscaler 로그 확인
Pending 상태였던 Pod가 생성 되었는지 확인
Node 갯수 확인
Pod의 리소스 사용량 확인
데모 애플리케이션에 부하를 발생시키는 Pod 삭제
Pod의 리소스 사용량 확인
HPA 상태 확인
HPA 상세 내용 확인
데모 애플리케이션의 복제본 갯수는 1개로 강제 지정
Pod가 삭제 되었는지 확인
데모 애플리케이션 삭제
Pod가 삭제 되었는지 확인
Node가 삭제 되는지 확인
Cluster Autoscaler 로그 확인
EKS 클러스터 삭제
Last updated