日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
使用k3sup一分鐘快速搭建K3s集群

使用 K3Sup 一分鐘快速搭建 K3s 集群

作者:張曉輝Addo 2023-10-27 08:01:23

云計(jì)算

云原生 k3sup 通過(guò) SSH 連接到目標(biāo)服務(wù)器,然后自動(dòng)安裝和配置 K3s。這意味著我們可以在任何可以通過(guò) SSH 訪問(wèn)的機(jī)器上安裝和運(yùn)行 Kubernetes,包括本地機(jī)器、云服務(wù)器或樹莓派等設(shè)備。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到洛寧網(wǎng)站設(shè)計(jì)與洛寧網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋洛寧地區(qū)。

背景

在平時(shí)的工作中,為了方便在純凈的環(huán)境中進(jìn)行測(cè)試,我經(jīng)常需要在本地或者公有云環(huán)境中頻繁地搭建和銷毀集群。有時(shí)是在 我的 HomeLab 環(huán)境中,雖然 CPU 不強(qiáng)但勝在內(nèi)存夠大;后來(lái)有了微軟 MVP 贈(zèng)送的 Azure 額度之后,我也會(huì)經(jīng)常在 Azure 的虛擬機(jī) 中搭建,因?yàn)闆](méi)有拉取鏡像的網(wǎng)絡(luò)問(wèn)題。

在兩個(gè)環(huán)境中我通過(guò) Terraform 實(shí)現(xiàn)了虛擬機(jī)的快速創(chuàng)建和銷毀,然后在虛擬機(jī)上創(chuàng)建 K3s 集群。K3s 集群足夠輕量級(jí),并支持對(duì)組件的定制。結(jié)合 Alfred Snippets[1],我只需要 ssh 到虛擬機(jī)上并鍵入 k3si 就可以快速輸入定制好的命令,然后再獲取虛擬機(jī)上的 kubeconfig 文件并替換其中的 api-server 地址(這些也通過(guò) snippet)解決:

export MASTER_IP=${MASTER_IP:-$(ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1)}
export INSTALL_K3S_VERSION=v1.23.8+k3s1
curl -sfL https://get.k3s.io | sh -s - --disable traefik --disable local-storage --disable metrics-server --advertise-address=$MASTER_IP --disable servicelb --write-kubeconfig-mode 644 --write-kubeconfig ~/.kube/config

單節(jié)點(diǎn)的集群操作起來(lái)還算便捷,但需要多節(jié)點(diǎn)的集群時(shí)也還要 ssh 到所有主機(jī)上進(jìn)行操作,當(dāng)然少不了復(fù)制 master 節(jié)點(diǎn)的 token。不免還是有些繁瑣。

后來(lái)就發(fā)現(xiàn)了更快捷的工具,由 Alex Ellis 創(chuàng)建的 k3sup[2](發(fā)音 ‘ketchup’)。

k3sup 簡(jiǎn)介

k3sup 是一個(gè)輕量級(jí)工具,用于快速搭建 K3s 集群。

k3sup 的特點(diǎn)是易于使用,只需單個(gè)命令即可在不同的平臺(tái)上安裝 K3s。它使用戶可以快速創(chuàng)建 Kubernetes 集群,并可以輕松地將新節(jié)點(diǎn)加入到現(xiàn)有集群中。

k3sup 通過(guò) SSH 連接到目標(biāo)服務(wù)器,然后自動(dòng)安裝和配置 K3s。這意味著我們可以在任何可以通過(guò) SSH 訪問(wèn)的機(jī)器上安裝和運(yùn)行 Kubernetes,包括本地機(jī)器、云服務(wù)器或樹莓派等設(shè)備。

簡(jiǎn)單理解就是使用 k3sup 完成了 ssh 到主機(jī)、安裝 K3s server、復(fù)制 token、ssh 到 agent 主機(jī)、安裝 K3s agent ... 等一系列的操作。

接下來(lái)我們看下如何使用 k3sup。

安裝 k3sup

k3sup 是一個(gè)命令行工具,使用前要下載安裝 CLI。

Linux:

curl -sLS https://get.k3sup.dev | sh
sudo install k3sup /usr/local/bin/

macOS:

brew install k3sup

使用

k3sup 支持如下命令:

  • completion:為指定的 shell 生成自動(dòng)完成腳本
  • help:幫助
  • install:通過(guò) SSH 在服務(wù)器上安裝 K3s
  • join:在遠(yuǎn)程主機(jī)上安裝 K3s 代理并將其加入到現(xiàn)有集群
  • ready:使用 kubectl 檢查集群是否已就緒。
  • update:打印更新說(shuō)明
  • version:打印版本

創(chuàng)建集群會(huì)用到 install 和 join 兩個(gè)命令。

install 命令

install 命令用于在服務(wù)器上安裝 K3s,使用下面的命令即可在遠(yuǎn)程主機(jī)上安裝 k3s。

其中 --ip 指向遠(yuǎn)程主機(jī)的地址,--user 為登錄遠(yuǎn)程主機(jī)的用戶名,--k3s-channel 這是要安裝的版本,--local-path 集群 kubeconf 的本地保存地址。更多的選項(xiàng)可以通過(guò) k3sup help install 來(lái)查看。

k3sup 默認(rèn)使用 ssh key ~/.ssh/id_rsa 來(lái)訪問(wèn)主機(jī),可通過(guò) --ssh-key 選項(xiàng)指定。

export MASTER_IP=192.168.1.11
k3sup install --ip $MASTER_IP \
 --user addo \
 --k3s-channel v1.24  \
 --local-path /tmp/config

執(zhí)行命令會(huì)打印安裝過(guò)程中的日志。

Running: k3sup install
2023/10/26 09:04:35 192.168.1.11
Public IP: 192.168.1.11
[INFO]  Finding release for channel v1.24
[INFO]  Using v1.24.17+k3s1 as release
...
Saving file to: /tmp/config

# Test your cluster with:
export KUBECONFIG=/tmp/config
kubectl config use-context default
kubectl get node -o wide

執(zhí)行命令,查看節(jié)點(diǎn)的信息。

export KUBECONFIG=/tmp/config
kubectl get node -o wide
NAME     STATUS   ROLES                  AGE   VERSION         INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
master   Ready    control-plane,master   1m   v1.24.17+k3s1   10.0.2.4              Ubuntu 20.04.6 LTS   5.15.0-1047-azure   containerd://1.7.3-k3s1

如果是安裝單節(jié)點(diǎn)集群,install 命令就足夠了。假如是多節(jié)點(diǎn)集群,就還需要用到 join 命令。

join 命令

使用 join 命令可以初始化 agent 節(jié)點(diǎn),并將其加入到當(dāng)前的集群中,需要使用 --server-ip 指定 server 節(jié)點(diǎn)的 IP 地址,同樣需要 --k3s-channel 指定安裝的版本,強(qiáng)烈建議安裝于 server 節(jié)點(diǎn)同樣的版本。

export AGENT_IP=192.168.1.12
k3sup join --ip $AGENT_IP --user addo --server-ip $MASTER_IP --k3s-channel v1.24
Running: k3sup join
Agent: 192.168.1.11 Server: 192.168.1.12
Received node-token from 192.168.1.11.. ok.
[INFO]  Finding release for channel v1.24
[INFO]  Using v1.24.17+k3s1 as release
...

查看節(jié)點(diǎn):

kubectl get no 
NAME     STATUS   ROLES                  AGE     VERSION
node-1   Ready                     43s   v1.24.17+k3s1
master   Ready    control-plane,master   2m58s   v1.24.17+k3s1

完整腳本

讓 ChatGPT 生成了腳本一鍵創(chuàng)建集群,有興趣的小伙伴可以試試創(chuàng)建個(gè)雙節(jié)點(diǎn)的集群需要多久。我試了下,耗時(shí) 32s 左右。

# Define IP addresses
export HOSTS="192.168.1.11 192.168.1.12"

搭建集群

#!/bin/bash

# Read the list of IP addresses from the environment variable
IP_ADDRESSES=($HOSTS)
# Define the k3s version
K3S_VERSION="v1.24"

# Check if there is at least one IP address
if [ ${#IP_ADDRESSES[@]} -eq 0 ]; then
    echo "No IP addresses found. Please ensure the HOSTS environment variable is correctly set."
    exit 1
fi

# Install the master node
MASTER_IP=${IP_ADDRESSES[0]}
echo "Installing master node: $MASTER_IP"
k3sup install --ip $MASTER_IP --user addo --k3s-channel $K3S_VERSION \
    --k3s-extra-args '--write-kubeconfig-mode 644 --write-kubeconfig ~/.kube/config --disable traefik --disable metrics-server --disable local-storage --disable servicelb' \
    --local-path /tmp/config

# Install the other agent nodes
for i in "${!IP_ADDRESSES[@]}"; do
    if [ $i -ne 0 ]; then
        AGENT_IP=${IP_ADDRESSES[$i]}
        echo "Installing agent node: $AGENT_IP"
        k3sup join --ip $AGENT_IP --server-ip $MASTER_IP --user addo --k3s-channel $K3S_VERSION
    fi
done

echo "k3s cluster installation complete."

卸載集群

#!/bin/bash

# Read the list of IP addresses from the environment variable
IP_ADDRESSES=($HOSTS)

# Check if there is at least one IP address
if [ ${#IP_ADDRESSES[@]} -eq 0 ]; then
    echo "No IP addresses found. Please ensure the HOSTS environment variable is correctly set."
    exit 1
fi

# Clean up the master node
MASTER_IP=${IP_ADDRESSES[0]}
echo "Cleaning up master node: $MASTER_IP"
ssh -i ~/.ssh/id_rsa $MASTER_IP k3s-uninstall.sh

# Clean up the other agent nodes
for i in "${!IP_ADDRESSES[@]}"; do
    if [ $i -ne 0 ]; then
        AGENT_IP=${IP_ADDRESSES[$i]}
        echo "Cleaning up agent node: $AGENT_IP"
        ssh -i ~/.ssh/id_rsa $AGENT_IP k3s-agent-uninstall.sh
    fi
done

echo "k3s cluster cleanup complete."

參考資料

[1] Alfred Snippets: https://www.alfredapp.com/help/features/snippets/

[2] k3sup: https://github.com/alexellis/k3sup


網(wǎng)站名稱:使用k3sup一分鐘快速搭建K3s集群
文章鏈接:http://m.5511xx.com/article/dhgscdo.html