k3s集群安裝


一、k3s介紹

1、k3s是一個輕量級的 Kubernetes 發行版,它針對邊緣計算、物聯網等場景進行了高度優化。我們希望安裝的 Kubernetes 在內存占用方面只是一半的大小。Kubernetes 是一個 10 個字母的單詞,簡寫為 k8s。所以,有 Kubernetes 一半大的東西就是一個 5 個字母的單詞,簡寫為 k3s。k3s 沒有全稱,也沒有官方的發音。

2、文檔

3、環境規划

集群角色 ip地址
server節點 192.168.3.17
agent節點 192.168.3.18
  • 關閉防火牆
# 關閉防火牆
systemctl stop firewalld

# 開機禁用
systemctl disable firewalld

# 檢查狀態
firewall-cmd --state

4、注意:每台計算機必須具有唯一的主機名。如果您的計算機沒有唯一的主機名,請傳遞K3S_NODE_NAME環境變量,並為每個節點提供一個有效且唯一的主機名。

二、在線安裝

1、server節點安裝

export INSTALL_K3S_VERSION=v1.21.5+k3s2
export K3S_NODE_NAME=k3s-master
export INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config --cluster-cidr 10.72.0.0/16 --service-cidr 10.73.0.0/16 --write-kubeconfig-mode 666"

# 高可用(配置外部sql,第二個server節點需要配置K3S_TOKEN)
# export K3S_TOKEN=server1的token
# export INSTALL_K3S_EXEC="--docker --datastore-endpoint=mysql://root:123456@tcp(192.168.3.13:6008)/k3s --write-kubeconfig ~/.kube/config --cluster-cidr 10.72.0.0/16 --service-cidr 10.73.0.0/16 --write-kubeconfig-mode 666"

curl -sfL https://get.k3s.io | sh -
  • server參數說明:
    • --docker:k3s server組件以containerd作為容器運行時。可以順便在k3s server節點上啟動一個Agent節點,Agent節點可以使用Docker作為容器運行時,這樣k3s server節點也可以當做工作節點用。當然也可以不在server節點上啟動Agent節點(添加參數--disable-agent即可)。
    • --bind-address:k3s監聽的IP地址,非必選,默認是localhost。
    • --cluster-cidr:與Kubernetes一樣,也就是Pod所在網絡平面,非必選,默認是10.42.0.0/16。
    • --service-cidr:與Kubernetes一樣,服務所在的網絡平面,非必選,默認是10.43.0.0/16。
    • --kube-apiserver-arg:額外的API Server配置參數,具體可以參考Kuberntes官方網站了解支持的配置選項,非必選。
    • --write-kubeconfig:安裝時順便寫一個Kubeconfig文件,方便使用kubectl工具直接訪問。如果不加此參數,則默認的配置文件路徑為/etc/rancher/k3s/k3s.yaml,默認只有root用戶能讀。
    • --write-kubeconfig-mode:與--write-kubeconfig一起使用,指定Kubeconfig文件的權限。
    • --node-label:順便給節點打上一個asrole=worker的label,非必選。
    • --disable traefik:不安裝traefik

2、agent節點安裝

  • 從server節點獲取token
cat /var/lib/rancher/k3s/server/node-token
  • agent節點執行腳本
export INSTALL_K3S_VERSION=v1.21.5+k3s2
export K3S_NODE_NAME=k3s-node1
export INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config --cluster-cidr 10.72.0.0/16 --service-cidr 10.73.0.0/16 --write-kubeconfig-mode 666"
curl -sfL https://get.k3s.io | K3S_URL=https://192.168.3.17:6443 K3S_TOKEN=server1的token sh -

三、離線安裝

1、server節點安裝

  • 下載文件
cd /usr/local/bin

# 下載k3s-airgap-images-amd64.tar
wget https://github.com/k3s-io/k3s/releases/download/v1.21.5+k3s2/k3s-airgap-images-amd64.tar

# 下載k3s可執行文件
wget https://github.com/k3s-io/k3s/releases/download/v1.21.5+k3s2/k3s

# 下載在線腳本
curl https://get.k3s.io >> k3s-install.sh

# 設置權限
chmod +x k3s-install.sh k3s
  • 設置環境變量並安裝
# 跳過二進制文件下載
export INSTALL_K3S_SKIP_DOWNLOAD=true

# 修改節點名稱
export K3S_NODE_NAME=k3s-master

# 配置額外參數
export INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config --cluster-cidr 10.72.0.0/16 --service-cidr 10.73.0.0/16 --write-kubeconfig-mode 666"

# 高可用(配置外部sql,第二個server節點需要配置K3S_TOKEN)
# export K3S_TOKEN=server1的token
# export INSTALL_K3S_EXEC="--docker --datastore-endpoint=mysql://root:123456@tcp(192.168.3.13:6008)/k3s --write-kubeconfig ~/.kube/config --cluster-cidr 10.72.0.0/16 --service-cidr 10.73.0.0/16 --write-kubeconfig-mode 666"

# 執行安裝腳本
./k3s-install.sh

2、agent節點安裝

  • 從server節點獲取token
cat /var/lib/rancher/k3s/server/node-token
  • 下載文件
cd /usr/local/bin

# 下載k3s-airgap-images-amd64.tar
wget https://github.com/k3s-io/k3s/releases/download/v1.21.5+k3s2/k3s-airgap-images-amd64.tar

# 下載k3s可執行文件
wget https://github.com/k3s-io/k3s/releases/download/v1.21.5+k3s2/k3s

# 下載在線腳本
curl https://get.k3s.io >> k3s-install.sh

# 設置權限
chmod +x k3s-install.sh k3s
  • 設置環境變量並安裝
# 跳過二進制文件下載
export INSTALL_K3S_SKIP_DOWNLOAD=true

# 修改節點名稱
export K3S_NODE_NAME=k3s-node1

# 配置server節點信息,token來自server節點
export K3S_URL=https://192.168.3.17:6443
export K3S_TOKEN=server1的token

# 配置額外參數
export INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config --cluster-cidr 10.72.0.0/16 --service-cidr 10.73.0.0/16 --write-kubeconfig-mode 666"

# 執行安裝腳本
./k3s-install.sh

四、高可用安裝

1、一個 K3s HA 集群由以下幾個部分組成:

  • 兩個或多個server 節點,將為 Kubernetes API 提供服務並運行其他 control-plane 服務
  • 零個或多個agent 節點,用於運行您的應用和服務
  • 外部數據存儲 (與單個 k3s server 設置中使用的嵌入式 SQLite 數據存儲相反)
  • 固定的注冊地址,位於 server 節點的前面,以允許 agent 節點向集群注冊

2、指定mysql數據庫

  • 格式:mysql://username:password@tcp(hostname:3306)/database-name
  • 如果指定的數據庫名稱不存在,k3s server 將嘗試創建它

3、server節點修改

  • 增加參數:--datastore-endpoint
# 配置數據庫信息
export INSTALL_K3S_EXEC="--docker --datastore-endpoint=mysql://root:123456@tcp(192.168.3.13:6008)/k3s --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
  • 第二個server節點需要指定K3S_TOKEN
export K3S_TOKEN=server1的token

4、agent節點不做任何修改

五、配置鏡像倉庫

在Docker中可以通過配置registry-mirrors來實現從其他鏡像倉庫中獲取K3s鏡像。這樣配置之后,會先從registry-mirrors配置的地址拉取鏡像,如果獲取不到才會從默認的docker.io獲取鏡像,從而滿足了我們的需求

  • 修改daemon.json
vim /etc/docker/daemon.json
  • 添加以下配置
{
    "insecure-registries":["192.168.3.12:6007"]
}
  • 重啟docker
systemctl daemon-reload
systemctl restart docker

六、集群重啟/卸載

  • 查看k3s服務狀態
systemctl status k3s
  • 重啟k3s服務
systemctl restart k3s
  • 卸載 K3s
# server節點卸載
/usr/local/bin/k3s-uninstall.sh

# agent節點卸載
/usr/local/bin/k3s-agent-uninstall.sh

七、Kubernetes 儀表盤

1、kuboard儀表盤

八、入門教程學習

1、k3s/k83學習有一定門檻,通過入門教程能夠快速掌握基礎知識,推薦大家學習

鏈接:https://pan.baidu.com/s/101YH_l0DthYLvMX-5a69qA 
提取碼:3faf

九、參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM