시작 설정 및 정의
마이크로스택(MicroStack)에 대한 설치 및 설정을 시작하기 전에, MicroStack에 대해 간략히 알아보겠다. MicroStack 오픈스택(OpenStack)의 경량 버전으로서, 작은 규모의 개발 및 테스트 환경에 적합 한다. MicroStack은 신속한 배포와 간편한 설정을 제공하며, 개발자와 엔지니어들이 오픈스택을 쉽게 경험하고 활용할 수 있도록 도와 준다.
오픈스택은 대규모 클라우드 컴퓨팅 환경을 구축하고 관리하기 위한 오픈 소스 플랫폼. 가상화 기술을 활용하여 컴퓨팅, 스토리지 및 네트워킹 리소스를 효율적으로 관리할 수 있게 해준다.
MicroStack과 함께 사용되는 Sunbeam은 원래의 오픈스택 기능을 간결하게 제공하면서 네이티브 쿠버네티스 경험을 제공한다. 사용자에게 직관적인 대시보드와 강력한 기능을 제공하여 클라우드 인프라의 관리 및 모니터링을 용이하게 한다.
Sunbeam은 오픈스택 서비스를 위한 Kubernetes 오퍼레이터를 작성하기 위한 라이브러리 모음.
마이크로쿠버네티스(MicroK8s)는 경량화된 Kubernetes 배포판으로서, 로컬 환경에서 쉽게 Kubernetes 클러스터를 구축하고 실행할 수 있도록 도와준다. 이는 하나의 노드로 구성된 단일 클러스터로, 가벼우면서도 빠르게 구성할 수 있다.
그 외 MicroStack의 스토리지 서비스는 분산형 객체 스토리지 시스템인 세프(Ceph)의 기반으로 가동 하므로, 동일하게 Ceph의 경량 버전인 마이크로세프(MicroCeph)를 사용한다.
아래 링크들을 통해 위에 계시 된 툴들을 더 자세하게 파악 할 수 있다.
설치전 요구 사항
- Ubuntu 서버 20.04 버전 또는 22.04 버전 (Baremetal or VM)
- VM을 사용 하는 경우 Nested Virtualization 활성화 여부 확인
- 적어도 4 CPU 코어, 16GB 메모리 그리고 50GB+ 디스크 공간
- MicroStack External Network용 비워둔 네트워크 인터페이스
- MicroCeph용 새로운 디스크
사용된 환경
- VMWare Workstation Pro 가상 머신(Ubuntu 22.04 LTS)
- Virtualization 설정 활성화
- 2개의 네트워크 인터페이스 - ens32 VM용 + ens34 MicroStack용
- 6개 CPU 코어
- 16GB 메모리
- 60GB 디스크 공간 for VM
- 20GB 비워둔 디스크 공간 for MicroCeph
- 네트워크: 192.168.1.80/24 및 2번째 NIC는 아무 설정 없음
설치 과정
설치 작업을 진행하기 전에, 현재 테스트 해본 MicroStack Sunbeam의 버전들은 아래와 같다:
- sunbeam/beta 버전
- 2023.1 버전
- 2023.1/stable/vancouver 버전
현재 이슈
모든 버전들은 리부팅 후 MicroStack 접속이 안된다. 이슈를 보니 일단 microk8s 쪽에서는 OpenStack 파드들이 잘 올라오는 것을 확인 할 수 있다.
Every 2.0s: juju status --color -m openstack ubuntu: Sun Jun 11 19:12:25 2023
Model Controller Cloud/Region Version SLA Timestamp
openstack microk8s-localhost microk8s/localhost 3.1.2 unsupported 19:12:25Z
App Version Status Scale Charm Channel Rev Address Exposed Message
certificate-authority active 1 tls-certificates-operator stable 22 10.152.183.141 no
glance waiting 1 glance-k8s yoga/beta 27 10.152.183.244 no installing agent
horizon waiting 1 horizon-k8s yoga/beta 32 10.152.183.184 no installing agent
keystone waiting 1 keystone-k8s yoga/beta 82 10.152.183.186 no installing agent
mysql 8.0.32-0ubuntu0.22.04.2 active 1 mysql-k8s 8.0/stable 75 10.152.183.67 no Primary
neutron waiting 1 neutron-k8s yoga/beta 29 10.152.183.157 no installing agent
nova waiting 1 nova-k8s yoga/beta 20 10.152.183.254 no installing agent
ovn-central active 1 ovn-central-k8s 22.03/beta 35 10.152.183.99 no
ovn-relay active 1 ovn-relay-k8s 22.03/beta 25 10.152.183.133 no
placement waiting 1 placement-k8s yoga/beta 18 10.152.183.25 no installing agent
rabbitmq 3.11.3 active 1 rabbitmq-k8s 3.11/beta 10 10.152.183.142 no
traefik 2.9.6 waiting 1 traefik-k8s 1.0/stable 110 10.152.183.60 no installing agent
Unit Workload Agent Address Ports Message
certificate-authority/0* active idle 10.1.243.217
glance/0* waiting idle 10.1.243.210 (ingress-internal) integration incomplete
horizon/0* waiting executing 10.1.243.214 (ingress-internal) integration incomplete
keystone/0* waiting idle 10.1.243.198 (workload) Not all relations are ready
mysql/0* active idle 10.1.243.216 Primary
neutron/0* waiting idle 10.1.243.203 (workload) Not all relations are ready
nova/0* waiting idle 10.1.243.207 (workload) Not all relations are ready
ovn-central/0* active idle 10.1.243.209
ovn-relay/0* active idle 10.1.243.199
placement/0* waiting idle 10.1.243.208 (workload) Not all relations are ready
rabbitmq/0* active idle 10.1.243.196
traefik/0* waiting idle 10.1.243.205 gateway address unavailable
그렇지만 juju 상태를 실시간으로 보면 계속 waiting status만 보인다.
이 이슈는 현재 MicroStack 개발자들도 인지 하고 있는 이슈이다. 간단한 fix는 waiting
상태에 오래 있는 서비스들의 파드를 삭제 해주면, 파드가 자동으로 재생성 되면서 서비스가 active
상태로 바뀐다. 하지만 그렇게 MicroStack이 작동을 하지만:
- OpenStack 라우터와 통신이 안되는 경우가 있다. 만약에 라우터와 통신이 돼면, 내부의 인스턴스와 통신이 안된다
- OpenStack-hypervisor 상태가 DOWN으로 바뀌면서 수동으로 UP상태로 바꾸거나, 서비스 재시작 또는 재설치시에도 상태가 안 바뀐다
## 재부팅 전
openstack hypervisor list
+----+---------------------+-----------------+--------------+-------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |
+----+---------------------+-----------------+--------------+-------+
| 1 | ubuntu | QEMU | 192.168.1.80 | up |
+----+---------------------+-----------------+--------------+-------+
## 재부팅 후
openstack hypervisor list
+----+---------------------+-----------------+--------------+-------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |
+----+---------------------+-----------------+--------------+-------+
| 1 | ubuntu | QEMU | 192.168.1.80 | down |
+----+---------------------+-----------------+--------------+-------+
OpenStack의 Hypervisor상태가 DOWN이라서 인스턴스 생성도 불가능 하다. Nova-compute 상태도 down으로 나오는 원인도 동일하다.
openstack compute service list
+----+----------------+--------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+----------------+--------+----------+---------+-------+----------------------------+
| 1 | nova-scheduler | nova-0 | internal | enabled | up | 2023-06-13T04:19:06.000000 |
| 2 | nova-conductor | nova-0 | internal | enabled | up | 2023-06-13T04:19:14.000000 |
| 8 | nova-compute | ubuntu | nova | enabled | down | 2023-06-12T18:08:40.000000 |
+----+----------------+--------+----------+---------+-------+----------------------------+
그리고 2023.1 버전만의 이슈는 Cinder 볼륨 상태 이다. 모든 요소들 설치는 문제 없이 진행 되지만 cinder-ceph
만 설치가 안된다
위에 있는 Workload가 Blocked 상태이라서 실제 MicroStack 설치 후 볼륨 서비스의 볼륨 생성 이 되지 않는다
그 외 MicroCeph 설정 완료 후에 시도 후에는는 아래와 같이 glance 워크로드가 integration incomplete이라고 뜬다
마지막으로 최신 버전인 stable/vancouver에서는 문제 없이 설정 완료 및 볼륨까지 생성은 되지만, 현재 Cinder에 의해 생성된 Ceph의 볼륨은 컴퓨트 인스턴스에 연결할 수 없다. 연결이 실패하거나 파드들이 Crash된다. 더 자세한 Bug내용은 여기서 확인.
MicroStack 관련 검사 및 로그 수집을 위해 명령어들의 모집은 여기에서 확인 할 수 있다. MicroStack의 작동 중 이슈 발생 시 적합 하다.