웹사이트 검색

CentOS 7에 Kubernetes 클러스터를 설치하는 방법


Google이 오픈소스 커뮤니티에 기부한 Kubernetes는 이제 최고의 컨테이너 관리 도구가 되었습니다. Docker 런타임뿐만 아니라 컨테이너 및 Rkt 런타임도 관리하고 조정할 수 있습니다.

일반적인 Kubernetes 클러스터에는 일반적으로 마스터 노드와 여러 작업자 노드 또는 미니언이 있습니다. 그런 다음 작업자 노드는 마스터 노드에서 관리되므로 클러스터가 중앙 지점에서 관리됩니다.

매우 가벼운 비프로덕션 워크로드에 일반적으로 권장되는 단일 노드 Kubernetes 클러스터를 배포할 수도 있다는 점도 언급하는 것이 중요합니다. 이를 위해 노드의 가상 머신에서 단일 노드 Kubernetes 클러스터를 실행하는 도구인 Minikube를 사용할 수 있습니다.

권장 읽기: CentOS 8에 Kubernetes 클러스터를 설치하는 방법

이 튜토리얼에서는 CentOS 7 Linux에 다중 노드 Kubernetes 클러스터 설치를 안내합니다. 이 튜토리얼은 명령줄 기반이므로 터미널 창에 액세스해야 합니다.

전제 조건

  1. Centos 7을 실행하는 여러 서버(마스터 노드 1개, 워커 노드 2개). 엄격한 요구 사항은 아니지만 마스터 노드에 CPU가 2개 이상 있는 것이 좋습니다.
  2. 모든 노드의 인터넷 연결. 저장소에서 Kubernetesdocker 패키지를 가져옵니다. 마찬가지로, yum 패키지 관리자가 기본적으로 설치되어 있고 패키지를 원격으로 가져올 수 있는지 확인해야 합니다.
  3. 또한 sudo 또는 루트 권한이 있는 계정에 액세스해야 합니다. 이 튜토리얼에서는 루트 계정을 사용하겠습니다.

3노드 클러스터는 다음과 같습니다.

마스터 노드에 Kubernetes 클러스터 설치

Kubernetes가 작동하려면 컨테이너화 엔진이 필요합니다. 이 설치에서는 가장 널리 사용되는 docker를 사용하겠습니다.

다음 단계는 마스터 노드에서 실행됩니다.

1단계: 호스트 이름, 방화벽 및 SELinux 준비

마스터 노드에서 호스트 이름을 설정하고 DNS 서버가 없는 경우 /etc/hosts 파일도 업데이트하세요.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

worker-node-1worker-node-2를 ping하여 ping 명령을 사용하여 업데이트된 호스트 파일이 괜찮은지 테스트할 수 있습니다.

ping 10.128.0.29
ping 10.128.0.30

그런 다음 SElinux를 비활성화하고 방화벽 규칙을 업데이트하세요.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

포트에 다음 방화벽 규칙을 설정합니다. 각 방화벽-cmd 명령이 성공을 반환하는지 확인하세요.

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd –reload
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

2단계: Kubernetes 저장소 설정

Kubernetes 저장소는 CentOS 7에 기본적으로 설치되지 않으므로 수동으로 추가해야 합니다.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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

3단계: Kubeadm 및 Docker 설치

이제 패키지 저장소가 준비되었으므로 kubeadmdocker 패키지를 설치할 수 있습니다.

yum install kubeadm docker -y 

설치가 성공적으로 완료되면 두 서비스를 모두 활성화하고 시작합니다.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

4단계: Kubernetes 마스터 초기화 및 기본 사용자 설정

이제 kubernetes master를 초기화할 준비가 되었습니다. 하지만 그 전에 "kubeadm init" 명령을 실행하려면 스왑을 비활성화해야 합니다.

swapoff -a

Kubernetes 마스터 초기화는 실행할 "kubeadm init" 명령으로 관리되는 완전히 자동화된 프로세스입니다.

kubeadm init

작업자 노드에서 실행해야 하므로 마지막 줄을 복사하여 어딘가에 저장하는 것이 좋습니다.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

: 때때로 이 명령이 전달된 인수(args)에 대해 불만을 표시할 수 있으므로 이를 방지하도록 편집하세요. 오류. 따라서 --token과 함께 나오는 '\' 문자를 삭제하면 최종 명령은 다음과 같습니다.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Kubernetes를 성공적으로 초기화한 후에는 사용자가 클러스터를 사용할 수 있도록 허용해야 합니다. 우리의 경우 루트 사용자로 이 설치를 실행하려고 하므로 계속해서 루트로 이러한 명령을 실행하겠습니다. 원하는 sudo 지원 사용자로 변경하고 sudo를 사용하여 아래를 실행할 수 있습니다.

루트를 사용하려면 다음을 실행하세요.

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

sudo 활성화된 사용자를 사용하려면 다음을 실행하세요.

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

이제 kubectl 명령이 활성화되었는지 확인하세요.

kubectl get nodes

이 시점에서 마스터 노드의 상태가 'NotReady'인 것도 확인할 수 있습니다. 이는 아직 포드 네트워크를 클러스터에 배포하지 않았기 때문입니다.

포드 네트워크는 현재 노드 네트워크 위에 배포되는 클러스터의 오버레이 네트워크입니다. 이는 포드 전체에 걸쳐 연결을 허용하도록 설계되었습니다.

5단계: 포드 네트워크 설정

네트워크 클러스터 배포는 필요에 따라 매우 유연한 프로세스이며 사용 가능한 옵션이 많습니다. 설치를 가능한 한 간단하게 유지하기 위해 구성이나 추가 코드가 필요하지 않고 포드당 하나의 IP 주소를 제공하는 Weavenet 플러그인을 사용하겠습니다. 더 많은 옵션을 보고 싶다면 여기를 확인하세요.

이러한 명령은 포드 네트워크를 설정하는 데 중요합니다.

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

이제 마스터 노드의 상태를 확인하면 '준비' 상태여야 합니다.

kubectl get nodes

다음으로 클러스터에 워커 노드를 추가합니다.

Kubernetes 클러스터에 참여하도록 작업자 노드 설정

다음 단계는 워커 노드에서 실행됩니다. Kubernetes 클러스터에 참여할 때 모든 워커 노드에서 이 단계를 실행해야 합니다.

1단계: 호스트 이름, 방화벽 및 SELinux 준비

worker-node-1worker-node-2에서 호스트 이름을 설정하고 DNS 서버가 없는 경우 마스터와 작업자도 업데이트하세요. /etc/hosts 파일의 노드.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

업데이트된 호스트 파일이 괜찮은지 테스트하려면 마스터 노드를 핑할 수 있습니다.

그런 다음 SElinux를 비활성화하고 방화벽 규칙을 업데이트하세요.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

포트에 다음 방화벽 규칙을 설정합니다. 모든 Firewall-cmd 명령이 성공을 반환하는지 확인하세요.

firewall-cmd --permanent --add-port=6783/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd  --reload
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

2단계: Kubernetes 저장소 설정

Kubernetes 저장소는 CentOS 7에 사전 설치되어 있지 않으므로 수동으로 추가해야 합니다.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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

3단계: Kubeadm 및 Docker 설치

이제 패키지 저장소가 준비되었으므로 kubeadmdocker 패키지를 설치할 수 있습니다.

yum install kubeadm docker -y 

두 서비스를 모두 시작하고 활성화합니다.

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

4단계: 작업자 노드를 Kubernetes 클러스터에 가입

이제 클러스터에 참여하려면 kubeadm init가 생성한 토큰이 필요합니다. 어딘가에 복사한 경우 node-1node-2에 복사하여 붙여넣을 수 있습니다.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

마지막 줄에서 제안한 대로 마스터 노드로 돌아가 워커 노드-1워커 노드-2가 합류했는지 확인하세요. 다음 명령을 사용하여 클러스터링합니다.

kubectl get nodes

모든 단계가 성공적으로 실행되면 마스터 노드에 준비 상태인 node-1node-2가 표시됩니다.

권장 읽기: Kubernetes 클러스터에 Nginx를 배포하는 방법

현재 우리는 Centos 7Kubernetes 클러스터 설치를 성공적으로 완료했으며 두 개의 워커 노드를 성공적으로 온보딩했습니다. 이제 포드 생성 및 서비스 배포를 시작할 수 있습니다.