一、k3s介紹
1、k3s是一個輕量級的 Kubernetes 發行版,它針對邊緣計算、物聯網等場景進行了高度優化。我們希望安裝的 Kubernetes 在內存占用方面只是一半的大小。Kubernetes 是一個 10 個字母的單詞,簡寫為 k8s。所以,有 Kubernetes 一半大的東西就是一個 5 個字母的單詞,簡寫為 k3s。k3s 沒有全稱,也沒有官方的發音。
2、文檔
3、環境規划
- 本例使用的是指定版本和docker容器方式安裝
- docker的安裝及使用:https://www.cnblogs.com/lvlinguang/p/15183571.html
- 服務器列表如下
集群角色 | 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節點安裝
-
如果不打算安裝traefik,而是使用nginx ingress按以下操作
- INSTALL_K3S_EXEC 增加--disable traefik
- ingress安裝,參考該章節的ingress部署:https://www.cnblogs.com/lvlinguang/p/16270133.html
-
運行腳本
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 -
三、離線安裝
- 本例以安裝v1.21.5-k3s2版本
- 百度網盤離線包:鏈接:https://pan.baidu.com/s/1Kkch79lB64Ndd4ti-j8qag 提取碼:fzjm
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儀表盤
-
安裝方法,參考我的另一篇文章:https://www.cnblogs.com/lvlinguang/p/16864989.html
八、入門教程學習
1、k3s/k83學習有一定門檻,通過入門教程能夠快速掌握基礎知識,推薦大家學習
-
視頻教程,百度網盤
鏈接:https://pan.baidu.com/s/101YH_l0DthYLvMX-5a69qA
提取碼:3faf