Infra & Container/k8s

k8s > GCE를 이용해서 설치하기(2) - Containerd, k8s설치

Porits789 2024. 4. 18. 17:25

과거의 자료들로 docker를 설치하는 방법으로 처음에 진행했었는데.. docker 지원이 끝났다는 소식을 듣고 다시 삽질을 시작했습니다.

아래의 내용은 해당 node에서 설치해야하는 과정들을 설명합니다. master,worker노드 구분을 해두었습니다.

모든 과정을 수행하기전에 sudo su 명령을 통해서 관리자 권한으로 진행하는 것을 권장합니다.

설치 전 환경 설정

swap off

쿠버네티스의 kubelet이 스왑 메모리영역을 이용하는 상황을 처리하지 않아서 다음과 같이 스왑영역을 off해야한다.

swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

 

방화벽 설정

우선 모든 방화벽을 열고 진행한다.

sudo ufw disable

 

나중에 방화벽을 어떻게 구성해야하는지 찾아서 정리해두어야겠다.

IPv4를 포워딩하여 iptables가 브리지된 트래픽을 보게 하기

쿠버네티스 클러스터의 가상 네트워크 솔루션이 노드 간 통신을 위해서 리눅스 브릿지를 사용하기 때문이라고 한다.

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 필요한 sysctl 파라미터를 설정하면, 재부팅 후에도 값이 유지된다.
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 재부팅하지 않고 sysctl 파라미터 적용하기
sudo sysctl --system

https://v1-28.docs.kubernetes.io/ko/docs/setup/production-environment/container-runtimes/#containerd

 

컨테이너 런타임

참고: Dockershim은 쿠버네티스 릴리스 1.24부터 쿠버네티스 프로젝트에서 제거되었다. 더 자세한 내용은 Dockershim 제거 FAQ를 참고한다. 파드가 노드에서 실행될 수 있도록 클러스터의 각 노드에 컨

kubernetes.io

Containerd 설치 (master, worker모두)

Docker를 지원하는 Dockershim이 1.24버전부터 제거됨에 따라 컨테이너 런타임 인터페이스(CRI)를 선택해야하는 상황이 발생했다. kubernetes.io에서 쿠버네티스에서 컨테이너 런타임 사용에 대한 개요를 통해서 containerd를 선택했습니다.

가장 많이 참고한 영상입니다.

https://www.youtube.com/watch?v=Wr6nrBRqYYE

apt install -y containerd

 

설정파일 경로를 위해서 경로를 만들어야한다.

mkdir -p /etc/containerd
cd /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

 

config.toml을 조금 변경해주어야합니다.

vi config.toml

SystemdCgroup = false를 true로 변경

 

설정을 변경하면 systemctl restart containerd.service를 통해서 restart를 진행합니다.

 

k8s 설치

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

 

Installing kubeadm

This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Creating a cluster with kubeadm page. This installation guide is for Kubernetes v1.30. If

kubernetes.io

※ 리눅스 22.04 하위버전에서는 /etc/apt/keyrings 폴더를 직접 생성해야합니다.

 

k8s docs를 따라가면서 설치를 진행합니다. 단계에 따라서 코드블럭을 나누어 작성했습니다.

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

 

버전에 주의해서 설치를 진행합니다.

구글 클라우드의 공개 사이닝 키를 다운로드 한다.
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg

 

쿠버네티스 apt 리포지터리를 추가한다.
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

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

 

kubelet, kubeadm, kubectl을 설치하고 버전을 고정합니다.

apt 패키지 색인을 업데이트하고, kubelet, kubeadm, kubectl을 설치하고 해당 버전을 고정한다.
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

 

 

master node에서만 진행

마지막으로 모두 설치가 되었다면 초기화를 해줘야하는데 이 과정에서
다음에 사용할 Container Network Interface를 위해서 cidr을 잘 입력해주어야합니다.

sudo kubeadm init --pod-network-cidr 192.168.0.0/16

 

init이 완료되면 master node에서는 클러스터 사용을 위해서 다음과 같이 설정을 진행합니다.

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

worker node에서 진행

master node의 init의 결과에 마지막을 보면 kubeadmin join ...으로 token을 확인 가능합니다. 해당 부분을 복사해서 worker node에 입력해주면 정상적으로 클러스터에 추가됩니다.

 

다음 포스팅은 Calico를 이용해서 CNI를 구성하는 과정을 소개합니다.


참고 자료들

https://aoc55.tistory.com/54

 

쿠버네티스 :: GCP(VM)에 kubernetes Cluster 직접 구축하기 - 3 (23.01 수정)

목표 구글에서 제공하는 GKE를 활용하는 것이 아니라, GCP의 Compute Engine을 통해서 VM을 생성한 뒤 Master Node, Worker Node를 직접 생성한 뒤, Docker Engine 설치 및 Kubeadm을 통해 Kubernetes Cluster를 직접 구현

aoc55.tistory.com

https://velog.io/@appti/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EB%AC%B4%EA%B2%8C%EA%B0%90-%EC%9E%88%EA%B2%8C-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

쿠버네티스 무게감 있게 설치하기

쿠버네티스 무게감 있게 설치하기

velog.io

https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/

 

컨테이너 런타임

참고: Dockershim은 쿠버네티스 릴리스 1.24부터 쿠버네티스 프로젝트에서 제거되었다. 더 자세한 내용은 Dockershim 제거 FAQ를 참고한다. 파드가 노드에서 실행될 수 있도록 클러스터의 각 노드에 컨

kubernetes.io