지난 포스팅에서 간단하게 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 구성이 완료되었다. 다음 포스팅에서는 쿠버네티스 관련 환경을 구성해보겠다.
참고자료
'DevOps > K8S' 카테고리의 다른 글
[Kubernetes] 우분투 환경에서 클러스터 구성하기(3) - 넷필터 브릿지 (0) | 2023.09.25 |
---|---|
[Kubernetes] 우분투 환경에서 클러스터 구성하기(2) - kubeadm, kubelet, kubectl (0) | 2023.09.22 |
[Kubernetes] Google Cloud에서 VM인스턴스 만들기 (0) | 2023.09.21 |
[Kubernetes] GKE 클러스터에서 톰캣 컨테이너 배포 및 외부접속하기 (0) | 2023.09.21 |
[Kubernetes] GKE 환경에서 클러스터 만들기 (0) | 2023.09.21 |