본문 바로가기
Kubernetes/Kubernetes Based

RHEL Kubeadm으로 Kubernetes Single Cluster 구축

by 썩석 2025. 1. 14.
반응형

 

 

멀티클러스터로 구축하고 싶었지만 GCP 무료 Credit으로 한계가 있어 Instance 한 대로 클러스터를 구축하려고 한다.

 

 

참고 URL:

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

Ports and Protocls: https://kubernetes.io/docs/reference/networking/ports-and-protocols/

Cluster Install: https://v1-30.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

 

 

환경준비

# 환경
OS: Rocky Linux 8.10
kubeadm: 1.30
kubelet: 1.30
kubectl: 1.30

# Requirement
OS: Ubuntu or CentOS
Spec: 2GB RAM 이상, 2CPU 이상

 

Rocky Linux 8.10에서는 K8s 1.32가 지원되지 않아 1.30으로 설치

 

kubeadm 설치

# Repository 추가
$ cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

# SELinux를 Permissive 모드로 설정
$ sudo setenforce 0 

# 시스템 부팅 시 SELinux가 Permissive 모드로 시작하도록 설정
$ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# kubeadm, kubectl, kubelet 설치
$ sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

# kubelet Enable
$ sudo systemctl enable --now kubelet

 

 

참고사항

만약 공식 홈페이지에 있는 /etc/yum.repos.d/kubernetes.repo를 사용해서 

yum repo가 변경었으니 아래와 같은 에러가 발생하면 위 Repo로 변경해야한다. 

Errors during downloading metadata for repository 'kubernetes':
  - Status code: 404 for https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml (IP: 142.251.183.100)
Error: Failed to download metadata for repo 'kubernetes': Cannot download repomd.xml: 
Cannot download repodata/repomd.xml: All mirrors were tried

 

Ports 확인

Control plane과 Worker의 Port List이다.

Multi Node Cluster로 구성할 때에는 각각 역할에 맞게 포트가 열려있으면 되지만,

Single Node Cluster로 구성할 때에는 모든 Port가 열려있어야 한다.(방화벽이 닫혀있으면 열어주기)

 

 

Kubernetes 설치

# Kubernetes 설치(sudo yum으로 kubeadm을 설치했기 때문에 sudo로 설치)
$ sudo kubeadm init

# root 권한으로 실행할 경우
$ kubeadm init

 

sudo 권한으로 실행하지 않으면 아래와 같은 에러 발생

I0114 01:26:25.237996  477612 version.go:256] remote version is much newer: v1.32.0; falling back to: stable-1.30
[init] Using Kubernetes version: v1.30.8
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR IsPrivilegedUser]: user is not running as root
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

 

 

kubectl 명령어 사용하기

사용자 권한일 때

  $ mkdir -p $HOME/.kube # .kube폴더 생성, kubeconfig의 default 폴더
  $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # config 파일 복사
  $ sudo chown $(id -u):$(id -g) $HOME/.kube/config # config 파일 권한 변경

 

 

root 계정으로 실행할 때

$ export KUBECONFIG=/etc/kubernetes/admin.conf # 단, 세선 종료시 명령어 재입력

 

 

kubernetes node List 조회

$ kubectl get nodes # kubectl node List 조회

 

 

status가 NotReady로 뜨는 이유

CNI가 설치되어 있지 않아서, coredns Pod가 배포되지 않아서

 

 

참고) 사용자 권한을 사용하고, /etc/kubernetes/admin.conf 파일을 사용하면 에러 발생.

 

반응형