(실패) orbstack + kubespray로 쿠버네티스 생성하기

 

사내에서는 Docker를 쓰고 있지만 개인적으론 도커가 너무 무겁다 느껴져서 개인 PC에서는 orbstack을 주로사용한다. 

orbstack은 그런데 컨테이너 뿐만 아니라 vm도 생성할 수 있는데 이번 기회에 kubespray랑 결합해서 생성이 가능한지 확인해보고자 한다. -> 실패했음.. orbstack은 vm도 생성이 가능하긴 하지만 에러가 너무 많이 발생함.. 

 

orbstack 알아보기 

orbstack은 명령어가 orb와 orbctl이라는 2개의 명령어가 설치된다. orb는 머신의 리눅스 쉘에 들어가기 위해서 쓰거나 머신 내부에 명령어를 전달할때 주로 사용하고 실제로 머신을 생성하고 삭제하는 등의 컨트롤은 orbctl로 할수 있다. 

 

머신을 조회해보면 아래와 같이 나온다. 

orbctl list

 

머신을 직접 만들어봐야 하는데 우분투 머신을 생성하고자 한다면 다음과 같이 입력하면 된다.

orbctl create ubuntu

 

이렇게 하면 ubuntu라는 이름의 머신이 생성되는데 뒤에 이어서 이름까지 쓰면 해당이름의 머신이 생성된다. -a 옵션을 사용해서  다른 cpu 아키텍처를 선택할 수도 있다. 

orbctl create ubuntu <name>
orbctl create -a amd64 ubuntu <name>

 

삭제는 delete 명령어를 통해 할 수 있다.

orbctl delete hello

 

vm 생성하기 

간단하게 마스터 1개와 워커 2개를 생성해보도록 하겠습니다. 

orbctl create -a amd64 -u admin ubuntu master01
orbctl create -a amd64 -u admin ubuntu worker01
orbctl create -a amd64 -u admin ubuntu worker02

 

 

-p옵션을 함께 사용하면 비밀번호를 부여할수도 있습니다.

 

이 3개의 머신에 ssh로 접근하려면 다음과 같이 입력하면 됩니다.

ssh <machine name>@orb

 

admin으로 잘 접속이 됩니다. 

 

ansible 설치하기

ansible 버전은 2.16.4 ~ 2.17 사이어야 한다고 합니다. 프로비저닝하다가 에러남

 

버전을 명시해서 설치하도록 합니다.

brew install ansible=2.17

 

 

kubespray로 쿠버네티스 프로비저닝 하기

프로비저닝 전 준비

베스천 서버에 접속하여 우선 코드를 다운 받습니다. 

git clone https://github.com/kubernetes-sigs/kubespray.git

 

 

원래라면 inventory 아래에 호스트 정보를 적어야하는데 직접 각각의 서버에 들어가서 아이피 정보를 알아와도 되지만 (orbstack 명령어 찾는법을 모르겠음) DNS 설정이 <machine name>.orb.local 로 설정되어있는 것 같습니다. (아래에서 설명하겠지만 orbstack에서는 ansible을 설정하는 법이 다름.)

 

dig master01.orb.local

 

🔥🔥 orbstack에서는 vm들끼리의 ssh 통신을 지원하지 않기 때문에 프로비저닝은 mac에서만 진행할 수 있습니다.

이렇게 host를 특정하거나 

[servers]
ubuntu@orb  ansible_user=ubuntu

 

다음과 같이 사용자 이름을 특정지어 사용할 수 있습니다. 

[servers]
root@ubuntu@orb ansible_user=root@ubuntu

 

하지만 이렇게 설정하면 host 이름을 맞추는 과정에서 에러가 나기 때문에 ansible_host를 별도로 설정하겠습니다.

[kube_control_plane]
master01 ansible_host=master01@orb ansible_user=admin

[etcd:children]
kube_control_plane

[kube_node]
worker01 ansible_host=worker01@orb ansible_user=admin
worker02 ansible_host=worker02@orb ansible_user=admin

 

마지막으로 ansible을 실행하기 위해 설정을 하겠습니다. 

VENVDIR=kubespray-venv
KUBESPRAYDIR=kubespray
python3 -m venv $VENVDIR
source $VENVDIR/bin/activate
cd $KUBESPRAYDIR
git checkout release-2.27
pip install -r requirements.txt
cp -rfp inventory/sample inventory/aya-ya

 

프로비저닝 해보기

마지막 대상 서버 확인 하기

ansible-inventory -i inventory/aya-ya/inventory.ini --list

 

 

실행하기

ansible-playbook -i inventory/aya-ya/inventory.ini -b cluster.yml

 

흠.. swap 설정하는 과정에서 에러가 나네요. 어차피 swap이 꺼져있어서 제거하고 다시 진행해보겠습니다. 

 

하지만 추가 에러 발생

vim ./roles/kubernetes/preinstall/tasks/main.yml
#- name: Apply resolvconf settings
#  import_tasks: 0060-resolvconf.yml
#  when:
#    - dns_mode != 'none'
#    - resolvconf_mode == 'host_resolvconf'
#    - systemd_resolved_enabled.rc != 0
#    - networkmanager_enabled.rc != 0
#  tags:
#    - bootstrap-os
#    - resolvconf

 

 

에효..