도커&쿠버네티스 실습 환경 구축 > 클라우드네이티브

본문 바로가기

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

필기자
2025-09-03 11:48 220 0

본문

하이퍼바이저(Hypervisor)

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

도커&쿠버네티스 환경 구축 세가지 방법
  • 리눅스 컴퓨터에서 도커 사용
  • 윈도우/macOS에 가상 머신(VMware)과 같은 렌탈 환경 구축 후 Guest OS(우분투) 설치하여 도커 사용
    • 도커는 리눅스 친화적임
  • 윈도우용/macOS용 도커 사용
    • Hyper-V 또는 WSL 2(Windows Subsystem for Linux 2)위에 도커 엔진 설치 사용
      • Hyper-V : 윈도우 위에 “가상머신”을 올려서 그 안에 우분투 같은 전체 OS를 깔아야 함. 전통적인 VM 방식.
      • WSL2 : 윈도우에 마이크로소프트가 제공하는 리눅스 커널이 이미 들어있음. 그래서 전체 우분투를 VM에 설치하는 게 아니라, 윈도우 스토어에서 배포하는 “우분투 사용자 공간”만 받아서 커널 위에 얹는 구조임.
      • Hyper-V, WSL2 도커 호환성 보장 못함.
3529946166_ogAdG54u_d50743a44e150f833e04358d6cc138eff4a14104.png

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

VMware 설치 과정

- vmware 공식 홈페이지 접속 https://www.vmware.com/kr.html (2024년05월부터 변경됨)
- 2024년 5월 13일: Broadcom이 VMware 인수 후 첫 발표에서 VMware Workstation Pro와 Fusion Pro를 모두 무료(FREE)로 제공한다고 공지함.
- 유로버전이 무료로 공개됨 : https://archive.org/download/vmwareworkstationarchive
20250903121330_85b4dc9eb7d007620f49cb9b0007b920_y326.png
- 공식 다운로드 : https://support.broadcom.com/

- 다운로드 파일 실행 및 설치
20250903122343_85b4dc9eb7d007620f49cb9b0007b920_fuyx.png

20250903122407_85b4dc9eb7d007620f49cb9b0007b920_x999.png

20250903122506_85b4dc9eb7d007620f49cb9b0007b920_orz1.png

20250903122541_85b4dc9eb7d007620f49cb9b0007b920_o27j.png

우분투 이미지 다운로드

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

3529946166_JQuR0Ppx_5c2215844fe4b955e8cd71a8e2a98d01cd189009.png


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

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

20250904151831_85b4dc9eb7d007620f49cb9b0007b920_9sqv.png
20250904152001_85b4dc9eb7d007620f49cb9b0007b920_b49j.png

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

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

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

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

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

20250904153820_85b4dc9eb7d007620f49cb9b0007b920_jnnj.png

- 생성된 master 가상머신 실행
20250904153857_85b4dc9eb7d007620f49cb9b0007b920_2cgq.png

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

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

3529946166_osDUlYdi_fdfe05bde7b231c6364675a4ff7c73cb09155a32.png

3529946166_8pca2kFD_de54fa21a721d756216b980bb89fae9ae8cfb12d.png

- 이후 계속 설치
3529946166_LtOAsgSN_effc584c02ad60f98361a60675c221e78ef35b24.png

3529946166_Tz1sX8p4_3614f61fe43fc2c587eb993db2219e7293aee44e.png

ID : 본인아이디, 예, kkl81
PASSWORD : 2323  <-------- 꼭 통일
20250904125350_85b4dc9eb7d007620f49cb9b0007b920_q2p5.png

3529946166_CqjEMZeO_4d8cc5364ca0bcfb303a534b37c7397c6ce3277b.png

- 설치 완료 후 조치 사항

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

3529946166_dC9VsNQT_cecf77abb60cc694d4388af9244e2dbb2466ffd4.png

3529946166_wPrW25cK_b713621be933c45063a124c3737edb00455a4644.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
3529946166_RvXUPExw_19829f0811af22177faeef101659c20a5982eb49.png

3529946166_1IyfYDlx_76fa5d7e9f90f3e21f6d66be6c577d15710f888b.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
3529946166_pZnkzsjC_46bbbe6e8d398bafe8e1b37d43b28ced33a20b8f.png

- ssh, curl 설치
  • sudo apt install ssh curl
  • ssh : 외부에서 리눅스 shell에 접근할 수 있도록 하는 원격접속 도구
  • curl : shell url을 통해 HTTP 요청을 보낼 수 있는 도구

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

- 도커 서비스 상태 확인
  • sudo systemctl status docker
  • active (running) 상태이면 도커가 정상적인 상태
3529946166_otIumNl4_a3a45f68793a768baf0840f780489e18e47cdda9.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로 설정되있으면 정상
3529946166_4Dv2ncP6_24114f8cff4b75882453fe5bdddaf0102724291f.png
  • sudo nano /etc/docker/daemon.json

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

3529946166_zpQio7AH_be559ce2977234222e29c209b958e442f616a0d5.png
  • sudo mkdir -p /etc/systemd/system/docker.service.d
  • sudo systemctl daemon-reload
  • sudo systemctl restart docker
  • sudo docker info | grep -i cgroup
3529946166_FLkoabRJ_5ca896f0bb99810eb29d4571371c95147469d531.png

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

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

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

3529946166_fN0WXv4g_0d17808d2e09c5696c97ea1679ff483e70c35852.png

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

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

3529946166_B1uGSC52_0ba64d6958da62ff633f035e535548f53d691535.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 서버 주소)
3529946166_0y16ndGZ_02413da6a6b9b3831ae0df3b5b9467b714128ae7.png

- 각 가상머신 호스트명 변경
3529946166_QfeEX4Ak_d21655ebade08629421a940cf0d5556d8aa609b7.png

댓글목록0

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