[설치] 도커&쿠버네티스 실습 환경 구축
필기자
2024-07-29 14:45
1,443
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)위에 도커 엔진 설치 사용
가상머신을 사용하여 도커&쿠버네티스 실습 환경을 구축한 이유
- 실제 운영 환경을 유사하게 구축하여 사전에 연습할 수 있어 비용적인 절감
- 사용하기 간편하고 다양한 기능을 제공
- 확장성이 좋고 안정적인 환경을 제공
- 풍부한 지원과 사용자 친화적인 인터페이스로 쉽게 가상 머신을 생성하고 관리할 수 있음
- 기업 수준의 요구사항과 기준을 충족하는 서비스를 제공
- 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
- 제품 클릭후 데스크톱 하이퍼바이저에서 Workstaion Player 클릭
- GO TO DOWNLOADS 클릭
- 다운로드 파일 실행 및 설치
우분투 이미지 다운로드
- https://releases.ubuntu.com/focal/
- 위 경로에 가서 Desktop image[Ubuntu 20.04.6 LTS (Focal Fossa)] 다운로드
- 현재 시점 우분투 22.04 버전이 있으나 도커&쿠버네티스 운영을 위해 검증된 20.04.06 버전 설치
우분투 가상 머신 설치(도커&쿠버네티스 템플릿 이미지 만들기)
- 바탕화면에 있는 Vmware Workstation 17 Player 실행 후 새로운 가상머신 생성
- 운영 체제 나중에 설치 체크 후 Next
- 가상 머신에 어떤 운영체제를 설치 할 것인지 선택 후 Next
- 가상 머신 이름과 경로 선택 후 Next
- 가상 머신 하드 디스크 사이즈를 40GB로 설정 후 단일 파일로 저장하는 옵션 선택
- 가상 머신의 하드웨어 사용자 정의 클릭 후
- 다운로드 받은 우분투 이미지 선택
- 가상머신의 네트워크 어댑터 방식을 NAT(Network Address Translation)로 설정 후 close 및 Finish 클릭하여 가상 머신 생성
- IP 패킷에 있는 출발지 및 목적지의 IP 주소와 TCP/UDP 포트 숫자 등을 바꿔 재기록하면서 네트워크 트래픽을 주고 받게하는 기술
- 생성된 master 가상머신 실행
- ubuntu lilux 설치
- 첫 설치 화면에서 next 버튼이 보이지 않을시 조치
- 상단 install 제목 우측 끝 ⓧ 버튼 클릭
- 바탕화면에서 우클릭 후 Display Settings 접근
- 화면 해상도 조정(1280 x 768 추천)
- 해상도 조정후 바탕화면에 있는 install Ubuntu 20.04.6 LTS 클릭, 설치 진행
- 우분투 버전 업그레이드 X
- 소프트웨어 업데이트 필수 아님
도커&쿠버네티스 운영을 위한 공통 템플릿 제작
- 호스트 <-> 게스트 복사 붙여 넣기 기능 활성
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
- 동적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
- 패키지 관리자가 https를 통해 데이터와 패키지에 접근할 수 있도록 도구 다운로드
- sudo apt install apt-transport-https curl
- apt-transport-https: APT 패키지 관리자가 HTTPS를 통해 패키지를 다운로드할 수 있도록 지원하는 패키지
- curl: 명령줄(shell)에서 url을 통해 HTTP 요청을 보낼 수 있는 도구
- 컨테이너 런타임인 도커 설치
- sudo apt install docker.io
- 다운 중 “계속 하시겠습니까?” 메시지가 나타나면 ‘y’를 입력
- 도커 다운로드 후 sudo systemctl start docker 명령어로 도커 실행
- 재부팅 후에도 서비스가 자동으로 시작되도록 명령어 sudo systemctl enable docker
- 도커 서비스 상태 확인
- sudo systemctl status docker
- active (running) 상태이면 도커가 정상적인 상태
- 우분투 사용자를 도커 그룹에 추가하여 권한 문제로 일어날 수 있는 제약 해결
- 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로 설정되있으면 정상
- sudo nano /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
- sudo mkdir -p /etc/systemd/system/docker.service.d
- sudo systemctl daemon-reload
- sudo systemctl restart docker
- sudo docker info | grep -i cgroup
※※※※※ 쿠버네트스 내용 진행하지 마세요. ※※※※※※
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt install kubeadm kubelet kubectl kubernetes-cni다운로드 중 “계속 하시겠습니까?” 메시지가 보이면 ‘y’를 입력후 엔터마스터 노드, 워커 노드 공통 템플릿 완성 가상머신 전원 끄기
- 세팅된 가상머신 설치 경로에서 필요한 노드 수 만큼 폴더 복사
- 복사한 가상머신의 설정 파일을 새로운 가상머신을 생성
- 설정 파일을 기반으로 만들어진 가상머신 이름을 각각 변경하고 실행
- 실행시 옵션 원본 가상 머신의 원본과 같은 상태로 시작할 수 있게 I Copied It 옵션
- 각 가상머신 고정 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 서버 주소)
- 각 가상머신 호스트명 변경
댓글목록0