<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 k3s 在 Raspberry Pi 4 上構(gòu)建低成本 Kubernetes 集群

          共 12187字,需瀏覽 25分鐘

           ·

          2023-08-24 08:15

          f157815adb723b4725c59039beb6bc37.webp

          你是否對 Kubernetes 感到好奇并且想要嘗試一些實(shí)驗(yàn)?或許你手頭有一些閑置的 Raspberry Pi 4,想要充分利用它們?如果是的話,你可真是幸運(yùn)!在這篇文章中,我將向你展示如何借助 Raspberry Pi 4 和 k3s,構(gòu)建一個(gè)簡單且輕量級的 Kubernetes 集群。這種經(jīng)濟(jì)實(shí)惠且易于上手的方法,讓你能夠探索 Kubernetes 的世界,同時(shí)不會造成過多負(fù)擔(dān)。一起開始這個(gè)有趣的探索吧!

          2625c1da7e2fe2a59001d097d3bc1497.webp

          硬件

          • 3 x 樹莓派 4 Model B 4GB
          • 2 x Kingston CANVAS Select Plus SD 卡 32GB
          • 52pi 機(jī)架式塔式集群機(jī)箱
          • 1 x Kingston A400 固態(tài)硬盤(240GB)
          • TP-Link TLSG108 8 口千兆臺式交換機(jī)(你也可以使用 4 口交換機(jī))

          安裝操作系統(tǒng)

          我使用了 Raspberry Pi Imager[1] 將樹莓派操作系統(tǒng)(32 位)安裝到了 SD 卡上。在設(shè)置過程中(如下面的第 4 步所述),將會提示配置主機(jī)名、用戶名等設(shè)置。

          8d15d4e73636b932040450653cfe7819.webp

          從 USB SSD 啟動 Raspberry Pi 4

          我承認(rèn),在樹莓派 Kubernetes 集群的設(shè)置過程中,有一個(gè)步驟確實(shí)讓我感到相當(dāng)困惑。我嘗試讓 master 節(jié)點(diǎn)使用固態(tài)硬盤來運(yùn)行,但遇到了一些令人頭疼的問題。我在網(wǎng)上搜索了幾個(gè)小時(shí),希望找到解決方法。幸運(yùn)的是,我最終偶然發(fā)現(xiàn)了一篇博文[2],它為我提供了寶貴的見解,解決了我困擾已久的問題。有了這些新獲得的知識,我終于成功地讓 master 節(jié)點(diǎn)通過固態(tài)硬盤啟動起來。這真是讓我感到欣慰!

          網(wǎng)絡(luò)設(shè)置

          為了將你的樹莓派設(shè)備連接到互聯(lián)網(wǎng),你需要通過以太網(wǎng)將它們連接到交換機(jī)。一旦連接好,你可以從路由器的配置頁面輕松地確定分配給你的樹莓派的 IP 地址。

          如果你已經(jīng)使用 Raspberry Pi Imager 設(shè)置了樹莓派的主機(jī)名,那么識別它們的 IP 地址將會非常容易。在我的環(huán)境中,我正在使用諾基亞 Wifi Beacon 1 路由器,以下是我用來驗(yàn)證樹莓派 IP 地址的步驟。

          在檢查節(jié)點(diǎn)的 IP 地址時(shí),你可能會注意到具有不同 IP 地址的重復(fù)詳細(xì)信息,一個(gè)是用于無線連接,另一個(gè)是用于以太網(wǎng)。識別以太網(wǎng) IP 地址非常重要,因?yàn)榕c無線相比,它提供了更穩(wěn)定和可靠的連接。要找到以太網(wǎng) IP 地址,請檢查你的路由器配置頁面,并選擇標(biāo)有 “Ethernet” 的選項(xiàng)。

          3c896e00b8853a351facbed2d207286d.webp

          準(zhǔn)備節(jié)點(diǎn)

          在確定了節(jié)點(diǎn)的 IP 地址后,你可以通過 ssh 連接到它們的 IP 地址。

          以下是設(shè)置的基本內(nèi)容:

          • /etc/hosts 中添加節(jié)點(diǎn)的主機(jī)名
          • 檢查 k3s 所需的端口[3]

          a. 在 /etc/hosts 中添加節(jié)點(diǎn)的主機(jī)名

          為了在筆記本電腦的終端和每個(gè)節(jié)點(diǎn)中使用主機(jī)名訪問你的節(jié)點(diǎn),你需要分別配置 /etc/hosts。這個(gè)步驟對于所有三個(gè)節(jié)點(diǎn)都是相同的,所以你需要為每個(gè)節(jié)點(diǎn)重復(fù)這個(gè)過程。一旦配置完成,你可以通過主機(jī)名輕松訪問每個(gè)節(jié)點(diǎn),簡化管理過程并且更容易連接到你的節(jié)點(diǎn)。

                
                vi /etc/hosts
          ## Raspberry Cluster Nodes
          192.168.18.35 k3s-master
          192.168.18.52 worker01
          192.168.18.53 worker02

          完成后,你應(yīng)該能夠使用節(jié)點(diǎn)的主機(jī)名連接到它們:

                
                GLP/~ $ ssh iamroot@k3s-master
          iamroot@k3s-master's password:
          Linux k3s-master 5.15.84-v7l+ #1613 SMP Thu Jan 5 12:01:26 GMT 2023 armv7l

          The programs included with the Debian GNU/Linux system are free software;
          the exact distribution terms for each program are described in the
          individual files in /usr/share/doc/*/copyright.

          Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
          permitted by applicable law.
          Last login: Sun Apr 23 06:44:04 2023 from 192.168.18.8
          iamroot@k3s-master:~ $

          b. 檢查 k3s 所需的端口

          驗(yàn)證是否允許端口 10250。如果沒有被允許,請繼續(xù)下一步操作:

                
                iamroot@k3s-master:~ $ netstat -anlp | grep 10250

          要允許來自 master 節(jié)點(diǎn)的端口 10250,具體所需的命令將根據(jù)你的操作系統(tǒng)而異。DigitalOcean 有一份指南,提供了有關(guān)在 Linux 上打開端口的詳細(xì)說明[4],你可以作為參考。通過允許端口 10250,你將能夠在安裝 K3s 時(shí)與 master 節(jié)點(diǎn)建立安全連接,以供 metrics server 使用。

                
                iamroot@k3s-master:~ $ sudo su -
          root@k3s-master:~# iptables -A INPUT -p tcp --dport 10250 -j ACCEPT

          驗(yàn)證,請運(yùn)行:

                
                iptables --list | grep 10250

          安裝 K3s

          有關(guān) K3s 架構(gòu)的更多詳細(xì)信息,請參閱 https://docs.k3s.io/architecture

          在 master 節(jié)點(diǎn)上安裝 k3s

          首先,我們需要在 master 節(jié)點(diǎn)上安裝 K3s。在安裝過程中,有時(shí)你可能會看到一個(gè)錯(cuò)誤消息,內(nèi)容如下:

                
                [INFO] Failed to find memory cgroup, you may need to add “cgroup_memory=1 cgroup_enable=memory” to your linux cmdline (/boot/cmdline.txt on a Raspberry Pi)

          要解決這個(gè)錯(cuò)誤,請編輯 /boot/cmdline.txt,并添加 cgroup_memory=1 cgroup_enable=memory

                
                vi /boot/cmdline.txt

          console=serial0,115200 console=tty1 root=PARTUUID=71c3dce0–02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cgroup_memory=1 cgroup_enable=memory

          修復(fù)了錯(cuò)誤后,你就可以繼續(xù)安裝并創(chuàng)建你的 Kubernetes 集群:

                
                curl -sfL https://get.k3s.io | sh -

          以下是命令的示例輸出:

                
                iamroot@k3s-master:~ $ curl -sfL https://get.k3s.io | sh -
          [INFO]  Finding release for channel stable
          [INFO]  Using v1.26.3+k3s1 as release
          [INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.26.3+k3s1/sha256sum-arm.txt
          [INFO]  Skipping binary downloaded, installed k3s matches hash
          [INFO]  Finding available k3s-selinux versions
          sh: 407: [: unexpected operator
          [INFO]  Skipping /usr/local/bin/kubectl symlink to k3s, already exists
          [INFO]  Skipping /usr/local/bin/crictl symlink to k3s, already exists
          [INFO]  Skipping /usr/local/bin/ctr symlink to k3s, already exists
          [INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
          [INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
          [INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
          [INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
          [INFO]  systemd: Enabling k3s unit
          Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
          [INFO]  No change detected so skipping service start

          為了確認(rèn)你的 Kubernetes 安裝正常工作并且 master 節(jié)點(diǎn)可用,你可以運(yùn)行命令 sudo kubectl get nodes 來執(zhí)行一個(gè)簡單的驗(yàn)證測試:

                
                iamroot@k3s-master:~ $ sudo kubectl get nodes
          NAME         STATUS   ROLES                  AGE    VERSION
          k3s-master   Ready    control-plane,master   7d5h   v1.26.3+k3s1

          在 worker 節(jié)點(diǎn)上安裝 k3s agent

          與 master 節(jié)點(diǎn)類似,你還需要確保對每個(gè) worker 節(jié)點(diǎn)的 /boot/cmdline.txt 文件進(jìn)行編輯,將 cgroup_memory=1 cgroup_enable=memory 添加到行末。

          在其他樹莓派上安裝 k3s worker 節(jié)點(diǎn)之前,你需要從 master 節(jié)點(diǎn)獲取 IP 地址和訪問 token 。為此,只需通過 SSH 登錄到 master 節(jié)點(diǎn),并運(yùn)行以下命令:

          獲取 master 節(jié)點(diǎn) IP 地址:

                
                iamroot@k3s-master:~ $ hostname -I | awk '{print$1}'
          192.168.18.35

          獲取訪問 token:

                
                iamroot@k3s-master:~ $ sudo cat /var/lib/rancher/k3s/server/node-token
          K10910a9f606e89da8a95e3e37ab9faf160a3eeca46229dd82fb902c3984bec8e1b::server:e658625eecb60de3f383ca0a75df3e24

          SSH 進(jìn)入每個(gè) worker 節(jié)點(diǎn)并執(zhí)行所需的命令:

          使用從 master 節(jié)點(diǎn)獲取的 IP 和節(jié)點(diǎn) token。運(yùn)行命令:curl -sfl https://get.k3s.io |K3S_URL=https://<Master IP>:6443 K3S_TOKEN=<Node Token>

                
                ## 替換節(jié)點(diǎn) IP 和 token 用于以下命令:

          iamroot@worker01:~ $ curl -sfL https://get.k3s.io | K3S_URL=https://192.168.18.35:6443 K3S_TOKEN=K10910a9f606e89da8a95e3e37ab9faf160a3eeca46229dd82fb902c3984bec8e1b::server:e658625eecb60de3f383ca0a75df3e24 sh -
          [INFO]  Finding release for channel stable
          [INFO]  Using v1.26.3+k3s1 as release
          [INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.26.3+k3s1/sha256sum-arm.txt
          [INFO]  Skipping binary downloaded, installed k3s matches hash
          [INFO]  Finding available k3s-selinux versions
          sh: 407: [: unexpected operator
          [INFO]  Skipping /usr/local/bin/kubectl symlink to k3s, already exists
          [INFO]  Skipping /usr/local/bin/crictl symlink to k3s, already exists
          [INFO]  Skipping /usr/local/bin/ctr symlink to k3s, already exists
          [INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
          [INFO]  Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh
          [INFO]  env: Creating environment file /etc/systemd/system/k3s-agent.service.env
          [INFO]  systemd: Creating service file /etc/systemd/system/k3s-agent.service
          [INFO]  systemd: Enabling k3s-agent unit
          Created symlink /etc/systemd/system/multi-user.target.wants/k3s-agent.service → /etc/systemd/system/k3s-agent.service.
          [INFO]  systemd: Starting k3s-agent

          在你的 worker 節(jié)點(diǎn)上安裝了 k3s agent 后,你可以驗(yàn)證它們是否已成功添加到集群并處于 Ready 狀態(tài)。要做到這一點(diǎn),請登錄到你的 master 節(jié)點(diǎn)并運(yùn)行以下命令:

                
                iamroot@k3s-master:~ $ sudo kubectl get nodes
          NAME         STATUS   ROLES                  AGE    VERSION
          k3s-master   Ready    control-plane,master   7d5h   v1.26.3+k3s1
          worker02     Ready    <none>                 7d5h   v1.26.3+k3s1
          worker01     Ready    <none>                 7d5h   v1.26.3+k3s1

          從你的筆記本電腦管理集群

          a. 安裝 kubectl

          根據(jù)你筆記本電腦的操作系統(tǒng),你可以查閱官方文檔[5]了解如何安裝 kubectl。

          b. 在你的筆記本電腦上設(shè)置 kubeconfig

          要從 master 節(jié)點(diǎn)檢索 kubeconfig 文件,請?jiān)?master 節(jié)點(diǎn)上執(zhí)行以下命令:

                
                iamroot@k3s-master:~ $ sudo cat /etc/rancher/k3s/k3s.yaml

          apiVersion: v1
          clusters:
          - cluster:
              certificate-authority-data: LS0tLS1..
              server: https://<Master Nodes-IP>:6443
            name: default
          contexts:
          - context:
              cluster: default
              user: default
            name: k3s
          current-context: default
          kind: Config
          preferences: {}
          users:
          - name: default
            user:
              client-certificate-data: LS0tLS1CRUd..
              client-key-data: LS0tLS1C...

          要在本地機(jī)器上使用 kubeconfig 文件,請將文件的內(nèi)容復(fù)制到本地機(jī)器上的一個(gè)新文件中,并將其保存為 ~/.kube/config。

          在使用配置文件之前,你需要更新 cluster 部分中的 server 字段,使其與你的 master 節(jié)點(diǎn)的 IP 地址匹配。將默認(rèn)的服務(wù)器 IP 地址 127.0.0.1 替換為你的 master 節(jié)點(diǎn)的 IP 地址。另外,將上下文從 default 重命名為 k3s。

          一旦你更新了配置文件,你可以通過在本地終端中執(zhí)行 kubectl 命令來測試連接,使用剛剛創(chuàng)建的 k3s 上下文。例如,你可以運(yùn)行:

                
                GLP/~ $ kubectl config use-context k3s
          Switched to context "k3s".
          GLP/~ $ kubectl get nodes
          NAME         STATUS   ROLES                  AGE    VERSION
          k3s-master   Ready    control-plane,master   7d6h   v1.26.3+k3s1
          worker02     Ready    <none>                 7d6h   v1.26.3+k3s1
          worker01     Ready    <none>                 7d6h   v1.26.3+k3s1

          總結(jié)

          我們已成功地建立了一個(gè)由一個(gè) master 節(jié)點(diǎn)和兩個(gè) worker 節(jié)點(diǎn)組成的三節(jié)點(diǎn)集群,通過安裝 k3s 并在我們的筆記本電腦上配置 kubeconfig 來訪問該集群。

          雖然這篇文章已經(jīng)涵蓋了集群的初始設(shè)置階段,但請繼續(xù)關(guān)注未來的項(xiàng)目,因?yàn)樗鼈儗⒄故敬思焊喔呒壍挠美?。我有幾個(gè)令人興奮的項(xiàng)目計(jì)劃,將充分發(fā)揮 Kubernetes 的強(qiáng)大和靈活性。敬請期待!

          參考資料

          [1]

          Raspberry Pi Imager: https://www.raspberrypi.com/software/

          [2]

          如何從 USB SSD 或閃存驅(qū)動器啟動 Raspberry Pi 4 / 400: https://www.tomshardware.com/how-to/boot-raspberry-pi-4-usb

          [3]

          K3s 端口要求: https://docs.k3s.io/installation/requirements

          [4]

          如何在 Linux 上打開端口: https://www.digitalocean.com/community/tutorials/opening-a-port-on-linux

          [5]

          Kubernetes Install Tools: https://kubernetes.io/docs/tasks/tools/


          瀏覽 162
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色视频高清无码 | 可以赌博看毛片的网站 | 无码日批 | 日本成人中文字幕 | 精品久久久久久久久久 |