Skip to content

Latest commit

 

History

History
455 lines (325 loc) · 15.5 KB

cp-edge-install.md

File metadata and controls

455 lines (325 loc) · 15.5 KB

Index > CP Install > K-PaaS 컨테이너 플랫폼 Edge 배포 가이드


Table of Contents

  1. 문서 개요
    1.1. 목적
    1.2. 범위
    1.3. 시스템 구성도
    1.4. 참고자료

  2. K-PaaS 컨테이너 플랫폼 Edge 배포
    2.1. Prerequisite
    2.1.1. 클러스터
    2.1.2. OS
    2.1.3. 주요 소프트웨어
    2.1.4. 방화벽
    2.1.5. 쿠버네티스 서비스 External IP
    2.2. K-PaaS 컨테이너 플랫폼 클러스터 설치
    2.3. K-PaaS 컨테이너 플랫폼 Edge 배포 준비
    2.4. K-PaaS 컨테이너 플랫폼 Edge 배포
    2.5. K-PaaS 컨테이너 플랫폼 Edge 배포 확인

  3. K-PaaS 컨테이너 플랫폼 Edge 배포 삭제 (참고)

  4. Resource 생성 시 주의사항


1. 문서 개요

1.1. 목적

본 문서 (K-PaaS 컨테이너 플랫폼 클러스터 Edge 배포 가이드) 는 기획자, 개발자, 운영자 지원 환경의 개방형 PaaS 플랫폼인 K-PaaS 컨테이너 플랫폼 클러스터의 Edge 노드를 구성하는 방법을 기술하였다.


1.2. 범위

설치 범위는 K-PaaS 컨테이너 플랫폼 Edge 환경의 기반이 되는 Edge 노드 구성을 단일 클라우드 환경 기준으로 작성하였다.


1.3. 시스템 구성도

시스템 구성은 쿠버네티스 단일 클러스터 (Control Plane, Worker, Edge) 환경으로 구성되어 있다.

K-PaaS 컨테이너 플랫폼 Deployment를 통해 쿠버네티스 단일 클러스터를 구성하고 Edge 배포를 진행하여 클러스터에 Edge 노드 환경을 제공한다.

K-PaaS 컨테이너 플랫폼 Edge 노드 구성에 필요한 인스턴스 환경으로는 아래 구성을 참고한다.

환경 인스턴스 종류 인스턴스 갯수 비고
Cloud 환경 - - 기존 배포한 클러스터의 노드 사용
Edge 환경 Edge 1개 이상 ARM64 아키텍쳐 OS로 인스턴스 생성

각 배포 유형 별 시스템 구성도는 다음과 같다.

[ 단일 클라우드 클러스터, Edge 노드 구성 ]

image 001


1.4. 참고자료

https://kubeedge.io/en/docs/
https://github.com/kubeedge/kubeedge


2. K-PaaS 컨테이너 플랫폼 Edge 배포

2.1. Prerequisite

K-PaaS 컨테이너 플랫폼 Edge 배포를 위한 전제조건은 아래 기술하였다.


2.1.1. 클러스터 (필수 설치)

K-PaaS 컨테이너 플랫폼 단일 클라우드 설치를 진행한다.


2.1.2. OS (필수 확인)

K-PaaS 컨테이너 플랫폼 Edge 배포에 필요한 OS 환경 정보는 다음과 같다.

환경 노드 지원 OS 버전 아키텍쳐
Cloud 환경 Control Plane
Worker
Ubuntu 22.04 amd64
Edge 환경 Edge Ubuntu 20.04 arm64
Edge 환경 Edge Ubuntu 22.04 arm64

2.1.3. 주요 소프트웨어 (참고)

K-PaaS 컨테이너 플랫폼 Edge 배포에 필요한 주요 소프트웨어 정보는 다음과 같다.

주요 소프트웨어 버전
Kubernetes Native v1.28.6
Kubernetes Native (Edge Node) v1.24.17
CRI-O v1.28.1
CRI-O (Edge Node) v1.24.0
KubeEdge v1.14.4
EdgeMesh v1.12.0

2.1.4. 방화벽 (필수 설정)

K-PaaS 컨테이너 플랫폼 Edge 배포에 필요한 방화벽 정보는 다음과 같다.

Edge 배포에서 일부 방화벽이 추가되었다.

Control Plane 노드

프로토콜 포트 비고
TCP 111 NFS PortMapper
TCP 2049 NFS
TCP 2379-2380 etcd server client API
TCP 6443 kubernetes API Server
TCP 9443 cloudcore router port
TCP 30000-30004 cloudHub websocket port
TCP 30001 cloudHub quic port
TCP 30002 cloudHub https port
TCP 30003 cloudStream streamPort
TCP 30004 cloudStream tunnelPort
TCP 10250 Kubelet API
TCP 10251 kube-scheduler
TCP 10252 kube-controller-manager
TCP 10255 Read-Only Kubelet API
TCP 20004 edgeMesh server containerPort
TCP 20006 edgeMesh tunnel listenPort
TCP 40001 edgeMesh edgeProxy listenPort
UDP 4789 Calico networking VXLAN

Worker 노드

프로토콜 포트 비고
TCP 111 NFS PortMapper
TCP 2049 NFS
TCP 10250 Kubelet API
TCP 10255 Read-Only Kubelet API
TCP 20006 edgeMesh tunnel listenPort
TCP 30000-32767 NodePort Services
TCP 40001 edgeMesh edgeProxy listenPort
UDP 4789 Calico networking VXLAN

Edge 노드

프로토콜 포트 비고
TCP 111 NFS PortMapper
TCP 1883-1884 eventBus mqttPort
TCP 2049 NFS
TCP 10001 edgeHub quic port
TCP 10250 Kubelet API
TCP 10255 Read-Only Kubelet API
TCP 10350 Use kubectl logs
TCP 10550 edgecore list-watch port
TCP 20006 edgeMesh tunnel listenPort
TCP 30000-32767 NodePort Services
TCP 40001 edgeMesh edgeProxy listenPort

2.1.6. 쿠버네티스 서비스 External IP (필수 설정)

K-PaaS 컨테이너 플랫폼 서비스 구성을 위해서 특정 서비스에 로드밸런서 타입 설정 및 External IP 설정이 필요하다.

K-PaaS 컨테이너 플랫폼 클러스터의 로드밸런서 타입 서비스에 필요한 External IP 설정 정보는 다음과 같다.

서비스 설명 비고
CloudCore K-PaaS 컨테이너 플랫폼 Edge 배포의 CloudCore 서비스를
Ingress로 외부 노출하기 위한 서비스
각 클라우드에 1개 인터페이스 생성 필요
Public IP 할당 필요

K-PaaS 컨테이너 플랫폼 클러스터에서는 MetalLB를 통해 External IP를 할당한다.
해당 External IP로 외부 통신 및 서비스를 지원하기 위해서는 다음과 같은 설정이 필요하다.


NHN 클라우드 (예시)

"네트워크 인터페이스 생성" 버튼을 클릭

Control Plane 노드와 동일한 네트워크 VPC, 서브넷 선택 후 사설 IP를 지정하여 생성

image 008


생성한 인터페이스 선택 후 "플로팅 IP 관리" 버튼을 클릭

image 009


플로팅 IP를 생성 및 할당

image 010


Control Plane 노드 (HA Control Plane 구성 시 인터페이스 연결 추가 할 Control Plane 노드)를 선택 후 "인스턴스 중지" 버튼 클릭

image 011


네트워크 탭에서 "네트워크 인터페이스 연결 추가" 버튼 클릭

image 012


기존 네트워크 인터페이스 지정 클릭 후 인터페이스 선택

image 013


"인스턴스 시작" 버튼 클릭

image 014


KT 클라우드 (예시)

Virtual IP 메뉴에서 "Virtual IP 생성" 버튼을 클릭

Control Plane 노드와 동일한 네트워크 Zone, Tier 선택 후 생성

image 015


Virtual IP 선택 및 "연결" 버튼 클릭하여 Control Plane VM에 연결

image 016


Networking 메뉴에서 "IP 생성" 버튼 클릭하여 Control Plane 노드와 동일한 네트워크 Zone에 공인 IP 생성

image 017


"접속 설정" 버튼 클릭하여 Virtual IP 선택 후 Port Forwarding 설정

image 018 image 019


"방화벽 설정" 버튼 클릭하여 등록한 접속 설정으로 방화벽 설정

image 020


Control Plane 노드에서 $ sudo ifconfig {인터페이스명}:1 {VIP} up 명령어 실행 (HA Control Plane 구성 시 VIP 연결한 Control Plane 노드에서 실행)


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

K-PaaS 컨테이너 플랫폼 Edge 배포를 위해서는 클라우드 환경에 K-PaaS 컨테이너 플랫폼 클러스터가 배포되어있어야 하며, 이후 Edge 환경에 Edge 노드를 배포하여야 한다.


Cloud 환경에 K-PaaS 컨테이너 플랫폼 클러스터 Deployment 통해 쿠버네티스 클러스터 배포를 진행한다.

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


2.3. K-PaaS 컨테이너 플랫폼 Edge 배포 준비

K-PaaS 컨테이너 플랫폼 Edge 배포에 필요한 환경변수를 사전 정의 후 쉘 스크립트를 통해 설치를 진행한다.

Edge 노드의 환경이 라즈베리파이일 경우 다음 정보를 추가한다.
라즈베리파이 환경이 아닐 경우 아래의 과정을 생략하고 K-PaaS 컨테이너 플랫폼 Edge 배포 환경변수 정의부터 진행한다.

# vi /boot/firmware/cmdline.txt

... cgroup_enable=memory cgroup_memory=1 (맨 뒤에 추가)

라즈베리파이 Reboot을 진행한다.

# reboot

K-PaaS 컨테이너 플랫폼 Edge 배포 설치경로로 이동한다. 이후 부터는 Control Plane 노드에서만 진행을 하면 된다.

$ cd ~/cp-deployment/standalone

K-PaaS 컨테이너 플랫폼 Edge 배포에 필요한 환경변수를 정의한다.

$ vi cp-edge-vars.sh

환경변수 설명 비고
CLOUDCORE_PRIVATE_VIP MetalLB를 통해 CloudCore Service에서 사용할 Private IP
CLOUDCORE_VIP CloudCore Service에서 사용할 인터페이스에 할당한 Public IP
CLOUDCORE1_NODE_HOSTNAME CloudCore가 설치될 노드의 호스트명 Control Plane 또는 Worker 노드 중 1개 노드 정보 입력
CLOUDCORE2_NODE_HOSTNAME CloudCore가 설치될 노드의 호스트명 Control Plane 또는 Worker 노드 중 1개 노드 정보 입력
EDGE_NODE_CNT Edge 노드의 갯수
EDGE1_NODE_HOSTNAME Edge 1번 노드의 호스트명
EDGE1_NODE_PRIVATE_IP Edge 1번 노드의 Private IP
EDGE{n}_NODE_HOSTNAME Edge n번 노드의 호스트명 EDGE_NODE_CNT 값이 2 이상일 경우 설정
EDGE_NODE_CNT 값만큼 설정
EDGE{n}_NODE_PRIVATE_IP Edge n번 노드의 Private IP EDGE_NODE_CNT 값이 2 이상일 경우 설정
EDGE_NODE_CNT 값만큼 설정

#!/bin/bash

export CLOUDCORE_PRIVATE_VIP=
export CLOUDCORE_VIP=

export CLOUDCORE1_NODE_HOSTNAME=
export CLOUDCORE2_NODE_HOSTNAME=

export EDGE_NODE_CNT=

export EDGE1_NODE_HOSTNAME=
export EDGE1_NODE_PRIVATE_IP=
...
export EDGE{n}_NODE_HOSTNAME=
export EDGE{n}_NODE_PRIVATE_IP=

2.4. K-PaaS 컨테이너 플랫폼 Edge 배포

쉘 스크립트를 통해 필요 패키지 설치, Edge 배포 환경변수 설정, Ansible playbook을 통한 K-PaaS 컨테이너 플랫폼 Edge 배포를 순차적으로 진행한다.

$ source deploy-cp-edge.sh

2.5. K-PaaS 컨테이너 플랫폼 Edge 배포 확인

노드 및 kube-system, kubeedge 네임스페이스의 Pod를 확인하여 K-PaaS 컨테이너 플랫폼 Edge 배포를 확인한다.
구성에 따라 조회되는 노드 및 Pod의 정보는 다를 수 있으며 아래는 단일 Control Plane 구성으로 배포했을때의 조회 결과이다.

$ kubectl get nodes
NAME                 STATUS   ROLES                  AGE     VERSION
cp-edge              Ready    agent,edge             5m40s   v1.24.17-kubeedge-v1.14.4
cp-master            Ready    control-plane,master   39m     v1.28.6
cp-worker-1          Ready    <none>                 38m     v1.28.6
cp-worker-2          Ready    <none>                 38m     v1.28.6
cp-worker-3          Ready    <none>                 38m     v1.28.6

$ kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-node-4hbw5                          1/1     Running   0          4m34s
calico-node-8q5tv                          1/1     Running   0          5m9s
calico-node-qlq5k                          1/1     Running   0          5m26s
calico-node-xc55c                          1/1     Running   0          4m53s
coredns-657959df74-grflz                   1/1     Running   0          37m
coredns-657959df74-wbdl6                   1/1     Running   0          37m
dns-autoscaler-b5c786945-cbcv9             1/1     Running   0          37m
kube-apiserver-cp-master                   1/1     Running   0          36m
kube-controller-manager-cp-master          1/1     Running   1          39m
kube-proxy-2ckfd                           1/1     Running   0          38m
kube-proxy-hb8p2                           1/1     Running   0          38m
kube-proxy-nnh6d                           1/1     Running   0          38m
kube-proxy-p9srm                           1/1     Running   0          6m4s
kube-scheduler-cp-master                   1/1     Running   1          39m
metrics-server-5cd75b7749-57sc2            2/2     Running   0          37m
nginx-proxy-cp-worker-1                    1/1     Running   0          38m
nginx-proxy-cp-worker-2                    1/1     Running   0          38m
nginx-proxy-cp-worker-3                    1/1     Running   0          38m
nodelocaldns-24vq4                         1/1     Running   0          6m4s
nodelocaldns-jjrjj                         1/1     Running   0          37m
nodelocaldns-kgzxb                         1/1     Running   0          37m
nodelocaldns-l9s47                         1/1     Running   0          37m

$ kubectl get pods -n kubeedge
NAME                         READY   STATUS    RESTARTS   AGE
cloudcore-758b4f4b97-4s57p   1/1     Running   0          3m49s
cloudcore-758b4f4b97-ndxbl   1/1     Running   0          3m49s
edgemesh-agent-9cmt2         1/1     Running   0          25s
edgemesh-agent-b8btq         1/1     Running   0          87s
edgemesh-agent-ntf24         1/1     Running   0          87s
edgemesh-agent-vhggk         1/1     Running   0          87s
edgemesh-agent-vzpdj         1/1     Running   0          87s

3. K-PaaS 컨테이너 플랫폼 Edge 배포 삭제 (참고)

쉘 스크립트를 통해 K-PaaS 컨테이너 플랫폼 Edge 배포 삭제를 진행한다.

$ source reset-cp-edge.sh

4. Resource 생성 시 주의사항

사용자가 직접 Resource를 생성 시 다음과 같은 prefix를 사용하지 않도록 주의한다.

Resource 명 생성 시 제외해야 할 prefix
전체 Resource kube*
Namespace all
kubernetes-dashboard
cp-portal-temp-namespace
Role cp-init-role
cp-admin-role
ResourceQuota cp-low-resourcequota
cp-medium-resourcequota
cp-high-resourcequota
LimitRanges cp-low-limitrange
cp-medium-limitrange
cp-high-limitrange
Pod nodes
resources

Index > CP Install > K-PaaS 컨테이너 플랫폼 Edge 배포 가이드