K3S on Raspberry Pi — Cluster Setup
หลังจากที่เราได้ทำการติดตั้ง OS และกำหนด IP ให้กับตัว Raspberry PI ทั้งหมดแล้ว เราก็จะมาทำการติดตั้งและกำหนดตัว Main Cluster กันก่อน โดยขั้นตอนมีดังนี้
After we have installed the OS and set the IP addresses for all the Raspberry Pi devices, we will start by installing and configuring the Main Cluster. The steps are as follows
ก่อนที่จะเริ่มต้น เราจำเป็นต้องเพิ่มคำสั่งในไฟล์ชื่อ cmdline.txt กันก่อน ซึ่งจะเป็นการเปิดใช้งาน cgroup ที่จำเป็นต้องใช้งานครับ โดยให้ทำการถอด Micro SD Card จาก Raspberry Pi และมองหาไฟล์นี้
Before we begin, we need to add a command in the file named cmdline.txt
to enable cgroup, which is necessary. Remove the Micro SD Card from the Raspberry Pi and locate this file
เมื่อเปิดไฟล์ขึ้นมา ให้เพิ่มคำสั่งนี้ต่อท้ายสุดของคำสั่งที่มีอยู่
When you open the file, add this command at the end of the existing commands.
cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory
และเราก็จะทำแบบเดียวกันกับ Raspberry Pi ตัวอื่นๆ ครับ
And we will do the same for other Raspberry Pi devices.
สำหรับการติดตั้งนั้น เราจำเป็นต้องใช้สิทธิ์ของผู้ดูแลระบบ หรือ root จนกว่าจะติดตั้งเสร็จ ดังนั้นผมจึงใช้คำสั่งนี้ เพื่อให้เป็น root user ตลอดการติดตั้ง และจะได้ไม่ต้องใช้คำสั่ง sudo ทุกๆ คำสั่งของการติดตั้ง
For the installation, we need to use administrator or root privileges until the installation is complete. Therefore, I use this command to become the root user throughout the installation, so we don’t have to use the sudo command for every installation command.
sudo -s
จากนั้นก็จะพิมพ์คำสั่งสำหรับการติดตั้ง ซึ่งคำสั่งก็จะมีดังนี้
curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -s
จากคำสั่งด้านบน จะมี 2 ชุดคำสั่งคือ
- curl
จะเป็นการดาวน์โหลด script สำหรับการติดตั้ง K3S
It will be downloading the script for installing K3S.
- K3S_KUBECONFIG_MODE
จะเป็นการกำหนดค่าการใช้งาน ซึ่งโดยปกติแล้วจะเป็นค่า 600 ซึ่งจะทำให้สามารถใช้งานได้จากสิทธิ์ของ root เท่านั้น แต่ถ้าจะให้ user อื่นที่ไม่มีสิทธิ์ผู้ดูแลระบบจะใช้เป็น 644
This will set the usage permissions, which are typically set to 600, allowing access only by the root user. However, if you want other non-administrator users to access it, set it to 644.
- sh -s
จะเป็นการสั่งให้ทำการ execute script ที่ดาวน์โหลดมา
It will be executing the downloaded script.
หลังจากนั้นก็นั่งรอจนเสร็จตามภาพด้านล่าง
After that, wait until it’s done as shown in the image below.
ตรวจสอบสถานะของ K3S ว่าทำงานหรือยังด้วยคำสั่งนี้ หากทำงานปกติจะมีสถานะ คือ active
Check the status of K3S to see if it’s running with this command. If it’s working properly, the status should be active.
systemctl status k3s
สำหรับการออกจากสถานะของ service ให้พิมพ์ :q แล้วกด enter
To exit the service status, type :q and then press Enter.
หลังจากนั้นให้ทดลองใช้คำสั่งของ Kubernetes เพื่อดึงข้อมูลของ cluster โดยใช้คำสั่งข้างล่าง ซึ่งก็จะได้ข้อมูลตามภาพ
Afterward, try using Kubernetes commands to retrieve cluster information using the following command. You will get the information as shown in the image.
kubectl cluster-info
และทดสอบเรียกคำสั่งนี้โดยใช้ user ปกติ ก็จะได้ข้อมูลเหมือนข้างบน
And test running this command using a regular user. You should get the same information as above.
จากนั้นให้ใช้คำสั่งนี้ เพื่อบันทึกข้อมูล token สำหรับไว้ใช้สำหรับให้ Raspberry Pi ตัวอื่นเชื่อมต่อกับ main cluster ซึ่งจะถูกเก็บเอาไว้ภายในโฟลเดอร์ .kube
After that, use this command to save the token information for other Raspberry Pi devices to connect to the main cluster, which will be stored within the .kube folder.
sudo cat /var/lib/rancher/k3s/server/node-token > ~/.kube/node_token
ซึ่งเราสามารถดู token ได้ด้วยคำสั่ง
Which allows us to view the token using the command:
cat ~/.kube/node_token
จากนั้นเราจะทำการ export config ของ Kubernetes ออกมา เพื่อเอาไว้ใช้สำหรับเรียกใช้งานจากเครื่องอื่น ด้วยคำสั่ง
After that, we will export the Kubernetes config to use it for accessing from other machines using the command:
sudo kubectl config view --raw > ~/.kube/config
และเราสามารถใช้คำสั่ง cat เพื่อดู config ที่เรา export ออกมา ก็จะได้ข้อมูลตามนี้
And we can use the ‘cat’ command to view the exported config, obtaining the information as follows:
Part 1 — Raspberry Pi Setup
Part 2 — Static IP Setup
Part 3 — Main Cluster Setup
Part 4 — Node Cluster
Part 5 — Ingress Nginx
Part 6 — Remote Access
Part 7 — Portainer