-
K-PaaS 구축하기 1 - Container Platform 클러스터 및 포탈 구축개발공부/CLOUD 2023. 11. 29. 14:45

※ 기본적인 K-PaaS 설치 가이드는
K-PaaS > K-PaaS 소개 > 가이드 > 플랫폼 설치 가이드 에 전체적으로 기술되어 있으므로
본 글에서는 구축 중 나한테 발생한 에러와 그 해결에 대한 내용을 기술한 것임1. 구축 환경
Proxmox를 사용하여 클라우드와 유사한 환경을 구축하였고
가이드 권장대로 리눅스로 1개의 masterNode와 3개의 wokerNode를 생성함
참고 문의
Question 》 현재 서버 메모리 16GB /8GB 두가지 환경이 존재하며,
디스크 전체 사이즈가 아닌 swap 사이즈와 주요 경로별 권장용량을 알고 싶습니다.
Answer 》더보기Kubernetes에서는 기본적으로 Swap를 사용하지 않는 정책을 써오다가
1.22버전부터 Swap를 사용할 수 있는 내용을 Beta, Alpha 버전으로 내놓고 있습니다.
K-PaaS 컨테이너플랫폼은 아직까지 기존 정책을 그대로 수용중이며, Kubespray 로 설치 시 Swap 정책을 Off로 사용중입니다.
스펙사항은 최소 설치사양으로 CPU/Memery만 지정하며, 운영에 필요한 Storage는 별도 SC를 붙여 사용하는 형태로 가이드 하고 있습니다.
따라서 기본설치에 필요한 User Command가 설치 되는 MasterNode에만 30G 이상, WorkNode에는 10G 정도의 Volume만 있다면 기본적인 사용에 제한되는 요소가 없을 것이고, 별도로 Linux 주요 디렉토리별 용량은 따로 정의하지 않습니다.
2. Container Platform 클러스터 구축 스크립트 (전체 스크립트 아님 주의)
ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub vi .ssh/authorized_keys -> master노드의 cat ~/.ssh/id_rsa.pub 결과값 붙여넣기 git clone https://github.com/K-PaaS/cp-deployment.git -b branch_v1.4.x # git 명령어 없을 시 -> sudo apt-get -y install git 로 다운로드 vi cp-cluster-vars.sh -> master/worker 노드 각각 hostname과 ifconfig로 확인하여 정보 입력 # ifconfig 명령어 없을 시 -> sudo apt-get install net-tools 로 다운로드 <cp-cluster-vars.sh 내용예시> master hostname: master01 privateIP: 172.16.0.159 publicIP : 없을 경우 private와 동일하게 입력 workerNode cnt: 3 node1 hostname: node01 privateIP: 172.16.0.156 node2 hostname: node02 privateIP: 172.16.0.157 node3 hostname: node03 privateIP: 172.16.0.158 #nfs스토리지 설치는 k-paas사이트 내 가이드를 참고 #나의 nfs 주소 : 172.16.0.160 cd cp-deployment/standalone/single_control_plane source deploy-cp-cluster.sh -> 설치중 에러발생하여 셧다운됬을 시 반드시 source reset-cp-cluster.sh 으로 ps 종료 및 초기화 할 것(중요!!) #Kubernetes Node 및 kube system Namespace 의 Pod 를 확인하여 Kubespray 정상 설치 확인 kubectl get nodes kubectl get pods -n NAMESPACE <에러 참고> error1> ansible-playbook 부재 에러발생 -> apt install ansible-playbook 로 다운로드 error2>"msg": "Missing sudo password"} 에러발생 -> vi sudoers에 [사용자계정명] ALL=(ALL) NOPASSWD: ALL 마지막 한줄 추가 (각 workerNode에도 동일 추가) 경로는 /etc 이고 sudo chmod +w sudoers로 쓰기권한주고 sudo vi sudoers로 실행 error3>fatal: [master01]: FAILED! => {"changed": false, "msg": "Failed to update apt cache: unknown reason"} -> sudo killall apt apt-get 수행이 안되고 error4> apt: no process found apt-get: no process found 과 같은 에러가 난다면 -> sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock* 디렉터리 삭제 후 -> sudo dpkg --configure -a sudo apt update sudo apt upgrade3. Container Platform 포털 구축 스크립트 (전체 스크립트 아님 주의)
# Deployment 파일 다운로드 경로 생성 mkdir -p ~/workspace/container-platform cd ~/workspace/container-platform # Deployment 파일 다운로드 및 파일 경로 확인 wget --content-disposition https://nextcloud.k-paas.org/index.php/s/WtNQn2agk6epFHC/download ls ~/workspace/container-platform # Deployment 파일 압축 해제 tar -xvf cp-portal-deployment-v1.4.0.tar.gz cd ~/workspace/container-platform/cp-portal-deployment/script vi cp-portal-vars.sh # Example K8S_MASTER_NODE_IP="xx.xxx.xxx.xx" HOST_CLUSTER_IAAS_TYPE="AWS" 또는 "OPENSTACK" -> AWS가 아니므로 OPENSTACK 함 PROVIDER_TYPE="standalone" #컨테이너 플랫폼 포털 배포를 위한 배포 chmod +x deploy-cp-portal.sh ./deploy-cp-portal.sh ---> 설치중 에러발생하여 셧다운됬을 시 ./uninstall-cp-portal.sh 으로 ps 종료 및 초기화 함 (위에 클러스터 배포 시 당했으므로 혹시나) #컨테이너 플랫폼 포털 배포 정상 확인 kubectl get all -n harbor kubectl get all -n mariadb kubectl get all -n keycloak #컨테이너 플랫폼 포털 리소스 삭제 스크립트 cd ~/workspace/container-platform/cp-portal-deployment/script chmod +x uninstall-cp-portal.sh ./uninstall-cp-portal.sh4. 포탈 구축 중 문의와 답변
Question1 》 포탈 페이지에서 Global > Clusters > List : host-cluster의 status가 연결오류로 표시됨
Answer1 》더보기host cluster에 대한 연결오류로 표시되는 부분은 포털의 구성요소 중 하나인 cp-portal-metric-api-deployment Pod가 정상 구동되지 않아 정상적으로 status 체크를 하지 못하였기 때문
Question2 》 포탈 페이지에서 Clusters > Overview > Workloads 의 Deployments, Pods, ReplicaSets에 각각 1개의 에러가 표시되어 있었고, 상세내용은 kubectl describe pod cp-portal-metric-api-deployment -n cp-portal 로 describe 확인
- 재배포하기전 uninstall을 꼭 선행하라고 했던 이유가 됨
Answer2 》더보기cp-portal-metric-api 이미지가 Harbor 레파지토리에 정상 push 되었는지 확인이 필요
# image pull 테스트
# harbor 레파지토리에 이미지가 없는 경우 결과 (error)
$ sudo podman pull cp-portal-repository/cp-portal-metric-api:latest
Trying to pull {K8S-MASTER-NODE-IP}:30002/cp-portal-repository/cp-portal-metric-api:latest...
WARN[0000] failed, retrying in 1s ... (1/3). Error: initializing source docker://{K8S-MASTER-NODE-IP}:30002/cp-portal-repository/cp-portal-metric-api:latest: reading manifest latest in {K8S-MASTER-NODE-IP}:30002/cp-portal-repository/cp-portal-metric-api: unknown: repository cp-portal-repository/cp-portal-metric-api not foundcp-portal-metric-api 이미지가 없는 경우 아래 명령어를 통해 Harbor에 push 진행해주시길 바랍니다.
# 해당 경로 이동 및 image push 진행
$ cd $HOME/workspace/container-platform/cp-portal-deployment/script
$ source cp-portal-vars.sh
$ sudo podman load -i ../images/${IMAGE_NAME[3]}.tar.gz
$ sudo podman tag localhost:5000/container-platform/${IMAGE_NAME[3]} $REPOSITORY_URL/$REPOSITORY_PROJECT_NAME/${IMAGE_NAME[3]}
$ sudo podman push $REPOSITORY_URL/$REPOSITORY_PROJECT_NAME/${IMAGE_NAME[3]}# harbor 레파지토리에 이미지 정상 push 결과
$ sudo podman pull cp-portal-repository/cp-portal-metric-api:latest
Trying to pull {K8S-MASTER-NODE-IP}:30002/cp-portal-repository/cp-portal-metric-api:latest...
Getting image source signatures
Copying blob ac2489153537 skipped: already exists
Copying blob e8310938a515 skipped: already exists
Copying config 26175a3292 done
Writing manifest to image destination
Storing signatures
26175a3292acbf860d3f8854e605df8d5441b63026167efe7f539a3f68e992a9
아래 명령어를 통해 cp-portal-metric-api 재배포 진행 부탁드립니다.
# cp-portal-metric-api 재배포
$ sudo helm uninstall ${IMAGE_NAME[3]} -n cp-portal
$ sudo helm install -f ../values/${IMAGE_NAME[3]}.yaml ${IMAGE_NAME[3]} $REPOSITORY_PROJECT_NAME/${CHART_NAME[4]} -n ${NAMESPACE[3]}pod 재기동은 아래 명령어로 가능합니다.
$ kubectl rollout restart deployment cp-portal-metric-api-deployment -n cp-portal
***** 추가사항 *****
5. 포탈 재구축 중 추가 에러

배포 시 이렇게 뜨고 /home/ubuntu/.enc 관련 실패 라면
아래와 같이 keycloak이 안 올라갔다면


vi cp-portal-vars.sh vi cp-portal-vars.sh에 ubuntu 경로에 사용자경로로 바꿔야 함
설정을 다 바꾼 후 다 잘 뜨는지 확인하고
kubectl rollout restart deployment cp-portal-metric-api-deployment -n cp-portal
전체 스크립트 및 포탈 메뉴 기능은 최상단에서 언급한 가이드에서 확인할 수 있음
추후 파이프라인 구축 및 배포에서 namespace가 필요하니, 가이드 확인하여 포탈 회원가입 후 namespace 만들어 놓을 것을 추천
♣ memo 나의 포탈 URI => http://172.16.0.159:32703'개발공부 > CLOUD' 카테고리의 다른 글
컨테이너 플랫폼 클러스터 환경에서 RabbitMQ 구축 (0) 2023.12.26 K-PaaS 구축하기 2 - Container Platform CI/CD- 파이프라인 구축 (0) 2023.12.01