Rhel 9.4에 쿠버네티스 설치 (k8s install)

 

 

안녕하세요

쿠버네티스(k8s) 설치하는 방법에 대하여 블로깅 하도록 하겠습니다.

 

위와 같은 구성으로 구성해보도록 하겠습니다.

 

먼저 네 개의 노드를 준비해줍니다.

 

 

쿠버네티스 설치 과정

 

  1. Container Runtime Install (모든Node에 설치)

Kubernetes는 컨테이너 오케스트레이션 시스템 입니다.

컨테이너를 생성·시작·중지”하는 일을 직접 하지 않고
 아래와 같은 컨테이너 런타임(Container Runtime) 에게 맡겨서 실행하죠.

 

대표적인 컨테이너 런타임의 종류

  • Docker
  • containerd
  • CRI-O
  • Mirantis Container Runtime

 

위 컨테이너 런타임 중 아무거나 설치해도 되지만 그 중에 도커(Docker)를 설치하도록 하겠습니다.

 

준비한 모든 노드 (master,node1,node2,node3) 에  도커를 설치해줍니다.

 

$ sudo dnf -y install dnf-plugins-core

   dnf(RHEL 8/9의 패키지 관리자)에 추가 기능(플러그인)을 제공

 

$ sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

   Docker 공식 저장소(repo)를 시스템에 추가하는 명령어

 

$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

  Docker Install 명령어

 

..

 

참고 : https://docs.docker.com/engine/install/rhel

 

  1. Kubenetes Install (모든 노드 master,node1,node2,node3 에 설치)

  2.1. 설치 전 환경설정

             ✔ Linux 호환성 체크 : RHEL9.x , RHEL8.x
          쿠버네티스 v1.28을 기준으로, 일부 기능은 커널 5.8 이상을 요구하며, 전반적인 안정성을 위해서는 최신 RHEL 버전의 커널(보통 4.x 또는 5.x 이상)이 권장됩니다.

             ✔ OS 사양 check : 메모리 2 GB 이상 , CPU 코어 2 이상

             ✔  SWAP 비활성화
         $ swapoff -a
          $ swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

             ✔ 방화벽 끄기
         $ systemctl stop firewalld
          $ systemctl disable firewalld

             ✔ 커널 네트워크 설정
     $ cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
     net.bridge.bridge-nf-call-iptables  = 1
     net.bridge.bridge-nf-call-ip6tables = 1
     EOF

            ✔ SELinux in permissive mode
     $ sudo setenforce 0
      $ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

 

  2.2 Kubeadm, kubectl, kubelet 설치 (모든 노드 [master,node1,node2,node3] 에 설치)

① 쿠버네티스 저장소(repo)를 설정

# This overwrites any existing configuration in /etc/yum.repos.d/kubernetes.repo
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

 

② kubelet, kubeadm, kubectl 패키지를 설치

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes

 

③  kubelet 서비스를 시스템에 등록 및 부팅 시 실행등록

 

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

 

2.3 control-plane 구성 (master 노드만)

① 마스터 노드 구성

 $ kubeadm init
 마스터 노드에서 클러스터를 초기화

 

  ㄱ. 다음과 같은 장애 시

vi /etc/containerd/config.toml

의 내용중

install

– disabled_plugins = [] 로 수정하거나 해당 줄을 완전히 주석 처리 (# disabled_plugins = [“cri”])

 

  • Containerd 서비스 재시작

   $ sudo systemctl restart containerd

 

–  Node 들이 사용할 토큰을 따로 저장


 

Token의 역할?

  • 토큰은 일종의 임시 비밀번호 역할을 합니다.
  • 워커 노드가 마스터 노드의 API 서버에 연결을 시도할 때, 이 토큰을 사용하여 자신을 인증합니다.
  • 토큰은 기본적으로 24시간 동안만 유효하며, 보안상의 이유로 만료되면 새로 생성해야 합니다.

 

kubectl 명령 허가

 

mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

③ Pod Add-on 설치

$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

setup

 

④ 확인

 

2.4 worker node 구성

 ① worker node API 연결

 2.3 에서 저장했던 token 값을 각 노드에서 실행 (node1, node2, node3)

k8s

 

2.5 설치확인

$ kubectl get nodes

k8s

 

 

자유롭게 댓글을 달아주세요! 언제나 환영합니다.
기타 문의:  info@neoclova.co.kr
네오클로바 기술블로그 홈 바로가기: https://neoclova.net
네오클로바 홈페이지: http://neoclova.co.kr

 

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다