본문 바로가기
Kubernetes

kubeadm 이용한 Ubuntu 에서 Kubernetes 설치하기

by Kani 2023. 2. 19.
반응형

공식 문서를 기준 kubeadm 설치보자 (필자의 경우.. 1 Master Node  + 3 Work Node로 구성할 생각)

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

 

kubeadm 설치하기

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

kubernetes.io

 

설치전 자신의 환경이 충족하는지 먼저 확인하자. 

(최소사양만 확인해도 대부분 무난하다.)

  • 2 GB 이상의 메모리
  • 2 개이상의 CPU 

 

 

컨테이너 런타임(Container Runtime) 설치 

containerd를 사용해 설치를 진할 예정이다.  공식문서의 설치과정을 따라가도록한다.

 

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

 

Container Runtimes

Note: Dockershim has been removed from the Kubernetes project as of release 1.24. Read the Dockershim Removal FAQ for further details. You need to install a container runtime into each node in the cluster so that Pods can run there. This page outlines what

kubernetes.io

 

필수 요소들 설치 및 구성을 먼저하고

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://github.com/containerd/containerd/blob/main/docs/getting-started.md

 

GitHub - containerd/containerd: An open and reliable container runtime

An open and reliable container runtime. Contribute to containerd/containerd development by creating an account on GitHub.

github.com

 

공식적인 설치 옵션언 3가지 

1. Offial binaries 받아 수동설치

2. Docker 를 이용한 설치 

3. 소스코드를 이용한 설치 

 

2번 방법으로 가자.. 

The containerd.io packages in DEB and RPM formats are distributed by Docker (not by the containerd project). See the Docker documentation for how to set up apt-get or dnf to install containerd.io packages:

DEB 및 RPM 형식의 containerd.io 패키지는 컨테이너드 프로젝트가 아닌 Docker에서 배포한다. containerd.io 패키지를 설치하기 위해 apt-get 또는 dnf를 설정하는 방법은 Docker 설명서를 참조하세요

 

링크된 곳은 Docker 설치 Doucment

https://docs.docker.com/engine/install/debian/

 

Install Docker Engine on Debian

 

docs.docker.com

 

 

설치 명령어를 차례로 입력

 

필요한 패키지를 먼저 설치하고

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

 

Docker GPG Key도 입력하고

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Docker apt repo도 추가하고..

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

한번 더 업데이트 후 설치

 

아마 404 에러가 뜨는 분들도 있을 것인데

https://download.docker.com/linux/ubuntu대신 https://download.docker.com/linux/debian 이 되도록 수정하자.

sudo sed -i 's/debian/ubuntu/g' /etc/apt/sources.list.d/docker.list
sudo apt update

 

설치를 계속 진행.

 

sudo apt-get update && \
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

기본설정을 적용

https://github.com/containerd/containerd/blob/main/docs/getting-started.md#customizing-containerd

 

GitHub - containerd/containerd: An open and reliable container runtime

An open and reliable container runtime. Contribute to containerd/containerd development by creating an account on GitHub.

github.com

containerd config default > /etc/containerd/config.toml

라고 나와있지만 root권한이 아니면 안되니까..

containerd config default | sudo tee /etc/containerd/config.toml

 

sytsemd cgroup 드라이버 환경 설정하자

sudo vi /etc/containerd/config.toml

 

아래 항목처럼 SystemdCgroup을 true로 바꾸면된다.

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  ...
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true

 

125번째 줄에 있네..

저장하고

 

containerd를 재시작 해주자

sudo systemctl restart containerd

 

 

kubeadmin, kubelet, kubectl 설치  

가이드문서를 그대로 따라간다.

 

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

 

kubeadm 설치하기

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

kubernetes.io

apt 색인 업이트, 필요 패키지 설치

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

공개 키 다운로드

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

레포추가

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

설치 / 패키지 버전 고정

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

귀찮으니 스샷은 한방에..

 

 

 

마스터 노드와 워커노드는 동일하게 여기까지 작업해주면된다. :) 

 

마스터 노드

calico로 CNI를 설정할 예정이라 192.168.0.0/16으로 pod-network-cidr을 사용했다.

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

 

사용하기 쉽도록 conf는 현재 계정으로 복사되도록 가이드를 따라가자.

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

일단은  한번 노드상태를 보고..

kubectl get node

 

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

 

Creating a cluster with kubeadm

Using kubeadm, you can create a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use kubeadm to set up a cluster that will pass the Kubernetes Conformance tests. kubeadm also supports other cluster lifecycle functions, su

kubernetes.io

Container Network Interface를 설치하지 않으면 어차피 동작하지 않는다. (worker node 설치 후 Calico를 설치할 예정)

 

 

 

워커 노드

워커노드 설정은, 마스터노드 설치시 워커노드가 조인하는 명령어를 출력해주는데 그대로 복사해서 사용하면된다.

sudo kubeadm join <마스터노드 IP>:6443 --token <토큰> --discovery-token-ca-cert-hash sha256:<hash값>

만약 토큰을 기억하지 못한다면

마스터노드에서 다음 명령을 실행해서 찾자..

# Token 값
sudo kubeadm token list

# Hash 값
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

 

워커노드는 반복해서 설치하면 된다.

워커노드 설치 후 일단 NotReady로 나올 것이다. CNI 설치가 아직안됐기 때문..

 

 

 

 

Calico CNI 설치

https://docs.tigera.io/calico/3.25/getting-started/kubernetes/self-managed-onprem/onpremises

 

Install Calico networking and network policy for on-premises deployments | Calico Documentation

Install Calico networking and network policy for on-premises deployments.

docs.tigera.io

공식메뉴얼대로 따라 치기만 하면된다.

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml
curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml -O
kubectl create -f custom-resources.yaml

설치하고..

 

kubectl get node

노드 상태를 확인하면..?

정상! (제대로 하고 있는지 확인을 위해서 클러스터를 초기화 해서.. age가..)

구성 끝!

반응형

'Kubernetes' 카테고리의 다른 글

[EKS] EKS IAM USER 추가  (0) 2024.01.12
Istio 설치  (0) 2023.02.20
Metal LB 설치하기  (0) 2023.02.20

댓글