Ansible 을 이용하여 k3s 배포해보자
k3s 란?
Rancher
에서 IoT / Edge / ARM 등의 가벼운 시스템에 Kubernetes 서비스를 올리기 위해 만들어진 Lightweight Kubernetes 입니다.
Ansible.fast-k3s 란?
저는 평소엔 사내 교육이나 테스트를 위해 주로 Minikube 를 이용하였습니다.
Minikube 도 Linux laptop 인지 Windows (version) laptop 인지 Mac 인지 확인해서 설치를 가이드 해야되는 불편함이 있었습니다.
그래서 VMware (vCenter) 에 생성되어 있는 Template 를 이용하여 자동으로 Kubernetes 테스트 환경을 만드는 Playbook 을 만들었습니다.
Requirements
현재는 VMware 만 VM Provisioning 하도록 만들어져 있습니다.
향후에 필요하다면 KVM / RHV / oVirt 등 개발 예정입니다.
미지원하는 Hypervisor 는 k3sTag
를 이용해서 k3s 만 배포하면 됩니다.
- vCenter 6.7 (Tested)
- CentOS 7.7 Minimal Install Template
- Static IP
- Ansible >= 2.9.6 (Tested)
- https://github.com/chhanz/ansible.fast-k3s
Playbook 사용 방법
- Ansible 로 VMware 통제하기 위해서는 아래와 같이 Python module 을 설치 해야됩니다.
- pyvmomi >= 7.0
$ pip install -r requirements.txt
- pyvmomi >= 7.0
- git clone 및 variable 수정
$ git clone https://github.com/chhanz/ansible.fast-k3s.git
$ cd ansible.fast-k3s
$ vi vm_information.yml
---
### variable information 'vcenter'
vcenter_server: "vc.changeme.com"
vcenter_user: "Administrator@vsphere.local"
vcenter_pass: "password"
datacenter_name: "Datacenter"
cluster_name: "Cluster"
datastore_name: "Datastore-1"
vm_network: "VM Network"
### variable 'virtual machine"
vm_template: "c7.7-template"
vm_netmask: "255.255.255.0"
vm_gateway: "192.168.0.1"
vm_dns: "1.1.1.1"
위와 같이 vm_information.yml
을 VM 을 배포할 vCenter 정보를 수정하고. 배포에 사용될 VM Template, VM 에 사용될 IP 정보를 입력합니다.
- Playbook 실행
- deploy lab environment ‘k3s’
$ ansible-playbook -i inventory deploy-k3s.yml
VM Provisioning 과 k3s 배포를 위한 Playbook.
- (option) only deploy vm
$ ansible-playbook -i inventory deploy-k3s.yml -t vm
VM Provisioning 배포를 위한 Playbook.
- (option) only install k3s
$ ansible-playbook -i inventory deploy-k3s.yml -t k3s
k3s 배포를 위한 Playbook.
- deploy lab environment ‘k3s’
배포 예제
-
Playbook 수행 결과
-
VM 생성 결과
-
k3s 배포 결과
[root@k3s-10-50-1-42 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k3s-10-50-1-42 Ready master 9m29s v1.18.8+k3s1 [root@k3s-10-50-1-42 ~]#
Known Issue
- k3s 는 공식적으로 Ubuntu 만 지원하는 것으로 되어 있습니다.
하지만 아래와 같이 CentOS/RHEL 계열 추가 작업이 진행중이며, 설치는 가능하나firewalld
및SELinux
에 대해 검토 진행중인 것으로 보입니다.
(https://github.com/rancher/k3s/issues/1371) vmware_guest
module 을 이용하여 Ubuntu 를 배포하면 Static IP 설정을 못하는 이슈가 있습니다.
이는open-vm-tools
에서 아직netplan
을 이용한 네트워크 설정이 아직 미지원이라 그렇습니다.
(https://docs.ansible.com/ansible/latest/scenario_guides/vmware_scenarios/vmware_troubleshooting.html)