CentOS 7에 Kubernetes Docker 클러스터를 설치하는 방법
이 페이지에서
- 전제 조건
- 무엇을 할 것인가?\n
- 1단계 - Kubernetes 설치
- - 호스트 구성\n
- - SELinux 비활성화\n
- - br_netfilter 커널 모듈 활성화\n
- - 스왑 비활성화\n
- - Docker CE 설치
- - Kubernetes 설치
- - cgroup 드라이버 변경
Kubernetes는 Google에서 개발한 컨테이너화된 애플리케이션을 관리하기 위한 오픈 소스 플랫폼입니다. 이를 통해 클러스터 환경에서 컨테이너화된 애플리케이션을 관리, 확장 및 자동으로 배포할 수 있습니다. Kubernetes를 사용하면 여러 호스트에서 컨테이너를 오케스트레이션하고, 모든 리소스를 사용하여 컨테이너화된 애플리케이션을 즉시 확장하고, 중앙 집중식 컨테이너 관리 환경을 가질 수 있습니다.
이 튜토리얼에서는 CentOS 7에서 Kubernetes를 설치하고 구성하는 방법을 단계별로 보여드리겠습니다. k8s-master 서버 1개를 Kubernetes 호스트 마스터로 사용하고 서버 2개를 Kubernetes 노드(node01 및 node02)로 사용합니다.
전제 조건
- 3개의 CentOS 7 서버
- 10.0.15.10 k8s-마스터
- 10.0.15.21 node01
- 10.0.15.22 node02
우리는 무엇을 할 것입니까?
- Kubernetes 설치
- Kubernetes 클러스터 초기화\n
- 클러스터에 node01 및 node02 추가
- 테스트 - 첫 번째 포드 만들기
1단계 - 쿠버네티스 설치
이 첫 번째 단계에서는 Kubernetes 설치를 위해 해당 3개의 서버를 준비하므로 마스터 및 노드 서버에서 모든 명령을 실행합니다.
서버의 기존 구성을 변경하고 docker-ce 및 kubernetes 자체를 포함한 일부 패키지를 설치하여 Kubernetes 설치를 위해 모든 서버를 준비합니다.
- 호스트 구성
vim 편집기를 사용하여 모든 서버에서 호스트 파일을 수정합니다.
vim /etc/hosts
아래에 호스트 목록을 붙여넣으십시오.
10.0.15.10 k8s-master
10.0.15.21 node01
10.0.15.22 node02저장 및 종료.
- SELinux 비활성화
이 자습서에서는 Docker에 대한 SELinux 구성에 대해 다루지 않으므로 비활성화합니다.
SELinux를 비활성화하려면 아래 명령을 실행하십시오.
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux- br_netfilter 커널 모듈 활성화
br_netfilter 모듈은 kubernetes 설치에 필요합니다. 브리지를 통과하는 패킷이 필터링 및 포트 전달을 위해 iptables에 의해 처리되고 클러스터 전체의 kubernetes 포드가 서로 통신할 수 있도록 이 커널 모듈을 활성화합니다.
아래 명령을 실행하여 br_netfilter 커널 모듈을 활성화하십시오.
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables- 스왑 비활성화
다음 명령을 실행하여 kubernetes 설치용 SWAP를 비활성화합니다.
swapoff -a
그런 다음 /etc/fstab 파일을 편집합니다.
vim /etc/fstab
아래와 같이 스왑 라인 UUID를 주석 처리합니다.
- 도커 CE 설치
Docker 리포지토리에서 최신 버전의 Docker-ce를 설치합니다.
docker-ce에 대한 패키지 종속성을 설치합니다.
yum install -y yum-utils device-mapper-persistent-data lvm2
docker 리포지토리를 시스템에 추가하고 yum 명령을 사용하여 docker-ce를 설치합니다.
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-cedocker-ce 설치를 기다립니다.
- 쿠버네티스 설치
다음 명령을 실행하여 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이제 아래 yum 명령을 사용하여 kubernetes 패키지 kubeadm, kubelet 및 kubectl을 설치합니다.
yum install -y kubelet kubeadm kubectl
설치가 완료되면 해당 서버를 모두 다시 시작하십시오.
sudo reboot
서버에 다시 로그인하고 docker 및 kubelet 서비스를 시작합니다.
systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet- cgroup 드라이버 변경
docker-ce와 kubernetes가 동일한 cgroup을 사용하고 있는지 확인해야 합니다.
docker info 명령을 사용하여 docker cgroup을 확인합니다.
docker info | grep -i cgroup
그리고 도커가 cgroupfs를 cgroup-driver로 사용하고 있음을 알 수 있습니다.
이제 아래 명령을 실행하여 kuberetes cgroup-driver를 cgroupfs로 변경합니다.
sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemd 시스템을 다시 로드하고 kubelet 서비스를 다시 시작합니다.
systemctl daemon-reload
systemctl restart kubelet이제 Kubernetes 클러스터를 구성할 준비가 되었습니다.
2단계 - Kubernetes 클러스터 초기화
이 단계에서는 kubernetes 마스터 클러스터 구성을 초기화합니다.
셸을 마스터 서버 k8s-master로 이동하고 아래 명령을 실행하여 kubernetes 마스터를 설정합니다.
kubeadm init --apiserver-advertise-address=10.0.15.10 --pod-network-cidr=10.244.0.0/16
메모:
--apiserver-advertise-address = Kubernetes가 API 서버를 광고해야 하는 IP 주소를 결정합니다.
--pod-network-cidr = 포드 네트워크의 IP 주소 범위를 지정합니다. 플란넬 가상 네트워크를 사용하고 있었습니다. weave-net이나 calico와 같은 다른 팟 네트워크를 사용하려면 범위 IP 주소를 변경하십시오.
Kubernetes 초기화가 완료되면 아래와 같은 결과를 얻게 됩니다.
메모:
kubeadm join ... ... ... 명령을 텍스트 편집기에 복사합니다. 이 명령은 kubernetes 클러스터에 새 노드를 등록하는 데 사용됩니다.
이제 Kubernetes를 사용하려면 결과에 따라 몇 가지 명령을 실행해야 합니다.
새 .kube 구성 디렉터리를 생성하고 구성 admin.conf를 복사합니다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config다음으로 kubectl 명령을 사용하여 kubernetes 클러스터에 flannel 네트워크를 배포합니다.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
플란넬 네트워크가 Kubernetes 클러스터에 배포되었습니다.
잠시 기다린 다음 아래 명령을 사용하여 kubernetes 노드 및 포드를 확인합니다.
kubectl get nodes
kubectl get pods --all-namespaces그리고 k8s-master 노드가 준비 상태의 마스터 클러스터로 실행 중이라는 메시지가 표시되고 네트워크 포드 구성을 위한 kube-flannel-ds를 포함하여 클러스터에 필요한 모든 포드가 표시됩니다.
모든 kube-system 포드 상태가 실행 중인지 확인합니다.
Kubernetes 클러스터 마스터 초기화 및 구성이 완료되었습니다.
3단계 - 클러스터에 node01 및 node02 추가
이 단계에서는 k8s 클러스터에 가입하기 위해 node01 및 node02를 추가합니다.
node01 서버에 연결하고 위에서 복사한 대로 kubeadm join 명령을 실행합니다.
kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e
node02 서버에 연결하고 위에서 복사한 대로 kubeadm join 명령을 실행합니다.
kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e
몇 분 정도 기다린 후 k8s-master 마스터 클러스터 서버로 돌아가서 다음 명령을 사용하여 모든 네임스페이스의 노드와 포드를 확인합니다.
kubectl get nodes
kubectl get pods --all-namespaces이제 node01이 표시되고 node02가 준비 상태의 클러스터에 추가되었습니다.
node01 및 node02가 kubernetes 클러스터에 추가되었습니다.
4단계 - 첫 번째 Pod 만들기 테스트
이 단계에서는 Nginx 포드를 kubernetes 클러스터에 배포하여 테스트를 수행합니다. 포드는 Kubernetes에서 실행되는 공유 저장소 및 네트워크가 있는 하나 이상의 컨테이너 그룹입니다. Pod에는 Docker 컨테이너와 같은 하나 이상의 컨테이너가 포함됩니다.
k8s-master 서버에 로그인하고 kubectl 명령을 사용하여 nginx라는 새 배포를 만듭니다.
kubectl create deployment nginx --image=nginx
nginx 배포 세부 정보를 보려면 다음 명령을 실행합니다.
kubectl describe deployment nginx
그러면 nginx 포드 배포 사양이 표시됩니다.
다음으로 인터넷을 통해 액세스할 수 있는 nginx 포드를 노출합니다. 그리고 이를 위해 새로운 서비스 NodePort를 생성해야 합니다.
아래 kubectl 명령을 실행합니다.
kubectl create service nodeport nginx --tcp=80:80
오류가 없는지 확인하십시오. 이제 아래의 kubectl 명령을 사용하여 nginx 서비스 노드 포트 및 IP를 확인하십시오.
kubectl get pods
kubectl get svc이제 nginx 포드가 클러스터 IP 주소 10.160.60.38 포트 80에서 실행되고 노드 기본 IP 주소 10.0.15.x는 포트 30691에서 실행됩니다.
k8s-master 서버에서 아래 curl 명령어를 실행합니다.
curl node01:30691
curl node02:30691
Nginx Pod는 이제 Kubernetes 클러스터 아래에 배포되었으며 인터넷을 통해 액세스할 수 있습니다.
이제 웹 브라우저에서 액세스하십시오.
http://10.0.15.10:30691/
그러면 Nginx 기본 페이지가 표시됩니다.
node02 서버에서 - http://10.0.15.11:30691/
CentOS 7에서 Kubernetes 클러스터 설치 및 구성이 성공적으로 완료되었습니다.
참조
- https://kubernetes.io/docs/