1. K-PaaS란?

  • 개방형 클라우드 플랫폼 표준모델
  • 클라우드 인프라 위에서 SW나 서비스를 개발·실행·운영·관리 하는 기반 SW 환경
  • K-PaaS 적합성을 인증받은 클라우드플랫폼서비스와 솔루션들을 통칭
  • Container Platform · Sidecar · Application Platform 지원 image

2. K-PaaS 클러스터 설치

K-PaaS는 공통된 기능들을 오픈소스로 개발하고, 오픈소스로 개방한다.
아래 깃헙으로 들어가서 K-PaaS 클러스터를 설치 해 보자.
https://github.com/K-PaaS/container-platform/blob/master/install-guide/standalone/cp-cluster-install-single.md


실습 환경은 NCP이다.
K-PaaS 싱글 클라우드 환경을 구축하자.

image

2.1. 인스턴스, 로드밸런서, 인터페이스 생성

노드는 고가용성 Control Plane 3개, Worker Node 3개, NFS 서버 1개로 구성된다. 총 7개의 인스턴스를 생성하자.
서버 이미지는 Ubuntu Server 22.04 LTS, 인스턴스 타입은 r2.c2m8, 블록 스토리지 50GB로 구성하자.
클러스터용 서브넷을 생성하여 할당하고, 모든 노드에 대하여 플로팅 IP를 할당하라. image

Network > Load Balancer에 들어가 로드 밸런서를 생성하라.
생성 모드는 L4로 설정한다.
리스너의 프로토콜은 TCP, 포트번호 6443으로 설정하고 멤버를 추가하라 image

인그레스 컨트롤러용 네트워크 인터페이스를 생성하고, 생성한 인터페이스를 첫 번째 마스터 노드에 붙이자.
Network > Network Interface로 들어가 네트워크 인터페이스 생성 버튼을 클릭하자. image

2.2. NFS 서버 설정

SSH 클라이언트를 사용해 NFS 서버에 접속하자. 발급받은 floating ip를 사용하라.

  1. APT 업데이트 및 패키지 설치
    sudo apt-get update
    sudo apt-get install -y nfs-common nfs-kernel-server portmap
    
  2. NFS 서버에서 사용할 디렉토리 생성 및 권한 부여 진행
    sudo mkdr -p /home/share/nfs
    sudo chmod 777 /home/share/nfs
    
  3. 공유 디렉토리 설정 진행
    sudo vi /etc/exports
    ---
    ...
    /home/share/nfs (rw,no_root_squash,async)
    /home/share/nfs (rw,no_root_squash,async)
    

    image

  4. NFS 서버 재시작 후 동작 확인
    sudo /etc/init.d/nfs-kernel-server restart
    sudo systemctl restart portmap
    
    sudo exportfs -v
    

2.3. 노드 간 공개키 공유

마스터 노드에 접속하여 ssh-keygen 명령어를 통해 암호키를 생성하고, 생성한 키 중 공개키를 모든 노드의 ~/.ssh/authrized_keys에 등록하자

cd ~/.ssh
ssh-keygen -t rsa

cat id_rsa.pub

vi ~/.ssh/authorized_keys

위 과정을 마쳤다면 첫 번째 마스터노드를 제외한 모든 노드에 대해 floating IP를 해제하라.

2.4. K-PaaS 컨테이너 플랫폼 클러스터 설치

K-PaaS 컨테이너 플랫폼 클러스터의 Deployment를 설치하자.
아래 작업은 master node 한 개에서만 진행하라.

  1. K-PaaS 컨테이너 플랫폼 Deployment 다운로드
    git clone https://github.com/K-PaaS/cp-deployment.git -b branch_v1.5.x
    
  2. 환경변수 정보 입력
      cd ~/cp-deployment/single
      vi cp-cluster-vars.sh
    

    적어야 하는 값에 맞추어 컨트롤 플래인 개수, 워커노드 개수, 호스트네임, ip를 적는다.
    etcd 서버는 stacked 구조로 구현하기 때문에 컨트롤플래인의 호스트네임, 워커노드를 작성한다.
    로드밸런서는 클러스터 내부에 위치해 있기 때문에 floating ip, private ip 모두 사용 가능하다. Metallb의 IP 범위는 주석과 같이 적되, 서브넷 주소에 유의한다. Ingress nginx private ip 주소는 위에서 추가한 network interface의 사설 ip를 작성한다.

  3. K-PaaS 컨테이너 플랫폼 클러스터 설치
      source deploy-cp-cluster.sh
    

    설치에는 약 10~20분 가량의 시간이 소요된다.
    설치 로그를 보고싶다면 ~/cp-deployment/standalone 디렉토리로 이동하여 tail -f deploy-result.log 명령어를 입력하라.

  4. 설치 확인
      kubectl get nodes
      kubectl get pods -n kube-system
    

    성공적으로 설치가 완료되었다면 아래와 같은 화면이 나온다. image