시작 설정 및 정의
마이크로스택(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의 작동 중 이슈 발생 시 적합 하다.


