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_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

--

--