DevOps/Docker, K8s

[k8s] 쿠버네티스 사용을 위한 kubeadm, kubelet 및 kubectl 설치 방법

cob 2024. 4. 10. 23:47

 

1. kubeadm

쿠버네티스를 설치하기 위한 가장 표준적으로 방법이다.

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

 

kubeadm 설치하기

이 페이지에서는 kubeadm 툴박스 설치 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 kubeadm으로 클러스터 생성하기 페이지를 참고한다.

kubernetes.io

 

 

1.  사전 준비

아래 모든 조건을 만족해야 쿠버네티스가 세팅된다.
  • 호환되는 리눅스 머신. 쿠버네티스 프로젝트는 데비안 기반 배포판, 레드햇 기반 배포판, 그리고 패키지 매니저를 사용하지 않는 경우에 대한 일반적인 가이드를 제공한다.
  • 2 GB 이상의 램을 장착한 머신. (이 보다 작으면 사용자의 앱을 위한 공간이 거의 남지 않음)
  • 2 이상의 CPU.
  • 클러스터의 모든 머신에 걸친 전체 네트워크 연결. (공용 또는 사설 네트워크면 괜찮음)
  • 모든 노드에 대해 고유한 호스트 이름, MAC 주소 및 product_uuid 를 갖는다.
  • 컴퓨터의 특정 포트들 개방 (통신). 
  • 스왑의 비활성화. kubelet이 제대로 작동하게 하려면 반드시 스왑을 사용하지 않도록 설정한다.(기본적으로 활성화가 되어있다.)
    Kubernetes는 각 컨테이너가 독립적인 환경에서 실행되도록 보장한다. 스왑이 활성화되면 컨테이너 간 메모리 사용이 뒤섞이게 되어 격리의 이점을 상실할 수 있다.
# 스왑 비활성화 모든 노드(마스터, 워크)에 아래 명령어 실행해야 한다.
sudo swapoff -a # 일시적으로 스왑을 비활성화 하는 명령어
sudo sed -i '/swap.img/ s/^\(.*\)$/#\1/g' /etc/fstab # 스왑을 영구적으로 비활성화

 

 


2. 컨테이너 런타임 구성(컨테이너D 직접 설치)

모든 노드(마스터, 워크)에 컨테이너 런타임을 구성해 준다. 아래 구성 방법은 현재를 기준 구성 방법이기 수시로 변경되기 때문에 설치가 안된다면 아래 링크를 통해 확인 후 구성하도록 한다.

https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-containerd-on-ubuntu-22-04.html

 

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

컨테이너 런타임 구성
컨테이너를 실행하고, 관리하는 데 사용하는 소프웨어를 선택해 설정하는 것을 말한다. 컨테이너D는 도커의 컨테이너 관리를 담당하는 엔진이다.

 

2-1) 모든 노드에 해당 명령어 실행

# Using Docker Repository
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
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

# containerd 설치
sudo apt update
sudo apt install -y containerd.io
# sudo systemctl status containerd # Ctrl + C를 눌러서 나간다.

# Containerd configuration for Kubernetes
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

sudo sed -i 's/^disabled_plugins \=/\#disabled_plugins \=/g' /etc/containerd/config.toml
sudo systemctl restart containerd

# 소켓이 있는지 확인한다.
ls /var/run/containerd/containerd.sock

 

 

 

반응형

3. kubeadm, kubelet 및 kubectl 설치

아래 링크에 들어가서 OS에 맞게 데비안 or 레드햇 기반으로 설치한다. 마찬가지로 모든 노드(마스터, 워크)에 설치한다.

https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#kubeadm-kubelet-%EB%B0%8F-kubectl-%EC%84%A4%EC%B9%98

 

kubeadm 설치하기

이 페이지에서는 kubeadm 툴박스 설치 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 kubeadm으로 클러스터 생성하기 페이지를 참고한다.

kubernetes.io

  • kubeadm : 클러스터를 부트스트랩하는 명령이다. 클러스터를 초기화하고 관리하는 기능을 갖는다.
  • kubelet : 클러스터의 모든 머신에서 실행되는 파드와 컨테이너 시작과 같은 작업을 수행하는 컴포넌트이다. 데몬으로 동작하며 컨테이너를 관리한다.
  • kubectl : 클러스터와 통신하기 위한 커맨드 라인 유틸리티이다. 클라이언트 전용 프로그램이다.

 

3-1) 설치 확인

kubeadm version

 

 


4. 넷필터 브릿지 설정

쿠버네티스 네트워크 통신을 위한 설정으로 컨테이너D를 직접 설치하는 경우 세팅이 안되어있기 때문에 직접 설정한다. 모든 노드(마스터, 워크)에 다음 명령어를 실행
sudo -i # root 계정 전환 후 아래 명령어 입력

modprobe br_netfilter
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

exit # 종료

 

반응형