10. VM에 쿠버네티스 설치

데일리·2024년 10월 7일
0
post-thumbnail

쿠버네티스를 가지고 다양한 실습을 해보기 위해 VM하나를 만들고 해당 VM에 쿠버네티스를 설치해보기로 했다.

1. 우선 Docker를 설치해야 한다.

사전 준비

아래 작업들을 root계정으로 진행해야 하기 때문에 root 계정으로 로그인한다

su -

그 다음 vm에 설치되어있는 우분투 패키지를 업데이트를 해줘야 한다.

apt update -y && apt upgrade -y

마지막으로 SWAP 메모리를 해제해줘야 한다.

sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
swapoff -a

이유는 쿠버네티스는 리소스 관리를 위해 리소스 요청과 제한을 설정이 된다. 이때 메모리 사용량이 swap을 포함하지 않고 물리적인 RAM만을 기준으로 계산이 되고 이때 Swap 메모리가 활성화된 경우, 시스템은 메모리 부족 시 디스크에 데이터를 스왑 아웃하게 되어 응답 속도가 느려질 수 있습니다. 이는 Kubernetes가 리소스를 조정할 때 예기치 않은 동작을 초래할 수 있다고 한다.

도커 설치

쿠버네티스는 컨테이너를 관리해주는 서비스이기 때문에 도커 컨테이너를 설치해줄 건데 우리는 container.d, cri-o 등이 있지만 .. container.d를 설치할 것이다.

sudo apt-get update

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

위 패키지들은 https를 통해 도커 저장소에 접근해야해서 그에 필요한 패키지들이다.

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

그 다음으로 위 코드로 도커 공식 GPG key를 등록한다.

그 후 도커 Repository를 설정해야한다.

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 > /dev/null

마지막으로 도커 설치

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

도커 설치가 완료되었으면 도커가 사용하는 드라이브를 쿠버네티스가 권장하는 systemd로 설정해야한다.

sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

설정을 완료했으면 도커 재시작 및 부팅시 시작 설정해준다.

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

CRI 비활성화

도커는 실질적으로 container.d를 런타임으로 사용한는데 기본적으로 CRI가 비활성화 되어있어서 이를 k8s에서 사용할 수 있게 활성화 해줄 수 있게 처리가 필요하다.

 vi /etc/containerd/config.toml

위 명령어를 입력해 해당 파일을 수정모드로 열고 빨간 블럭 부분을 주석 처리하면된다.

그 후 마지막으로 containerd를 재시작

systemctl restart containerd

방화벽 및 네트워크 환경설정

아래 작업은 각 노드간의 통신을 위해 방화벽 설정을 진행하는 것이다.

modprobe overlay
modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

2. 쿠버네티스 설치

쿠버네티스 명령어

kubeadm: 클러스터를 부트스트랩하는 명령이다.
kubelet: 클러스터의 모든 머신에서 실행되는 파드와 컨테이너 시작과 같은 작업을 수행하는 컴포넌트이다.
kubectl: 클러스터와 통신하기 위한 커맨드 라인 유틸리티이다.

우선 패키지 업디이트 및 필요한 패키지를 다운로드 한다.

sudo apt-get install -y apt-transport-https ca-certificates curl gpg

그리고 구글 키를 다운받을 폴더를 생성해주고

sudo mkdir -p -m 755 /etc/apt/keyrings

그 다음으로 구글 공식 키를 다운받아 준다.

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

구글 respository를 추가해준다.

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

처음에는 위 respository를 추가할 때 위 명령어 말고 kubernetes-xenial, kubernetes-focal, kubernetes-jammy를 사용해서 다운받는 명령어를 입력했다가 apt get-update 명령어를 치자 404 not found에러가 발생하는 것을 볼 수 있었다.
확인해보니 쿠버네티스 공식 레포지토리 경로가 변경되어서 그렇다고 하니 잘못된 경로를 다운받은 사람이 있다면 아래 명령어로 삭제 후 다시 다운 받으면 될것이다!

sudo rm /etc/apt/sources.list.d/kubernetes.list

마지막으로 kubelet, kubeadm, kubectl 설치

sudo apt-get update
apt-get install -y kubelet kubeadm kubectl

설치가 완료되면 아래의 명령어를 쳐서 설치가 잘되었는지 버전을 확인해보면 된다.

kubectl version --client
kubelet --version
kubeadm version

설치는 이렇게 마무리 되었고 다음에는 해당 쿠버네티스로 컨테이너를 어떻게 관리하고 배포할 수 있는지 시도해보는 그런 게시글을 올려보도록 하겠습니다.

출처

https://aoc55.tistory.com/53
https://www.inflearn.com/community/questions/1219874/the-repository-x27-https-apt-kubernetes-io-kubernetes-xenial-release-x27-d?srsltid=AfmBOopnRC1_vV4gd4RI9Hxcn3TNxT2mjmn7H85Fc58YO-x1grpIIwex

profile
하루에 한편 씩 읽기 좋은 테크 로그

0개의 댓글