◼️ 쿠버네티스 무게감 있게 설치하기
🟢 컨테이너기반 App 배포 과정
- 컨테이너 빌드
자바 애플리케이션(jar 파일)을 실행하기 위한 Docker 이미지를 만듦. - 컨테이너 OpenJDK 이미지 다운로드
DockerHub에서 OpenJDK 이미지를 다운로드해 자바 환경을 준비. - 이미지 업로드
빌드된 Docker 이미지를 DockerHub에 업로드해 다른 서버에서도 사용할 수 있게 준비. - Jenkins에서 pod 생성 요청
Jenkins가 Kubernetes에 pod(컨테이너 실행 단위)를 생성해달라고 요청하고, 그 요청에 이미지 주소를 첨부. - Kubernetes에서 이미지 다운로드
Kubernetes는 이미지 주소를 통해 DockerHub에서 이미지를 다운로드. - 컨테이너 실행
Kubernetes는 다운로드한 이미지를 사용해 containerd에게 컨테이너 생성 요청.
◼️ 쿠버네티스 빠른 설치 개요
- Virtual Box 설치
- Virtual Box 동작을 코드로 제어할 수 있는 Vagrant를 설치
- Vagrant 스크립트 실행
- 클라이언트 접속 툴인 MobaX Terminal을 설치 후 SSH 원격 접속
◼️ 설치 과정 - Vagrant
위 과정에서 Vagrant 스크립트 실행 과정을 자세히 보면 아래와 같다.
🟢 Vagrant로 Rocky Linux Kubernetes 마스터 노드 자동 설치
- VirtualBox로 Rocky Linux 설치:
- Vagrant를 통해 가상 환경에 Rocky Linux를 설치.
- rockylinux/8이라는 기본 이미지를 사용하며, 이 이미지 위에 Kubernetes 설치를 위한 초기 설정을 진행함.
- 마스터 노드 설정:
- Kubernetes 클러스터에서 제어 역할을 하는 마스터 노드를 설정.
- 이 마스터 노드는 k8s-master라는 이름을 가지며, 사설 네트워크(프라이빗 네트워크)에서 192.168.56.30 IP 주소를 가짐
- (+참고로, Vagrant는 기본IP를 할당해줌. 이는 NAT 네트워크로, VM이 외부 네트워크와 연결 가능.)
- 가상 머신은 4096MB 메모리와 4개의 CPU를 할당
- Kubernetes 설치:
- 기본적으로 모든 노드에서 실행되는 설치 스크립트인 $default_script를 사용하여 기본 설정을 진행
- 마스터 노드에서는 $master_script라는 특별한 스크립트를 실행해, 마스터 노드 전용 Kubernetes 설정을 자동으로 설치
이제 위의 그림에서 Kubernetes 설치 부분을 더 자세히 보도록 하자.
◼️ 설치 과정 - Kubernetes
다음으로,Kubernetes 클러스터를 설치하고 설정한다. 모든 노드에서 Rocky Linux 기본 설정과 Kubernetes 설치 전 사전작업, 컨테이너 런타임 설치 등을 진행한 후, 마스터 노드에서 클러스터를 초기화하고 추가적인 편의 기능을 설치한다.
1. 쿠버네티스 설치 (모든 노드):
모든 노드에서 공통적으로 수행하는 설치 작업을 진행한다.
- [4] Rocky Linux 기본 설정
- 패키지 업데이트 및 시간대(Timezone) 설정
- [5] kubeadm 설치 전 사전작업
- 방화벽 해제와 스왑(Swap) 비활성화를 진행하여, Kubernetes 설치 전 환경을 준비
- [6] 컨테이너 런타임 설치
- Kubernetes는 컨테이너 런타임을 필요로 하며, 이를 위한 설치 작업을 진행
- [6-1] 컨테이너 런타임 설치 전 사전작업: iptables(네트워크 필터링)를 설정
- [6-2] 컨테이너 런타임 설치: containerd를 설치 (옵션으로 Docker 엔진을 설치할 수도 있다.)
- [6-3] 컨테이너 런타임 활성화: CRI(Container Runtime Interface)를 활성화
- [7] kubeadm 설치
- Kubernetes 설치 도구인 kubeadm을 설정
- repo 및 SELinux 설정을 완료한 뒤 kubelet, kubeadm, kubectl 패키지를 설치
2. Master Node 세팅:
Master Node에서만 추가적으로 수행하는 작업들이다.
- [8] kubeadm으로 클러스터 생성
- [8-1] 클러스터 초기화: Pod 네트워크 설정을 포함한 초기화 작업을 수행.
- [8-2] kubectl 사용 설정: 클러스터 관리 도구인 kubectl 사용 설정.
- [8-3] CNI 플러그인 설치: 네트워크 플러그인인 calico를 설치. (컨테이너들간의 통신을 위한 것임.)
- [8-4] Master 노드에서 Pod 생성 가능 설정: 기본적으로 Master 노드는 Pod를 실행하지 않으나, 설정가능하게 만듬.
- [9] 쿠버네티스 편의 기능 설치:
- [9-1] kubectl 자동완성 기능: 편리하게 명령어를 입력할 수 있도록 자동 완성 기능을 설정
- [9-2] Dashboard 설치: Kubernetes 상태를 모니터링할 수 있는 대시보드를 설치
- [9-3] Metrics Server 설치: 리소스 사용량을 모니터링할 수 있는 메트릭스 서버를 설치
참고로 대시보드 설치를 끝내면 내 리눅스 네트워크에는 30000 포트가 열린다.
해당 포트로 접속시 트래픽은 리눅스 iptables를 거쳐서 calico 네트워크망으로들어가고, 이 망 내에서 Dashboard IP를 찾는다.
'클라우드' 카테고리의 다른 글
[쿠버네티스] 쿠버네티스 표준 생태계로 편해진 IT 인프라 구축 (4) | 2024.09.26 |
---|---|
[쿠버네티스] 쿠버네티스와 컨테이너 역사 (1) | 2024.09.25 |