睿云智合의 오픈소스 Breeze 도구를 사용하여 Kubernetes v1.12.3 고가용성 클러스터 배포

Breeze 소개

Breeze 프로젝트는 선전睿云智合(Shenzhen Ruiyun Zhihe)에서 오픈소스로 공개한 Kubernetes 그래픽 배포 도구로, Kubernetes 배포 절차를 크게 단순화합니다. 이 도구의 가장 큰 장점은 오프라인 환경 전체에 대한 배포를 지원하며, Google의 리소스 패키지에 FQ(Fully Qualified) 접근이 필요하지 않다는 점입니다. 특정 인터넷 서버 접근이 제한되는 환경에 특히 적합합니다. 자세한 내용은 공식 문서를 참조하시기 바랍니다. (프로젝트 주소: https://github.com/wise2c-devops/breeze)

환경 준비

1. 시스템 환경

호스트 이름은 DNS 명명 규칙을 준수해야 합니다. 또한 Harbor는 필수 구성 요소이며, 자세한 정보는 공식 문서를 참조하십시오.

2. 작업 시작 전 준비

  • 마스터 간, 마스터와 노드 간, 그리고 Breeze와 클러스터의 모든 호스트 간에는 SSH 상호 신뢰가 필요합니다. (머신이 많은 경우, SSH 키 배포를 위해 스크립트 사용을 권장)
  • 방화벽을 열거나 또는 방화벽을 종료합니다.
  • 시간 동기화, 시간 동기화 서비스를 구성합니다.
  • 클러스터 내 호스트 이름이 해석될 수 있어야 합니다.
  • VIP가 바인딩된 네트워크 인터페이스 이름이 일치해야 합니다.

키 배포 스크립트


#!/bin/bash
. /etc/init.d/functions
for ip in `cat iplist`
do
/usr/bin/expect key_deploy.exp ~/.ssh/id_rsa.pub $ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
action "$ip" /bin/true
else
action "$ip" /bin/false
fi
done

key_deploy.sh - 인증서 존재 여부 확인


#!/usr/bin/expect
if { $argc != 2 } {
 send_user "usage: expect key_deploy.exp file host\n"
 exit
}
# 변수 정의
set file [lindex $argv 0]
set host [lindex $argv 1]
set password "securePass123"   # 특수 문자는 이스케이프 필요
 
spawn ssh-copy-id -i $file $host
expect {
"yes/no" {send "yes\r";exp_continue}
"*password" {send "$password\r"}
}
expect eof
 
exit -onexit {
 send_user "작업 완료...\n"
}

배포 시작

1. docker-compose 및 docker 설치(deploy 서버)


# 버전에 주의하여 다운로드
wget https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)
mv docker-compose-Linux-x86_64 docker-compose
chmod +x docker-compose
mv docker-compose /usr/bin/

yum install docker -y

2. breeze에 해당하는 k8s 버전의 리소스 파일 다운로드 및 배포 도구 시작(프로젝트 주소 https://github.com/wise2c-devops/breeze)


# 버전 번호에 주의
wget https://raw.githubusercontent.com/wise2c-devops/breeze/v1.12.3/docker-compose.yml
systemctl start docker
systemctl enable docker
# 배포 도구 시작, 약 1GB 정도의 파일이 다운로드됩니다
docker-compose up -d
# 88 포트가 시작되었는지 확인, 문제가 없으면 해당 포트로 웹 페이지 접속
netstat -tnlp

3. 배포 도구의 브라우저 페이지 접속(배포 서버 IP 및 88 포트) 및 배작업 시작

시작 버튼을 클릭한 후, + 아이콘을 클릭하여 클러스터 추가를 시작합니다.

클러스터 아이콘을 클릭하여 호스트 추가 인터페이스에 진입합니다.

오른쪽 상단 "호스트 추가" 버튼을 클릭합니다.

클러스터 전체의 5대 서버와 harbor 서버를 순서대로 추가합니다.

다음 단계로 이동하여 서비스 구성 요소 정의를 진행합니다.

오른쪽 상단 "구성 요소 추가" 버튼을 클릭하여 서비스 구성 요소를 추가하고, docker를 선택합니다. 모든 호스트에 설치해야 하므로 서버 선택은 필요하지 않습니다.

이미지 저장소 구성 요소를 추가합니다.

etcd 구성 요소를 계속 추가합니다. 여기서는 k8s 마스터 노드에 병합 배포할 수도 있고, 별도의 호스트를 선택하여 배포할 수도 있습니다.

k8s 구성 요소를 추가합니다. 여기서는 마스터와 워커 노드로 나뉩니다.

참고:

Kubernetes 엔트리 포인트는 HA 시나리오를 위한 것입니다. 예를 들어, 이번 테스트에서는 각 k8s 마스터 노드에 haproxy와 keepalived 구성 요소를 동시에 배포했으며, 생성된 가상 IP는 172.16.150.156:6444이고 포트는 6444입니다. 따라서 여기에는 172.16.150.156:6444:6444로 입력해야 합니다. 마스터를 하나만 설치하는 경우, 마스터의 엔트리 포인트를 입력할 수 있습니다. 예: 172.16.150.156:6444:6443

다음은 고가용성 구성 요소(haproxy+keepalived) 설정입니다:

vip for k8s master는 세 개의 k8s 마스터 서버의 고가용성 가상 부동 IP 주소를 의미합니다. 네트워크 인터페이스 이름은 실제 운영 체제의 네트워크 인터페이스 이름을 입력하며, 세 노드의 네트워크 인터페이스 이름이 일치해야 함에 주의하십시오. router id와 virtual router id는 다른 k8s 클러스터에서 다른 값을 사용하도록 하십시오.

설정이 완료된 인터페이스는 다음과 같습니다:

다음 단계를 클릭하여 배포 프로세스를 실행합니다. 다음 배포 과정에서 화면에는 로그 및 아이콘 색상의 동적 변화가 나타나며, 마지막으로 배포 인터페이스의 모든 구성 요소 색상이 녹색으로 변경되면 K8S 고가용성 클러스터 배포 작업이 완료됩니다.

검증

기타

1. 각 구성 요소 yaml 파일 경로, /etc/kubernetes/manifests/ 아래의 구성 요소는 static pod로 생성될 것임을 나타냅니다.

2. influxdb 저장 문제


[root@k8s-master-03 kubernetes]# grep volumes: -A  3  ./influxdb.yaml 
      volumes:
      - name: influxdb-storage
        emptyDir: {}
---

influxdb의 기본 저장 유형은 emptyDir이며, 이는 pod가 재구성된 후 데이터가 손실됨을 의미합니다. influxdb를 사용하려면 영구 저장을 사용하는 것이 좋습니다.

3. Chrome 브라우저에서 dashboard에 접속할 수 없는 문제

해결 방법: https://www.cnblogs.com/panwenbin-logs/p/10052554.html, 이 문서에는 관련 문제의 해결 방법이 있습니다.

태그: 쿠버네티스 브리즈 배포 고가용성 도커

6월 8일 17:21에 게시됨