도커&쿠버네티스 실습 환경 구축 > 도커 & 쿠버네티스

본문 바로가기

[설치] 도커&쿠버네티스 실습 환경 구축

필기자
2024-07-29 14:45 733 0

본문

하이퍼바이저(Hypervisor)

  • 컴퓨터 하드웨어 위에서 여러 운영체제를 동시에 실행할 수 있게 해주는 가상화 소프트웨어.
  • 물리적인 컴퓨터 자원을 분할하여 각 가상 머신이 독립적으로 운영할 수 있게 자원을 할당하고 관리함.
  • 하드웨어 자원을 효율적으로 활용하고, 여러 운영체제나 애플리케이션을 격리된 환경에서 운영해 보안성과 안정성을 높일 수 있음.
  • 타입 1 하이퍼바이저 (Bare-metal 하이퍼바이저)
    • 하드웨어 위에 직접 설치되어 운영체제 없이 가상 머신을 관리함.
    • 예: VMware ESXi, Microsoft Hyper-V, Xen. 보안성과 성능이 뛰어나 주로 데이터센터나 서버 환경에서 사용됨.
  • 타입 2 하이퍼바이저 (호스트형 하이퍼바이저)
    • 기존 운영체제 위에서 실행되며, 운영체제가 가상 머신을 관리함.
    • 예: Oracle VirtualBox, VMware Workstation. 주로 개발, 테스트, 데스크톱 가상화 환경에서 사용됨.

도커&쿠버네티스 환경 구축 세가지 방법
  • 리눅스 컴퓨터에서 도커 사용
  • 윈도우/macOS에 가상 머신(VMwaer)과 같은 렌탈 환경 구축 후 Guest OS(우분투) 설치하여 도커 사용
    • 도커는 리눅스 친화적임
  • 윈도우용/macOS용 도커 사용
    • Hyper-V 또는 WSL 2(Windows Subsystem for Linux 2)위에 도커 엔진 설치 사용
3422125590_50zcPjoJ_adb6fb5c7d07c6c0b8d066237f840b369a620052.png

가상머신을 사용하여 도커&쿠버네티스 실습 환경을 구축한 이유
  • 실제 운영 환경을 유사하게 구축하여 사전에 연습할 수 있어 비용적인 절감
가상머신 플랫폼 중 VMware를 선택 이유
  • 사용하기 간편하고 다양한 기능을 제공
  • 확장성이 좋고 안정적인 환경을 제공
  • 풍부한 지원과 사용자 친화적인 인터페이스로 쉽게 가상 머신을 생성하고 관리할 수 있음
  • 기업 수준의 요구사항과 기준을 충족하는 서비스를 제공
  • VMware외에 VirtualBox가 많이 사용됨

VMware 설치 과정

- vmware 공식 홈페이지 접속 https://www.vmware.com/kr.html (2024년05월부터 변경됨 아래 링크 사용)
https://softwareupdate.vmware.com/cds/vmw-desktop/player/17.5.2/23775571/windows/core/
- 공식 다운로드 : https://blogs.vmware.com/teamfusion/2024/05/fusion-pro-now-available-free-for-personal-use.html

3422125590_FTdBxtoL_90b718805dd7fffbedc7c5b5dddc73c563a8f2d9.png

- 제품 클릭후 데스크톱 하이퍼바이저에서 Workstaion Player 클릭
3422125590_2GlR4WFc_fa06919f2e56df5a8fd6d43d3d75de13eb746f93.png


- GO TO DOWNLOADS 클릭
3422125590_mwCzMTWo_d21f4febbba5cbb7e7fdb0797b55bf09e8e881b5.png

- 다운로드 파일 실행 및 설치
3422125590_A6PbCqDo_011e20160225a07e75685d0f5bc97dcccfdc91c8.png

3422125590_WGtqXkTP_3d4fae6acc4293ce1c10c49a3ee701eb51d5dafc.png

3422125590_Syhutk1Y_c69d2103973fd822cb46e5ebf24c0b084a7bcc1e.png

우분투 이미지 다운로드

- https://releases.ubuntu.com/focal/
  • 위 경로에 가서 Desktop image[Ubuntu 20.04.6 LTS (Focal Fossa)] 다운로드
  • 현재 시점 우분투 22.04 버전이 있으나 도커&쿠버네티스 운영을 위해 검증된 20.04.06 버전 설치

3422125590_lRq9hsA4_d1a6eb61fa9eacc6af51f09ed180e9a474a8ed90.png


우분투 가상 머신 설치(도커&쿠버네티스 템플릿 이미지 만들기)

- 바탕화면에 있는 Vmware Workstation 17 Player 실행 후 새로운 가상머신 생성

3422125590_MosjftwF_6136d5fd9cd166d4534d3a58636aa75b50b0f0b7.png

- 운영 체제 나중에 설치 체크 후 Next
- 가상 머신에 어떤 운영체제를 설치 할 것인지 선택 후 Next
3422125590_DpdASz1s_6937b595ab076276ea3148643d361573db219305.png

- 가상 머신 이름과 경로 선택 후 Next
- 가상 머신 하드 디스크 사이즈를 40GB로 설정 후 단일 파일로 저장하는 옵션 선택
3422125590_O9mSHnrq_d3dcd57dfbcf92eecbf224e1e14583b012b0a277.png

- 가상 머신의 하드웨어 사용자 정의 클릭 후
- 다운로드 받은 우분투 이미지 선택
3422125590_srFGLvi6_3c41366eb57174f2315ce038d9b90b2530323731.png

- 가상머신의 네트워크 어댑터 방식을 NAT(Network Address Translation)로 설정 후 close 및 Finish 클릭하여 가상 머신 생성

  • IP 패킷에 있는 출발지 및 목적지의 IP 주소와 TCP/UDP 포트 숫자 등을 바꿔 재기록하면서 네트워크 트래픽을 주고 받게하는 기술

- 생성된 master 가상머신 실행
3422125590_xX0mEfFL_05888e9214e2e08feb63a63e1b05be2872224ed6.png

- ubuntu lilux 설치
- 첫 설치 화면에서 next 버튼이 보이지 않을시 조치

  • 상단 install 제목 우측 끝 버튼 클릭
  • 바탕화면에서 우클릭 후 Display Settings 접근
  • 화면 해상도 조정(1280 x 768 추천)
  • 해상도 조정후 바탕화면에 있는 install Ubuntu 20.04.6 LTS 클릭, 설치 진행

3422125590_LC1Sb2xv_0d769b5128f28438ae079ea9f92f0a0acfa31912.png

3422125590_zPb3VCaA_7b08fd0dd9f1cdc5201dbf6da855166439272561.png

- 이후 계속 설치
3422125590_EwRTm3LJ_ba5bcf96f94d7e0eab16c7099006943aed2cfa59.png

3422125590_YwPCni7D_885b21bfe15741a3fce3352954ee2648c129f30e.png
3422125590_CAgeVXbR_685d53d6b3a9feefb3d0b8de74d4a20e2826c2ea.png

3422125590_xbiIOCpS_6d4874ff4139f197e93001594d15ba6bf988256a.png

- 설치 완료 후 조치 사항

  • 우분투 버전 업그레이드 X
  • 소프트웨어 업데이트 필수 아님

3422125590_CndioFIs_967b595e462efff0f907e31b482bd93d61b18101.png

3422125590_416n9wWT_4c6efe4507c402a39d2e4150ed6a3827f74ea376.png

도커&쿠버네티스 운영을 위한 공통 템플릿 제작

- 호스트 <-> 게스트 복사 붙여 넣기 기능 활성



user1@myubuntu:~$ sudo apt-get update
user1@myubuntu:~$ sudo apt-get install open-vm-tools-desktop


- 동적IP 해제 후 고정 IP를 할당하기 : ip 주소확인

  • gateway 확인 : ip route
  • 현재 할당된 ip 확인 :ip addr
3422125590_JwHVxpMN_51a218540e807751ad3df2179386f6995d2ce3ad.png

3422125590_u8R5wQIA_a68aa038a8c259b3d416b9deadb2d22fd9acd215.png
 

- 동적IP 해제 후 고정 IP를 할당하기 : netplan설정

  • sudo nano /etc/netplan/01-network-manager-all.yaml
  • sudo netplan apply


# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.74.128/24]
      gateway4: 192.168.74.2
      nameservers:
        addresses: [192.168.74.2]


- 패키지를 최신 상태로 업데이트

  • sudo apt-get update && sudo apt-get upgrade
3422125590_hKUxbRcO_925cf3033818db29c565c566add197938e8b27eb.png

- 패키지 관리자가 https를 통해 데이터와 패키지에 접근할 수 있도록 도구 다운로드
  • sudo apt install apt-transport-https curl
  • apt-transport-https: APT 패키지 관리자가 HTTPS를 통해 패키지를 다운로드할 수 있도록 지원하는 패키지
  • curl: 명령줄(shell)에서 url을 통해 HTTP 요청을 보낼 수 있는 도구
3422125590_qUmcL0Y2_f747c06ea772c8b81c2084360f978705a2b8e435.png

- 컨테이너 런타임인 도커 설치
  • sudo apt install docker.io
  • 다운 중 “계속 하시겠습니까?” 메시지가 나타나면 ‘y’를 입력
  • 도커 다운로드 후 sudo systemctl start docker 명령어로 도커 실행
  • 재부팅 후에도 서비스가 자동으로 시작되도록 명령어 sudo systemctl enable docker
3422125590_69jMoKZ7_07ae6e9536252673b5c141e8d62e96696faec095.png

- 도커 서비스 상태 확인
  • sudo systemctl status docker
  • active (running) 상태이면 도커가 정상적인 상태
3422125590_fGpg2lmz_e4fef53599024ba0a1720df0dab85af8e0b4e455.png

- 우분투 사용자를 도커 그룹에 추가하여 권한 문제로 일어날 수 있는 제약 해결
  • sudo usermod -aG docker $USER


#현재 사용자를 Docker 그룹에 추가하여, Docker 명령어를 사용할 때마다 sudo를 입력하지 않도록 함
sudo usermod -aG docker $USER
#위 권한 획득 확인을 위해 현재세션 새로고침
su - ${USER}
#도커 버전확인
docker --version
#간단한 테스트
docker run hello-world
#Hello from Docker! 출력 확인


- 물리 메모리가 부족할 경우를 대비해 만들어 놓은 공간이 스왑 메모리 비활성하기

  • sudo swapoff -a
    • 스템에서 현재 활성화된 모든 스왑 파티션과 스왑 파일을 비활성화
  • sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
    • 파일에서 스왑 관련 항목을 주석 처리하여, 시스템이 재부팅될 때 스왑 파티션이 자동으로 마운트되지 않도록 설정
  • Kubernetes는 스왑 메모리가 활성화된 상태에서 제대로 동작하지 않음

- cgroup, systemd
  • cgroup(컨트롤 그룹, control group) : 리눅스 커널에서 프로세스나 작업을 그룹화하고 이 그룹에 대해 시스템 자원(CPU, 메모리, 디스크 I/O, 네트워크 대역폭 등)을 제어하고 모니터링할 수 있도록 하는 기능
  • systemd : 리눅스 시스템에서 사용되는 시스템 및 서비스 매니저, 부팅 과정, 프로세스 관리, 서비스 제어 등을 담당
  • Docker에서 cgroup 관리를 위해 systemd를 사용하도록 변경하는 이유는 systemd가 현대적인 리눅스 시스템에서 기본적으로 사용하는 서비스 관리자이기 때문 
  • systemd를 사용하면 Docker와 시스템의 리소스 관리 및 서비스 관리가 더 일관성 있게 이루어지며 안정성, 일관성, 성능 최적화를 기대할 수 있음

- 도커에서 cgroup 관리를 위해 systemd를 사용하도록 변경
  • sudo docker info | grep -i cgroup
  • cgroup driver가 systemd로 설정되있으면 정상
3422125590_4sbaRmqZ_85a40941e2fd79fc528ea240abc963e20f3347a3.png
  • sudo nano /etc/docker/daemon.json

{
     "exec-opts": ["native.cgroupdriver=systemd"],
     "log-driver": "json-file",
     "log-opts": {
         "max-size": "100m"
     },
     "storage-driver": "overlay2"
}

3422125590_puODnVNv_f2fa6f418a64f4d904ef5a053308c7bb9ccae02a.png
  • sudo mkdir -p /etc/systemd/system/docker.service.d
  • sudo systemctl daemon-reload
  • sudo systemctl restart docker
  • sudo docker info | grep -i cgroup
3422125590_jbqVwI35_d72de64b1623836ee5c736a103660aefc6a83ac5.png

※※※※※ 쿠버네트스 내용 진행하지 마세요. ※※※※※※
- 쿠버네티스 리포지토리 지정을 위한 key 발급 및 리포지토리 지정 3422125590_iReW17Vf_0de292a2a9065d050b4c7a9d9d4dcc5195d6cb30.png

- 쿠버네티스 패키지 다운로드
  • sudo apt install kubeadm kubelet kubectl kubernetes-cni
  • 다운로드 중 “계속 하시겠습니까?” 메시지가 보이면 ‘y’를 입력후 엔터
  • 마스터 노드, 워커 노드 공통 템플릿 완성 가상머신 전원 끄기
3422125590_pRYu7dtw_131663bed4f8912c6ab60e3ad049cbdf64023351.png

- 세팅된 가상머신 설치 경로에서 필요한 노드 수 만큼 폴더 복사
3422125590_eVBb8w4g_d9f9e788acd55a2daa244012a6e7672627344411.png

3422125590_4kAXZ9w3_a0d52af6164929d2dcba97e713dd0b8cc99ae02a.png

- 복사한 가상머신의 설정 파일을 새로운 가상머신을 생성
3422125590_MNRcZh2T_7cda4e6f95316556256d20a2f00d01674892a7e6.png

- 설정 파일을 기반으로 만들어진 가상머신 이름을 각각 변경하고 실행
- 실행시 옵션 원본 가상 머신의 원본과 같은 상태로 시작할 수 있게 I Copied It 옵션

3422125590_nPVsdSUg_50ffd6967a39241835c7dc2821a13e9067f33f0f.png

- 각 가상머신 고정 ip변경 
  • sudo nano /etc/netplan/01-network-manager-all.yaml
  • 아래 내용 기입후 저장 sudo netplan apply로 변경사항 적용
  • nameservers의 addresses부분 [8.8.8.8,8.8.4.4] 넣어도 무관함
  • 구글에서 제공하는 공개 DNS서비스 아이피 주소, 8.8.8.8(기본 DNS 서버 주소), 8.8.4.4(보조 DNS 서버 주소)
3422125590_O28krCSX_ac12bd5a697a2d982b0da550af804dc13782c3e3.png

- 각 가상머신 호스트명 변경
3422125590_QqgO8wN1_d65c9b265b8e0690f36873f113e39b14b8ce858e.png

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색