베어 메탈 리눅스에서 Kubernetes 클러스터 설정
Bare Metal Linux 서버에서 Kubernetes 클러스터를 성공적으로 설정하려면 먼저 요구 사항을 충족하는 컴퓨터를 준비하고 시스템 구성을 완료 한 다음 Containerd, Kubeadm, Kubelet 및 Kubectl을 설치 한 다음 제어 평면 노드를 초기화하고 CNI 네트워크 플러그인을 설치하고 작업자 노드에 가입하고 확인을 수행해야합니다. 1. 정적 IP로 최소 2-3 Linux 서버를 준비하고 스왑을 끄고 필요한 커널 모듈 및 SYSCTL 매개 변수를 활성화하십시오. 2. 모든 노드에 컨테이너를 설치하고 SystemDCGroup = true를 구성하십시오. 3. Kubeadm, Kubelet 및 Kubectl을 설치하여 예약 된 것으로 표시하고 자동으로 업그레이드하지 마십시오. 4. 컨트롤 평면 노드에서 kubeadm init 명령을 실행하여 POD 네트워크 CIDR 및 제어 평면 IP를 지정합니다. 5. 플란넬과 같은 CNI 플러그인을 적용하여 POD 네트워크 통신을 정상화하십시오. 6. Kubeadm Join 명령을 사용하여 작업 노드에 가입하여 클러스터가 결합하십시오. 7. 선택적으로 주 노드 스테인을 제거하여 포드 일정을 허용합니다. 8. 모든 노드와 포드가 정상 상태인지 확인하기 위해 클러스터 기능을 검증하기 위해 Nginx 및 기타 테스트 응용 프로그램을 배포하십시오. 전체 프로세스는 노드 간의 시간 동기화를 보장하고 방화벽은 필요한 포트를 열고 호스트 이름을 고유하게 해결할 수 있으며, 자율적이고 제어 가능한 고성능 Kubernetes 생산 또는 학습 환경을 얻을 수 있습니다.
베어 메탈 리눅스 서버에서 Kubernetes 클러스터를 설정하면 인프라, 더 나은 성능 및 비용 효율성 (생산 워크로드 또는 Kubernetes가 후드 아래에서 어떻게 작동하는지 배우는 것을 완전히 제어 할 수 있습니다. EKS 또는 GKE와 같은 관리 된 Kubernetes 서비스 (EKS 또는 GKE)는 운영을 단순화하지만 Bare-Metal 설정은 내부를 가르쳐주고 사용자 정의를 허용합니다. 올바르게 수행하는 방법은 다음과 같습니다.

1. 베어 메탈 머신을 준비하십시오
Kubernetes를 설치하기 전에 Linux 시스템 (물리 서버)이 준비되었는지 확인하십시오.
요구 사항 :

- 2 ~ 3 기계 (1 개의 제어 평면 노드, 1 개의 작업자 노드)
- 기계 당 2 개의 CPU 코어
- 2GB RAM (4GB 권장)
- 고유 한 호스트 이름, MAC 주소 및 Product_Uuids
- 기계 간의 전체 네트워크 연결
- 스왑 비활성화 (Kubernetes 요구 사항)
-
sudo
Access 및 SSH 연결
단계 :
-
지원되는 Linux OS 설치 (Ubuntu 20.04/22.04, Centos 7/8, Rocky Linux)
안정적인 통신을 위해 정적 IP를 설정하십시오
-
업데이트 시스템 :
sudo apt update && sudo apt upgrade -y
스왑 비활성화 :
Sudo Swapoff -A
/etc/fstab
에 스왑 라인을 주석으로 영구적으로 만듭니다.커널 모듈을 활성화하고 sysctl을 구성하십시오.
Sudo ModProbe 오버레이 sudo modprobe br_netfilter 고양이 << eof | sudo tee /etc/modules-load.d/containerd.conf 씌우다 br_netfilter EOF 고양이 << eof | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf net.bridge.bridge-nf-call-Iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF Sudo sysctl -시스템
2. 컨테이너 런타임 설치 (컨테이너)
Kubernetes는 컨테이너 런타임이 필요합니다. containerd
가장 일반적인 선택입니다.
컨테이너 설치 :
sudo apt-get update && sudo apt-get install -y containerd # 컨테이너를 cgroup 드라이버로 SystemD를 사용하도록 구성하십시오 Sudo mkdir -p /etc /containerd 컨테이너 구성 기본값 | sudo tee /etc/containerd/config.toml # config.toml 편집 및 설정 : # [플러그인. "io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] # systemdcgroup = true sudo systemctl 컨테이너를 다시 시작합니다 Sudo SystemCTL 활성화 컨테이너
참고 :
SystemdCgroup = true
사용하면 SystemD를 Init System으로 사용할 때kubeadm
과의 호환성을 보장합니다.
3. Kubeadm, Kubelet 및 Kubectl을 설치하십시오
핵심 Kubernetes 도구입니다.
-
kubeadm
: 클러스터를 초기화합니다 -
kubelet
: 모든 노드에서 실행되고 포드를 시작합니다 -
kubectl
: 클러스터를 관리하려면 CLI
# Kubernetes Apt 저장소를 추가하십시오 Sudo apt-get 업데이트 sudo apt-get install -y apt-transport-https ca-certificates curl curl -fssl https://packages.cloud.google.com/apt/doc/apt-key.gpg | Sudo gpg ---dearmor -o /etc/apt/trusted.gpg.d/kubernetes.gpg echo "deb [signed-by =/etc/apt/trusted.gpg.d/kubernetes.gpg] https://apt.kubernetes.io/kubernetes-xenial main"| sudo tee /etc/apt/sources.list.d/kubernetes.list Sudo apt-get 업데이트 sudo apt -get install -y kubelet kubeadm kubectl Sudo Apt-Mark Hold Kubelet Kubeadm Kubectl
모든 노드 (제어 평면 및 작업자)에서 이것을 반복하십시오.
4. 제어 평면 노드를 초기화합니다
제어 평면 (마스터)으로 하나의 기계를 선택하십시오.
달리다:
Sudo kubeadm init--pod-network-cidr = 10.244.0.0/16-콘트롤-평면-엔드 포인트 = your_control_plane_ip : 6443
선택한 CNI 플러그인을 기반으로
--pod-network-cidr
사용하십시오. 플란넬 의 경우10.244.0.0/16
사용하십시오.
초기화가 완료된 후 :
mkdir -p $ home/.kube sudo cp -i /etc/kubernetes/admin.conf $ home/.kube/config Sudo chown $ (id -u) : $ (id -g) $ home/.kube/config
kubeadm join
명령을 얻을 수 있습니다.
5. POD 네트워크 설치 (CNI)
Kubernetes는 컨테이너 네트워크 인터페이스 (CNI) 플러그인이 필요하므로 포드가 통신 할 수 있습니다.
플란넬 설치 :
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
몇 분 동안 기다리십시오. 상태 확인 :
Kubectl은 포드를 얻습니다 -N Kube -System모든 포드는
Running
상태에 도달해야합니다.
기타 옵션 : Calico, Cilium (보다 진보 된, 더 나은 보안).
6. 작업자 노드에 가입하십시오
각 작업자 노드에서 kubeadm init
에서 얻은 kubeadm join
명령을 실행하십시오.
Sudo Kubeadm Join 192.168.1.10:6443-Token ...-Discovery-Token-Ca-Cert-Hash ...
제어 평면으로 돌아와 노드 확인 :
kubectl 노드를 얻습니다
노드가 Ready
되는 데 1 분이 걸릴 수 있습니다.
7. 선택 사항 : 단일 노드 제어 평면 활성화 (실험실)
테스트를하고 제어 비행기에서 포드를 예약하려는 경우 :
Kubectl Taint 노드-all node-role.kubernetes.io/control-plane-
생산에 권장되지 않습니다.
8. 클러스터 기능을 확인하십시오
간단한 배포로 테스트 :
kubectl 배포 nginx를 생성합니다 --Image = nginx Kubectl Expose 배포 nginx -포트 = 80 -타입 = nodeport
실행 중인지 확인하십시오.
Kubectl Get Pods, SVC
노드의 IP와 지정된 NODEPORT를 통해 NGINX에 액세스 할 수 있어야합니다.
일반적인 문제 및 팁
- 방화벽 : 6443 (API 서버), 10250 (Kubelet) 및 30000–32767 (NODEPORT 범위)과 같은 포트가 열려 있는지 확인하십시오.
- 클록 동기화 : NTP (
chrony
또는ntpd
)를 사용하여 노드에서 시간을 유지합니다. - 호스트 이름 해상도 : 각 노드에서 DNS를 사용하거나
/etc/hosts
업데이트하십시오. - CNI 실패 : CIDR을 두 번 확인하는 것은
kubeadm init
에 전달한 것을 일치시킵니다.
전제 조건을 신중하게 따르면 베어 메탈에 Kubernetes를 설정하는 것은 어렵지 않습니다. 키는 노드, 올바른 네트워킹 및 올바른 CNI를 선택하는 일관성입니다. 일단 실행되면 Helm, Ingress 컨트롤러 또는 Prometheus와 같은 모니터링 도구를 배포 할 수 있습니다.
기본적으로 단계를 따르고 로그를보고 kubectl get nodes
확인하고 get pods
. 대부분의 문제는 잘못 구성된 컨테이너, 누락 된 커널 모듈 또는 방화벽 규칙에서 비롯됩니다.
그게 다야 - 당신의 Kubernetes 클러스터는 실제 철에서 실행됩니다.
위 내용은 베어 메탈 리눅스에서 Kubernetes 클러스터 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

LinuxCanRunonOnModestHardWareWithSpecificminIumpiRements.a1ghzprocessor (x86orx86_64)는 withedual-corecperececended.r AMSHOUDDBEATLEAST512MBFORCOMMAND-LINEUSOR2GBFORDESKTOPENVIRONTMENTS.DISKSPACEREQUIRESAMINIMUMOF5–10GB, 그러나 25GBISBETTERFORAD

Centos 프로젝트에서 Centos Stream으로 초점이 전환되면서 이제 Rhel의 상류 역할을 할 수 있도록 Centos를 대체하기위한 몇 가지 Centos 대안이 제안되었습니다. 오랜 시간 동안 Centos는 소기업에 의해 널리 채택되었습니다

실수로 시스템 디스크를 삭제하지 않도록 대상 하드 디스크 장치 이름 (예 : /dev /sda)을 확인하십시오. 2. sudoddif =/dev/Zeroof =/dev/sdxbs = 1mstatus = 전체 디스크에서 0 값을 덮어 쓰기위한 진행 상황 대부분의 시나리오에 적합합니다. 3. 3 개의 랜덤 데이터 덮어 쓰기에 sudoshred-v-n3/dev/sdx를 사용하여 복원 할 수 없는지 확인하십시오. 4. 선택적으로 파괴적인 쓰기 테스트를 위해 SudobadBlocks-WSV/Dev/SDX를 실행합니다. 마지막으로 sudohexdump-c/dev/sdx | head를 사용하여 모두 제로인지 확인하고 완벽한 안전 지우기를 확인하십시오.

Deepin OS는 Linux 분포에서 중요한 진화를 나타냅니다. 분명히하겠습니다. "혁명적"과 약간 과장했을 수도 있지만 솔직히 말해서, 정말로 저에게 깊은 인상을 준 Linux 배포판을 발견 한 지 오래되었습니다.

우리는 항상 집과 사무실에서 인터넷 연결 속도를 확인해야합니다. 우리는 이것에 대해 무엇을합니까? speedtest.net과 같은 웹 사이트로 이동하여 테스트를 시작하십시오. 웹 브라우저에 JavaScript를로드 한 다음 Ping A에 따라 최상의 서버를 선택합니다.

Port Knocking은 합법적 인 사용자가 서버에서 실행중인 서비스에 액세스 할 수있게하여 포트에 대한 액세스를 제어하는 멋진 기술입니다. 올바른 연결 시퀀스가 이루어질 때 방화벽이 기꺼이 OP

Linux에는 명령 도움말을 얻는 4 가지 방법이 있습니다. 먼저 -help를 사용하여 기본 사용법을보십시오. 이는 일반적인 옵션과 명령의 매개 변수를 빠르게 이해하는 데 적합합니다. 둘째, Man을 사용하여 완전한 사람 페이지를보고 자세한 명령 설명과 예를 제공하십시오. 셋째, 정보를 사용하여 GCC 및 Make와 같은 복잡한 명령의 정보 탐색에 적합한 구조화 된 도움을 볼 수 있습니다. 넷째, Linux China, StackoverFlow 및 기타 플랫폼과 같은 네트워크 리소스 및 커뮤니티를 참조하여 중국 자료를 얻거나 특정 문제를 해결하십시오. 초보자는 help와 man에서 단계별로 마스터하는 것이 좋습니다.

Linux의 사용자가 일반적으로 사용하는 userAdd 또는 AddUser 명령을 추가하십시오. 1. userAdd를 사용하는 경우 비밀번호와 홈 디렉토리를 수동으로 설정해야합니다. -M 매개 변수를 추가하여 홈 디렉토리를 만듭니다. 2. -s, -g 및 -u와 같은 매개 변수를 통해 쉘, 그룹 및 UID를 지정할 수 있습니다. 3. AddUser는 대화식 명령으로, 초보자가 구성을 자동으로 완료하는 데 적합합니다. 4. 권한, 사용자 이름 고유성 및 홈 디렉토리 권한에주의를 기울이십시오. 5. 사용자 델은 실수로 사용자와 홈 디렉토리를 삭제하는 데 사용될 수 있습니다. 이러한 주요 포인트를 마스터하면 사용자가 효율적이고 안전하게 관리 할 수 있습니다.
