본문 바로가기
프로그래밍/리눅스

프로그래밍 「 리눅스 편」Red Hat Enterprise Linux에서 강력한 쿠버네티스 클러스터를 설정하는 기술 마스터하기: 단계별 가이드

by grapedoukan 2023. 6. 11.
728x90

소개:
RHEL(Red Hat Enterprise Linux)에서 Kubernetes 클러스터를 설정하는 것은 특히 RHEL의 x86–64에 대한 공식 Docker 지원이 제한적인 경우 어려울 수 있습니다. 그러나 올바른 접근 방식과 몇 가지 추가 단계를 통해 Docker를 컨테이너 런타임으로 사용하여 7노드 Kubernetes 클러스터를 성공적으로 구성할 수 있습니다. 이 포괄적인 가이드에서는 각 단계를 자세히 안내하고 관련된 명령을 설명하고 귀중한 통찰력을 제공합니다. RHEL 6.<> 설치에서 Kubernetes의 강력한 기능을 활용해 보겠습니다.

섹션 A: 모든 VM 구성

  1. 업데이트 및 다시 시작:
    VM이 최신 상태인지 확인하려면 다음 명령을 실행합니다.
sudo yum -y update && sudo systemctl reboot

2. 호스트 파일 편집:
다음 명령을 사용하여 호스트 파일을 엽니다.

sudo vi /etc/hosts

호스트 이름을 사용하여 노드 간 통신을 활성화하려면 다음 항목을 추가합니다[환경에 맞게 IP 변경]:

192.168.8.11   k8s-node-01
192.168.8.12   k8s-node-02
192.168.8.13   k8s-node-03

3. 다음 명령을 실행하여 SELinux 모드를 허용:
SELinux 비활성화로 설정합니다.

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

4. 파일을 업데이트하여 스왑을 비활성화합니다./etc/fstab

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a

섹션 B: 모든 VM에 Docker 설치

  1. CentOS 관련 전제 조건 설치:
    RHEL의 x86–64는 Docker에서 공식적으로 지원하지 않으므로 필요한 CentOS 관련 전제 조건을 설치해야 합니다. 다음 명령을 실행합니다.
sudo yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
sudo yum install -y https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/f/fuse3-libs-3.6.1-2.el7.x86_64.rpm
sudo yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm
sudo yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/slirp4netns-0.4.3-4.el7_8.x86_64.rpm

2. Yum-utils를 설치하여 Docker 리포지토리를 추가합니다.

sudo yum install -y yum-utils

3. 다음 명령을 사용하여 CentOS용 Docker 리포지토리를 추가합니다.

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4. CentOS에 대한 공식 Docker 문서를 기반으로 Docker 및 해당 종속성을 설치합니다.

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

5. Docker를 활성화하고 시작합니다.

sudo systemctl enable docker
sudo systemctl start docker

6. "docker" 그룹을 추가합니다.

sudo usermod -aG docker $USER

7. 현재 사용자를 "docker" 그룹에 추가합니다.

sudo usermod -aG docker $USER

8. "docker" 그룹을 새로 고칩니다.

newgrp docker

9. Docker 설치를 확인합니다.

docker run hello-world

섹션 C: 쿠버네티스 설치

  1. "kubernetes.repo" 파일을 생성하여 Kubernetes 리포지토리를 추가합니다.
sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

2. Yum 캐시 정리 및 업데이트:

sudo yum clean all && sudo yum -y makecache

3. 다음 명령을 실행하여 kubelet, kubeadm 및 kubectl을 포함한 Kubernetes 패키지를 설치합니다.

sudo yum -y install epel-release vim git curl wget kubelet kubeadm kubectl --disableexcludes=kubernetes

4. 부팅 시 kubelet 서비스를 활성화하고 시작합니다.

sudo systemctl enable kubelet
sudo systemctl start kubelet

5. "containerd" 구성을 편집하여 "cri" 플러그인을 활성화합니다.

sudo vi /etc/containerd/config.toml

"cri" 플러그인을 활성화하고 플러그인 구성을 추가합니다.

disabled_plugins = []
enabled_plugins = ["cri"]

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runsc]
runtime_type = "io.containerd.runsc.v1"

"containerd" 서비스를 다시 시작하여 변경 내용을 적용합니다.

sudo systemctl restart containerd

6. "net.bridge.bridge-nf-call-iptables" 커널 매개 변수를 활성화합니다.

sudo sysctl -w net.bridge.bridge-nf-call-iptables=1

섹션 D: 마스터 노드(컨트롤 플레인) 특정 구성

  1. 지정된 Pod 네트워크 CIDR을 사용하여 Kubernetes 클러스터를 초기화합니다.
sudo kubeadm init --pod-network-cidr=192.168.0.0/16

2. 초기 단계를 수행합니다.

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

3. 클러스터 정보를 확인합니다.

kubectl cluster-info

4. Calico 네트워크 공급자를 설치합니다.

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

5. 옥양목이 준비될 때까지 기다립니다.

watch kubectl get pods -n calico-system

6. 클러스터에 추가되는 다른 노드를 확인합니다.

watch kubectl get nodes -o wide

섹션 E: 작업자 노드 설정

  1. 클러스터에 조인 [ <control-plane-host>, <control-plane-port>, <token> 및 <discovery-token-ca-cert-hash>를 컨트롤 플레인 초기화 중에 표시되는 실제 값으로 바꿉니다.]
sudo kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash <discovery-token-ca-cert-hash>

섹션 F: 마스터 노드의 설정 확인

  1. 테스트 응용 프로그램을 배포하여 설치를 확인합니다.
kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1

2. 애플리케이션을 서비스로 노출:

kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080

3. 노출된 서비스 테스트: [ 설정과 일치하도록 IP 및 PORT를 교체합니다.]

curl http://192.168.8.11:32580

4. 노드 전체에서 배포된 Pod를 확인합니다.

kubectl get pods -o wide

결론:
축하합니다! RHEL(Red Hat Enterprise Linux)에서 강력한 Kubernetes 클러스터를 성공적으로 설정했습니다. 이 포괄적인 단계별 가이드에서는 3노드 Kubernetes 클러스터를 만드는 데 필요한 각 명령과 구성을 안내했습니다. 이러한 지침에 따라 RHEL의 컨테이너화된 애플리케이션에 Kubernetes의 잠재력을 최대한 활용할 수 있습니다. 워크로드 배포, 애플리케이션 확장, Kubernetes 도구 및 기능의 방대한 에코시스템 탐색을 시작하세요.

Docker는 애플리케이션과 해당 종속성을 가볍고 이식 가능한 컨테이너로 패키징할 수 있는 널리 사용되는 컨테이너화 플랫폼입니다. 이러한 컨테이너는 다양한 환경에서 일관성과 재현성을 제공하여 애플리케이션 배포 및 확장성을 더 쉽게 만듭니다. Docker를 사용하면 애플리케이션을 격리하고, 리소스 할당을 제어하고, 배포 프로세스를 간소화할 수 있습니다.

반면 Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 강력한 컨테이너 오케스트레이션 플랫폼입니다. 프로덕션 환경에서 컨테이너를 실행할 수 있는 매우 유연하고 복원력 있는 인프라를 제공합니다. Kubernetes는 로드 밸런싱, 자동 확장 및 자가 치유와 같은 작업을 처리하여 애플리케이션이 원활하고 효율적으로 실행되도록 합니다.

Docker와 Kubernetes를 결합하면 컨테이너화된 애플리케이션을 실행하기 위한 확장성과 관리가 용이한 환경을 구현할 수 있습니다. Docker는 애플리케이션을 패키징하고 배포하기 위한 기반을 제공하는 반면, Kubernetes는 노드 클러스터에서 컨테이너화된 워크로드를 관리합니다. 이를 함께 사용하면 마이크로 서비스 아키텍처를 구축하고, 필요에 따라 애플리케이션을 확장하고, 애플리케이션 수명 주기의 여러 측면을 자동화할 수 있습니다.

3노드 Kubernetes 클러스터가 가동되고 실행되면 이제 컨테이너 오케스트레이션의 방대한 기능을 탐색할 준비가 되었습니다. 복잡한 애플리케이션을 배포하고, 리소스 할당을 관리하고, 워크로드를 손쉽게 확장할 수 있습니다. 또한 Kubernetes는 모니터링 솔루션, 로깅 프레임워크 및 서비스 메시와 같은 기능을 더욱 향상시키는 풍부한 도구 및 확장 에코시스템을 제공합니다.

따라서 Docker 및 Kubernetes의 세계로 뛰어들어 컨테이너화 여정을 한 단계 업그레이드하십시오! 이 클러스터를 설정하여 얻은 지식과 경험을 통해 고급 기능을 탐색하고, 다양한 애플리케이션 아키텍처를 실험하고, 환경에서 컨테이너화의 잠재력을 최대한 활용할 수 있습니다.

호기심을 유지하고, 계속 배우고, Docker 및 Kubernetes에 사용할 수 있는 광범위한 문서 및 커뮤니티 지원을 활용하는 것을 잊지 마십시오. 컨테이너화의 힘을 수용하고 애플리케이션 배포에서 확장성, 민첩성 및 효율성의 이점을 누리십시오. 행복한 컨테이너화!

참고:
추가 정보 및 고급 구성에 대해서는 공식 Red Hat 및 Kubernetes 설명서를 참조하십시오.

728x90