DevOps/K8S

[Kubernetes] 우분투 환경에서 클러스터 구성하기(1) - 컨테이너D 설치하기

IT록흐 2023. 9. 22. 12:08
반응형

 

 

[Kubernetes] Google Cloud에서 VM인스턴스 만들기

[Kubernetes] GKE 클러스터에서 톰캣 컨테이너 배포 및 외부접속하기 [Kubernetes] 클러스터 구성하기(1) - GKE 클러스터 구글에서 제공하는 쿠버네티스 엔진(Google Kubernetes Engine)으로 단순한 클러스터를

lordofkangs.tistory.com

 

지난 포스팅에서 간단하게 Google Cloud에서 제공하는 VM인스턴스로 마스터 노드 1개와 워커 노드 2개를 만들어 보았다. 아직 우분투 환경에는 쿠버네티스 클러스터로 동작하기 위한 어떤 시스템도 구축되어 있지 않다.  이번 포스팅은 쿠버네티스 클러스터 구성의 시작인 컨테이너d를 구성해보겠다. 마스터 노드와 워크 노드 모두 동일하게 구성되어야 한다. 

 

1) swap 방지

 

운영체제는 기본적으로 RAM에서 HDD로 데이터를 옮기는 swap을 수행한다. RAM 메모리를 효율적으로 사용하기 위해 정해진 규칙에 따라 당장 필요없는 데이터를 HDD로 옮겨 공간을 확보하는 것이다.  

 

쿠버네티스에서는 swap을 비활성화해야 한다. 

 

마스터 노드는 워커노드를 관리해야 한다. 그런데 워커노드의 데이터가 HDD로 옮겨진다면 메모리에는 데이터가 없으니 관리가 제대로 이루어지지 않는다. 마스터 노드의 통제 아래 워커 노드를 두려면 swap을 비활성화해야 한다. 

 

sudo swapoff -a # SWAP 비활성화 ( 재부팅하면 swap 재활성화 )
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # swap 설정 주석처리

 

sudo swapoff -a  는 현재 시스템의 swap 기능을 끄는 것이다. 지금 당장은 swap이 비활성화되지만 재부팅되면 다시 swap 기능이 활성화 된다. 그 이유는 시스템이 재부팅되면 /etc/fstab에 설정된 swap 설정을 읽기 때문이다. 그러므로 sed -i 명령어로 swap이 들어간 문장의 첫부분부터 끝부분까지 주석처리를 한다. 이렇게 하면 재부팅을 해도 시스템이 swap 설정을 읽지 못하여 swap이 활성화되지 못한다. 

 

 

2) 컨테이너D 설치하기 

 

 

- 유틸리티 환경 구성하기 

 

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

 

패키지를 최신버전으로 업데이트하고 필요한 유틸리티 툴을 설치한다. 

 

ca-certificates : CA 인증서 설치 패키지

curl : 웹리소스를 가져오는 패키지

gnupg : 디지털 암호화 및 디지털 서명 패키지

lsb-release : Linux Standard Base(LSB) 정보를 제공하는 패키지 

 

 

- 도커 공식 사이트에서 공개키 가져오기

 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 

도커 리포지토리에서 컨테이너d가 포함된 패키지를 로컬시스템으로 가져오려면 도커 리포지토리에 접근할 수 있는 공개키가 필요하다. curl 명령으로 웹리소스에 접근하여 공개키를 가져온다.  curl 명령어로 가져온 공개키를 파이프라인 오른쪽으로 넘긴다. 넘겨받은 공개키를 gpg 명령의 --dearmor 옵션으로 바이너리 파일로 변환한 후, -o 옵션으로 /usr/share/keyrings/docker-archive-keyring.gpg 파일에 저장한다. 

 

 

- 도커 패키지 설치 경로 sources.list.d에 저장하기

 

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

sudo apt update

 

우분투 환경 정보와 공개키를 담음 도커 설치 패키지 정보를 echo로 출력하여 파이프라인 오른쪽으로 넘긴다. 넘겨받은 정보는 tee 명령으로 /etc/apt/sources.list.d/docker.list에 저장된다. sources.list.d에 패키지 설치 정보를 위치시키면 apt 명령으로 update 할 때 스캔되어 로컬 시스템에 패키지 설치가 진행된다. 

 

sudo apt update를 진행한다. 

sudo apt list | grep containerd.io로 컨테이너D 패키지가 설치되었는지 확인한다. 

 

 

 

- 컨테이너d 설치하기

 

sudo apt install -y containerd.io

 

 

설치가 되면 /etc/containderd 경로에 config.toml 파일이 생성된다. 

 

 

- config.toml에 gRPC 플러그인 설정하기

cat <<EOF | sudo tee -a /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
EOF

#disabled_plugins 설정 주석처리
sudo sed -i 's/^disabled_plugins \=/\#disabled_plugins \=/g' /etc/containerd/config.toml

 

gRPC는 쿠버네티스에서 자주 사용되는 원격 프로시저 호출 인터페이스인 것 같다.  

 

 "쿠버네티스는 기본적으로 gRPC를 통해 워크로드에 자체적으로(natively) 연결 가능하며, 상태를 쿼리할 수 있다."  ( 출처 참고 )

 

 

- 컨테이너D 재기동하기 

sudo systemctl restart containerd

 

컨테이너D가 변경된 설정을 볼 수 있도록 재기동해준다.

 

 

- 소켓이 있는지 확인하기

ls /var/run/containerd/containerd.sock

 

다른 시스템에서 컨테이너D 데몬에 요청을 보내려면 containderd의 소켓으로 전달해야 한다. 그러므로 containerd의 소켓이 생성되었는지 확인한다.  

 

여기까지 컨테이너D 구성이 완료되었다. 다음 포스팅에서는 쿠버네티스 관련 환경을 구성해보겠다. 

 

 

 

 


 

 

참고자료

 

How to Install Containerd on Ubuntu 22.04 / Ubuntu 20.04 | ITzGeek

containerd is an industry-standard container runtime that manages the complete container lifecycle of its host system. It handles image

www.itzgeek.com

 

데브옵스(DevOps)를 위한 쿠버네티스 마스터 - 인프런 | 강의

컨테이너 기반 오픈 소스 가상화 프로젝트인 "쿠버네티스"를 이용한 컨테이너 환경의 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 활용하는 방법을 입문부터 활용까지 다룹니다., [

www.inflearn.com

 

반응형