はじめに
みなさんこんにちは、サイオステクノロジーの南です。
コンテナオーケストレーションの分野で急速に注目を集めているKubernetes(k8s)ですが、その軽量版であるk3sが存在するのはご存じでしょうか?
k3sは、小規模環境やリソース制約のあるシステムに最適なオプションとして注目されています。
しかし、k3sクラスタを手動でセットアップするのは手間がかかります。ここで、Ansible を活用してk3sクラスタを効率的に構築する方法を紹介します。
事前準備
手元での環境は以下を用意しています
- ハード
- raspberry pi4(4GB) ×3a
- Ansible構築用PC
- Lenovo Ideapad
- OS
- raspberry pi4: Ubuntu22.04 server
- Ansible構築用PC: windows10
- バージョン
- Ansible
- 2.12.10
- k3s
- 1.27.4+k3s
- Ansible
今回ansibleで構築するにあたって、Pyratlabのansible-role-k3sを参考にしています!
また、今回はraspberry piを使用していますが、vm環境があればraspberry piに限らず他環境(EC2,virtualbox等でも大丈夫です。
k3sを作成する前に
k3sを立ち上げる前に、今回用意したサーバーがそれぞれ/etc/hosts上などで名前解決ができるようにします。
/etc/hosts
10.10.9.2 k3s1
10.10.9.3 k3s2
10.10.9.4 k3s3
Ubuntuでは21.10以降からraspberry piでのvxlanサポートがデフォルトではされなくなりました。
そのためraspberry piを使っていてUbuntu21.10以降を使っている場合以下をインストールする必要があります。
$ sudo apt install linux-modules-extra-rasp
Ansible を用いてk3sを作成する
k3s用のansible roleをダウンロードします
$ ansible-galaxy install xanmanning.k3s
以下のようなansible-playbookとinventoryを作成します
cluster_inventory.yml
---
k3s_cluster:
hosts:
kube-0:
ansible_user: k3s1
ansible_host: 10.10.9.2
ansible_python_interpreter: /usr/bin/python3
kube-1:
ansible_user: k3s2
ansible_host: 10.10.9.3
ansible_python_interpreter: /usr/bin/python3
kube-2:
ansible_user: k3s3
ansible_host: 10.10.9.4
ansible_python_interpreter: /usr/bin/python3
cluster_playbook.yml
---
- name: Build a cluster with a single control node
hosts: k3s_cluster
vars:
k3s_become: true
roles:
- role: xanmanning.k3s
Ansibleを実行します
$ ansible-playbook -i inventory.yml cluster.yml
マスターノードにsshアクセスをして、作成されているかを確認します。
ubuntu@k3s1:~$ sudo kubectl get no
NAME STATUS ROLES AGE VERSION
k3s1 Ready control-plane,master 20h v1.27.4+k3s1
k3s2 Ready <none> 20h v1.27.4+k3s1
k3s3 Ready <none> 20h v1.27.4+k3s1
まとめ
今回のブログでは、Raspberry Pi 4とUbuntu 22.04 Serverを使用して、手軽にk3sクラスタを構築する方法をご紹介しました。
Ansibleを活用することで、繰り返しのタスクを自動化し、効率的にクラスタを構築することができます。
ここまで読んでいただき、ありがとうございました!