반응형
안녕하세요! 이번 블로그 포스트에서는 Rocky Linux 환경에서 Kubernetes를 설치하는 과정을 단계별로 자세히 정리해보겠습니다.
1. 컨테이너 런타임 설치하기 (Containerd)
가장 먼저 컨테이너를 실행할 런타임을 설치해야 합니다. 여기서는 containerd.io를 사용합니다.
- 필수 유틸리티 설치
sudo yum install -y yum-utils - Docker 리포지토리 추가
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - containerd.io 설치
sudo yum install containerd.io
2. 네트워크 설정: IPv4 패킷 포워딩 활성화
Kubernetes 클러스터가 제대로 통신하려면 필요한 커널 모듈을 로드하고 네트워크 설정을 변경해야 합니다.
- 커널 모듈 로드 overlay와 br_netfilter 모듈을 시스템 부팅 시 자동으로 로드하도록 설정합니다.
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter - sysctl 파라미터 설정 네트워크 브리지와 IP 포워딩 관련 파라미터를 설정합니다. 이렇게 하면 재부팅 후에도 설정이 유지됩니다.
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
3. Containerd Cgroup 드라이버 변경
Kubernetes는 기본적으로 Cgroup 드라이버로 systemd를 사용합니다. containerd의 기본값인 cgroupfs를 systemd로 변경해야 합니다.
- containerd 설정 파일 생성 초기 설치 시 비활성화된 CRI 설정을 포함한 기본 설정 파일을 생성합니다.
# containerd 기본 설정 확인 명령어 containerd config default # 기본 설정으로 config.toml 파일 생성 containerd config default | sudo tee /etc/containerd/config.toml - Cgroup 드라이버 변경 config.toml 파일을 열어 SystemdCgroup 값을 true로 변경합니다.
# 파일 내에서 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 섹션을 찾아 수정 ... SystemdCgroup = true # false를 true로 변경 ...sudo vi /etc/containerd/config.toml - containerd 재시작 및 활성화
sudo systemctl restart containerd sudo systemctl enable containerd
4. Swap 비활성화
Kubernetes는 노드의 안정성과 예측 가능한 성능을 보장하기 위해 Swap 메모리를 비활성화할 것을 강력히 권장합니다.
- 예측 가능한 성능: 스왑 사용 시 발생하는 디스크 I/O로 인한 성능 저하를 방지합니다.
- 노드 안정성: 메모리 부족 상황에서 노드가 불안정해지는 것을 막습니다.
- 정확한 리소스 관리: 컨테이너의 리소스 사용량을 정확하게 관리합니다.
- Swap 비활성화 명령어 실행
sudo swapoff -a - 재부팅 시에도 적용되도록 fstab 파일 수정 /etc/fstab 파일에서 swap 관련 라인을 주석 처리합니다.
# /etc/fstab 파일을 열어 swap 라인을 찾아 맨 앞에 #을 추가합니다. sudo vi /etc/fstab # 예시: # UUID=75705064-32a7-4839-bf61-ad50e9dd4882 none swap defaults 0 0 # 또는 아래 명령어를 사용하여 한번에 처리할 수 있습니다. sudo sed -i '/ swap / s/^/#/' /etc/fstab
5. Kubeadm, Kubelet, Kubectl 설치
이제 Kubernetes 클러스터를 구성하는 핵심 도구들을 설치합니다.
- SELinux 비활성화
SELinux를 permissive 모드로 설정하여 컨테이너가 파일 시스템에 접근할 수 있도록 합니다.sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config - Kubernetes 리포지토리 추가
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni EOF - 도구 설치 kubelet, kubeadm, kubectl을 설치하고, kubelet 서비스를 활성화합니다.
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes sudo systemctl enable --now kubelet
6. CNI (컨테이너 네트워크 인터페이스) 선택
CNI는 쿠버네티스 클러스터 내에서 Pod 간의 네트워킹을 설정하고 관리하는 중요한 역할을 합니다. 다양한 CNI 플러그인이 있으며, 대표적인 것은 다음과 같습니다.
- Calico: 고성능 네트워킹과 강력한 네트워크 정책을 지원합니다.
- Flannel: 간단한 설정과 기본적인 네트워킹 기능을 제공합니다.
- Weave: 간단한 설정과 네트워크 정책을 지원합니다.
- Cilium: 고성능 네트워킹과 eBPF 기반의 보안 기능을 제공합니다.
💡 이번 가이드에서는 Calico를 사용하여 클러스터를 구축할 예정입니다. (이유: 많은 온라인 강의 및 자료에서 사용되어 참고하기 용이함)
이제 모든 준비가 끝났습니다. 다음 단계에서는 kubeadm을 사용하여 실제로 Kubernetes 클러스터를 초기화하고 노드를 추가하는 과정을 진행하게 됩니다.
반응형
'기술, 개발 > DevOps' 카테고리의 다른 글
| Rocky Linux에서 Kubernetes 설치하기 Part 4: 서비스 배포와 온프레미스 환경의 한계 (0) | 2025.09.18 |
|---|---|
| Rocky Linux에서 Kubernetes 설치하기 Part 3: 워커 노드 추가 및 초기 설정 (1) | 2025.09.18 |
| Rocky Linux에서 Kubernetes 설치하기 Part 2: 클러스터 초기화와 대시보드 설정 (0) | 2025.09.18 |
| 컨테이너 한방 정리 (0) | 2025.09.14 |