日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

轻量级 Kubernetes 集群发行版 K3s 完全进阶指南

發(fā)布時間:2023/12/4 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 轻量级 Kubernetes 集群发行版 K3s 完全进阶指南 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

公眾號關(guān)注?「奇妙的 Linux 世界」

設(shè)為「星標(biāo)」,每天帶你玩轉(zhuǎn) Linux !

深入理解官方文檔,輕松學(xué)會使用 K3S 工具!

K3s 是一個輕量級的 Kubernetes 發(fā)行版,它針對邊緣計算、物聯(lián)網(wǎng)等場景進(jìn)行了高度優(yōu)化。

  • CNCF 認(rèn)證的 Kubernetes 發(fā)行版

  • 支持 X86_64, ARM64, ARMv7 平臺

  • 單一進(jìn)程包含 Kubernetes masterkubeletcontainerd

1. K3S 工具介紹

為你提供 k3s 的產(chǎn)品介紹

K3s 有以下增強(qiáng)功能:

  • 打包為單個二進(jìn)制文件

    • K8S 相關(guān)的組件,比如 kube-api/ kube-manager 都打包到同一個二進(jìn)制文件里面,這樣的話,只需要啟動這個文件就可以快速的啟動對應(yīng)的組件。

  • 使用基于 sqlite3 的默認(rèn)存儲機(jī)制

    • 同時支持使用 etcd3MySQLPostgreSQL 作為存儲機(jī)制。

  • 默認(rèn)情況下是安全的

    • K3s 中有一個默認(rèn)的證書管理機(jī)制(默認(rèn)一年有效期),也有一個可以輪轉(zhuǎn)證書的功能(就是在小于九十天之內(nèi)重啟 K3s 的話,就會自動續(xù)一年)。

  • 功能強(qiáng)大的 batteries-included 功能

    • 就是雖然有些服務(wù)本身這個二進(jìn)制文件并沒有提供,但是可以通過內(nèi)置的服務(wù),將配置文件放到指定的目錄下面,就可以在啟動的時候一并將該服務(wù)啟動或替換默認(rèn)組件。

  • 所有 K8S control-plane 組件都封裝在單個二進(jìn)制文件和進(jìn)程中

    • 因為封裝在二進(jìn)制文件中,所以啟動的時候只有一個進(jìn)程。好處在于只需要管理這個單一進(jìn)程就可以了,同時也具備操作復(fù)雜集群的能力。

  • 最大程度減輕了外部依賴性

    • 即稍新一點的 Linux 內(nèi)核就可以了(需要 kernelcgroup 掛載)。

之所以叫做 K3S 是因為希望安裝的 K8S 在內(nèi)存占用方面只是一半的大小,而一半大的東西就是一個 5 個字母的單詞,簡寫為 K3S

  • 生命周期

    • 同時支持 3K8s 版本,支持的生命周期與 K8s 相同

    • 可以參考: Kubernetes 版本及版本偏差支持策略 進(jìn)行學(xué)習(xí)

  • 更新周期

    • 當(dāng) K8s 更新新版本后,一般 K3s 在一周內(nèi)同步更新

    • 可以通過 這個鏈接 獲取 latest/stable/testing 版本

    • 我們默認(rèn)安裝的是 stable 版本,可以運(yùn)行通過命令進(jìn)行查看

  • 命名規(guī)范

    • v1.20.4+k3s1: v1.20.4K8s 版本,k3s1 為補(bǔ)丁版本

#?K3s軟件包需要的依賴項
containerd??#?容器運(yùn)行時(可以使用docker替代)
Flannel?????#?網(wǎng)絡(luò)
CoreDNS?????#?DNS
CNI?????????#?CNI
Traefik?????#?默認(rèn)的controller服務(wù)(apisix/ingress-controller)
iptables????#?主機(jī)實用程序
service?load?balancer?????#?嵌入式服務(wù)負(fù)載均衡器
network?policy?controller?#?嵌入式網(wǎng)絡(luò)策略控制器#?K3s適用于以下場景
CI
Development
ARM
嵌入?K8s
物聯(lián)網(wǎng)-IoT
邊緣計算-Edge

與此同時,Rancher 中國團(tuán)隊推出了一款針對 K3s 的效率提升工具:AutoK3s。只需要輸入一行命令,即可快速創(chuàng)建 K3s 集群并添加指定數(shù)量的 master 節(jié)點和 worker 節(jié)點。

2. K3S 快速入門

原理就是,將 K8S 的相關(guān)組件封裝到 K3S 的二進(jìn)制文件中去!

原理就是,將 K8S 的相關(guān)組件封裝到 K3S 的二進(jìn)制文件中去,然后啟動這二進(jìn)制文件就可以啟動一個成熟的 K8S 集群。我們可以看到 K3SK8S 的架構(gòu)基本差不多,其中 k3s-server 對應(yīng)這個 control-plane,而 k3s-agent 對應(yīng)著 node 節(jié)點。

可以看到 k3s 中使用的默認(rèn)存儲是 SQLite(自帶),且默認(rèn)的網(wǎng)絡(luò)使用的是 Flannel(自帶)。當(dāng)服務(wù)端和客戶端都啟動之后,通過 Tunnel-Proxy 這個組件進(jìn)行通信,通過這個通道去管理網(wǎng)絡(luò)流量。在 agent 節(jié)點中,通過 kubelet 操作 contaninerd 來創(chuàng)建對應(yīng) Pod

  • K3s 架構(gòu)

K3S工具進(jìn)階指南
  • K8s 架構(gòu)

K3S工具進(jìn)階指南

國內(nèi)的話,建議使用官方提供的 鏡像地址,這樣不但可以加速本地 K3s 的時候,而且方便部署和更新服務(wù)。這也是為什么建議國內(nèi)使用 k3s-install.sh 部署服務(wù)的原因,因為其內(nèi)部使用的地址都是從國內(nèi)去獲取的。

3. K3S 安裝事項

3.1 安裝指南

理解 Server 節(jié)點的安裝,以及注冊 Agent 節(jié)點的步驟!

雖然可以通過下載二進(jìn)制文件進(jìn)行服務(wù)端和工作節(jié)點的運(yùn)行(./k3s server),但是一旦我們退出進(jìn)程,之前創(chuàng)建的節(jié)點也就立即銷毀了,所以還是建議使用腳本進(jìn)行安裝。

#?主節(jié)點
$?./k3s?server#?工作節(jié)點
$?./k3s?agent?K3S_URL=xxx?K3S_TOKEN=xxx#?清除垃圾文件
$?rm?-rf?/etc/rancher?/var/lib/rancher
  • 鏡像加速

#?添加配置
$?cat?>>?/etc/rancher/k3s/registries.yaml?<<EOF
mirrors:"docker.io":endpoint:-?"https://fogjl973.mirror.aliyuncs.com"-?"https://registry-1.docker.io"
EOF#?重啟服務(wù)
$?sudo?systemctl?restart?k3s#?是否生效
$?sudo?crictl?info?|?grep?-A?2?"endpoint"

K3s 提供了一個安裝腳本,可以方便的在 systemdopenrc 的系統(tǒng)上將其作為服務(wù)安裝。運(yùn)行此安裝后,K3s 服務(wù)將被配置為在節(jié)點重啟后或進(jìn)程崩潰或被殺死時自動重啟。

  • 安裝內(nèi)容

    • kubectlcrictlctr

    • k3s-killall.shk3s-uninstall.sh

  • 執(zhí)行操作

    • kubeconfig 文件寫入到 /etc/rancher/k3s/k3s.yaml 里面

    • K3s 安裝的 kubectl 工具將自動使用該文件的配置來運(yùn)行

    • 其他機(jī)器可以通過復(fù)制這個配置文件并修改 server 地址來操作 K3s 集群

  • 主節(jié)點 - 192.168.100.100

#?安裝腳本
#?https://get.k3s.io
$?curl?-sfL?https://get.k3s.io?|?sh?-#?建議使用這個安裝腳本(國內(nèi)化了)
$?curl?-sfL?https://rancher-mirror.rancher.cn/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?K3S_NODE_NAME=k3s1?\K3S_KUBECONFIG_OUTPUT=/home/escape/.kube/config?\INSTALL_K3S_EXEC="--docker"?sh?-
#?查找stable分支版本信息
[INFO]??Finding?release?for?channel?stable
[INFO]??Using?v1.23.6+k3s1?as?release#?獲取國內(nèi)鏡像版本地址
[INFO]??Downloading?hash?https://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/sha256sum-amd64.txt
[INFO]??Downloading?binary?https://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/k3s
[INFO]??Verifying?binary?download#?安裝k3s二進(jìn)制工具并鏈接相關(guān)工具(內(nèi)置)
[INFO]??Installing?k3s?to?/usr/local/bin/k3s
[INFO]??Skipping?installation?of?SELinux?RPM
[INFO]??Creating?/usr/local/bin/kubectl?symlink?to?k3s
[INFO]??Creating?/usr/local/bin/crictl?symlink?to?k3s
[INFO]??Skipping?/usr/local/bin/ctr?symlink?to?k3s,?command?exists?in?PATH?at?/usr/bin/ctr#?安裝清除和卸載k3s生成的配置和工具
[INFO]??Creating?killall?script?/usr/local/bin/k3s-killall.sh
[INFO]??Creating?uninstall?script?/usr/local/bin/k3s-uninstall.sh#?常見了兩個systemd的配置
[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.#?啟動k3s服務(wù)
[INFO]??systemd:?Starting?k3s
  • 工作節(jié)點 - 192.168.100.101

#?工作節(jié)點上安裝并將它們添加到集群
#?https://docs.rancher.cn/docs/k3s/architecture/_index#注冊-agent-節(jié)點
$?curl?-sfL?https://get.k3s.io?|?\K3S_URL=https://myserver:6443?\K3S_TOKEN=mynodetoken?sh?-#?建議使用這個安裝命令(國內(nèi)化了)
#?K3S_URL:?會使K3s以worker模式運(yùn)行
#?K3S_TOKEN:?使用的值存儲在你的服務(wù)器節(jié)點上
#?K3S_NODE_NAME:?為每個節(jié)點提供一個有效且唯一的主機(jī)名
$?curl?-sfL?https://rancher-mirror.rancher.cn/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?K3S_NODE_NAME=k3s2?\K3S_KUBECONFIG_OUTPUT=/home/escape/.kube/config?\K3S_URL=https://192.168.100.100:6443?\K3S_TOKEN=mynodetoken?sh?-#?mynodetoken
$?sudo?cat?/var/lib/rancher/k3s/server/token
#?查找stable分支版本信息
[INFO]??Finding?release?for?channel?stable
[INFO]??Using?v1.23.6+k3s1?as?release#?獲取國內(nèi)鏡像版本地址
[INFO]??Downloading?hash?https://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/sha256sum-amd64.txt
[INFO]??Downloading?binary?https://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/k3s
[INFO]??Verifying?binary?download#?安裝k3s二進(jìn)制工具并鏈接相關(guān)工具(內(nèi)置)
[INFO]??Installing?k3s?to?/usr/local/bin/k3s
[INFO]??Creating?/usr/local/bin/kubectl?symlink?to?k3s
[INFO]??Creating?/usr/local/bin/crictl?symlink?to?k3s
[INFO]??Skipping?/usr/local/bin/ctr?symlink?to?k3s#?安裝清除和卸載k3s生成的配置和工具
[INFO]??Creating?killall?script?/usr/local/bin/k3s-agent-killall.sh
[INFO]??Creating?uninstall?script?/usr/local/bin/k3s-agent-uninstall.sh#?常見了兩個systemd的配置
[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.#?啟動k3s服務(wù)
[INFO]??systemd:?Starting?k3s-agent

3.2 配置要求

理解 Server 節(jié)點的安裝,以及注冊 Agent 節(jié)點的步驟!

  • [1] 先決條件

    • 選擇上,兩個節(jié)點不能有相同的主機(jī)名

    • 不修改主機(jī)名可以通過添加隨機(jī)后綴或指定主機(jī)名

#?為每個節(jié)點添加隨機(jī)后綴
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?K3S_URL=https://192.168.100.100:6443?\K3S_TOKEN=xxx?sh?-s?-?--with-node-id#?為每個節(jié)點指定主機(jī)名
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\K3S_NODE_NAME="k3s2"?INSTALL_K3S_MIRROR=cn?\K3S_URL=https://192.168.64.3:6443?K3S_TOKEN=xxx?sh?-#?為每個節(jié)點指定主機(jī)名
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?K3S_URL=https://192.168.64.3:6443?\K3S_TOKEN=xxx?sh?-s?-?--node-name?k3s2
  • [2] 硬件信息

    • 操作系統(tǒng):可以在大多數(shù)現(xiàn)代 Linux 系統(tǒng)上運(yùn)行

    • 磁盤設(shè)備:K3s 的性能取決于數(shù)據(jù)庫的性能(建議使用 SSD 硬盤)

    • 網(wǎng)絡(luò)相關(guān):K3s Server 節(jié)點的入站規(guī)則,所有出站流量都是允許的

協(xié)議 端口 描述
TCP 6443 K3s agent 節(jié)點 Kubernetes API Server
UDP 8472 K3s server 和 agent 節(jié)點 僅對 Flannel VXLAN 需要
TCP 10250 K3s server 和 agent 節(jié)點 Kubelet metrics
TCP 2379-2380 K3s server 節(jié)點 只有嵌入式 etcd 高可用才需要
  • [3] 安裝選項

    • 官方安裝參數(shù)文檔

    • 安裝選項示例演示

Environment Variable Description
INSTALL_K3S_EXEC 用于在服務(wù)中啟動 K3s 的后續(xù)子命令
K3S_CONFIG_FILE 指定配置文件的位置
K3S_TOKEN 用于將 server/agent 加入集群的共享 secret
K3S_TOKEN_FILE 用于將 server/agent 加入集群的共享 secret 文件
INSTALL_K3S_VERSION 指定下載 K3s 的版本
K3S_TOKEN_FILE 指定 ?cluster-secret/token 的文件目錄
INSTALL_K3S_SKIP_START 將不會啟動 K3s 服務(wù)
INSTALL_K3S_SKIP_DOWNLOAD 用于離線安裝;設(shè)置之后不會下載遠(yuǎn)程工具
#?其實就把對應(yīng)參數(shù)加到systemd配置文件里面去了
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC="--docker"?sh?-#?自動化部署(不用獲取token值了)
#?主節(jié)點和工作節(jié)點使用我們指定的key來通信
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\K3S_TOKEN=rancher-k3s?sh?-
$?sudo?cat?/var/lib/rancher/k3s/server/token
  • [4] 其他說明

    • 運(yùn)行 agent 時還必須設(shè)置 K3S_TOKEN

    • K3S_ 開頭的環(huán)境變量將被保留,供 systemd/openrc 使用

    • 沒有明確設(shè)置 exec 并設(shè)置 K3S_URL 的話會將命令默認(rèn)為工作節(jié)點

3.3 命令參數(shù)

理解 Server 節(jié)點的安裝,以及注冊 Agent 節(jié)點的步驟!

在整個 K3s 文檔中,你會看到一些選項可以作為命令標(biāo)志和環(huán)境變量傳遞進(jìn)來,那該如何使用標(biāo)志和環(huán)境變量呢?

  • [1] 使用標(biāo)志和環(huán)境變量

#?使用標(biāo)志
$?curl?-sfL?https://get.k3s.io?|?K3S_KUBECONFIG_MODE="644"?sh?-s?-
$?curl?-sfL?https://get.k3s.io?|?sh?-s?-?--write-kubeconfig-mode?644#?環(huán)境變量
$?curl?-sfL?https://get.k3s.io?|?\INSTALL_K3S_EXEC="--flannel-backend?none"?sh?-s?-
$?curl?-sfL?https://get.k3s.io?|?\sh?-s?-?server?--flannel-backend?none
  • [2] K3s Server/Agent - 常用配置

#?write-kubeconfig
#?將管理客戶端的kubeconfig寫入這個文件
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\K3S_KUBECONFIG_OUTPUT=/root/.kube/config?\sh?-
#?使用docker作為容器運(yùn)行時
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC="--docker"?sh?-#?指定運(yùn)行時工具
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC="--container-runtime-endpoint?containerd"?\sh?-#?設(shè)置私有鏡像倉庫配置文件
#?默認(rèn)配置文件:?/etc/rancher/k3s/registries.yaml
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC="--private-registry?xxx"?\sh?-
#?針對多網(wǎng)卡主機(jī)安裝K3s集群
#?默認(rèn)多網(wǎng)卡會使用默認(rèn)網(wǎng)關(guān)的那個卡
$?rout?-n#?K3s?server
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC="--node-ip=192.168.100.100"?\sh?-#?K3s?agent
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\K3S_URL=https://192.168.99.211:6443?K3S_TOKEN=xxx?\INSTALL_K3S_EXEC="--node-ip=192.168.100.100"?\sh?-
#?--tls-san
#?在TLS證書中添加其他主機(jī)名或IP作為主機(jī)備用名稱
#?即在公網(wǎng)環(huán)境下允許通過公網(wǎng)IP訪問控制、操作遠(yuǎn)程集群
#?或者部署多個Server并使用LB進(jìn)行負(fù)責(zé),就需要保留公網(wǎng)地址
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC="--tls-san?1.1.1.1"??\sh?-#?獲取配置
$?kubectl?get?secret?k3s-serving?-n?kube-system?-o?yaml#?然后本機(jī)復(fù)制公網(wǎng)主節(jié)點對應(yīng)的yaml文件即可本地操作了
$?scp?ci@1.1.1.1:/etc/rancher/k3s/k3s.yaml?~/.kube/config
#?修改啟動的服務(wù)對應(yīng)配置(調(diào)整節(jié)點的啟動的最大Pod數(shù)量)
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--kubelet-arg=max-pods=200'?\sh?-#?修改啟動的服務(wù)對應(yīng)配置(使用ipvs作為服務(wù)調(diào)度工具)
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--kube-proxy-arg=proxy-mode=ipvs'?\sh?-#?修改啟動的服務(wù)對應(yīng)配置(調(diào)整服務(wù)啟動的端口范圍)
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--kube-apiserver-arg=service-node-port-range=40000-50000'?\sh?-#?kubelet-arg?????--kubelet-arg
#?kube-apiserver??--kube-apiserver-arg
#?kube-proxy-arg??--kube-proxy-arg
#?kube-proxy-arg??--kube-proxy-arg=proxy-mode=ipvs
#?--data-dir
#?修改K3s數(shù)據(jù)存儲目錄
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--data-dir=/opt/k3s-data'?\sh?-
#?禁用組件
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--disable?traefik'?\sh?-#?自己加自己需要的服務(wù)
$?ls?/var/lib/rancher/k3s/server/manifests
$?kubectl?get?pods?-A?|?grep?traefik
#?添加label和taint標(biāo)識
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--node-label?foo=bar,hello=world?\--node-taint?key1=value1:NoExecute'sh?-#?查看一下
$?kubectl?describe?nodes
  • [3] K3s Server/Agent - 數(shù)據(jù)庫選項

#?指定數(shù)據(jù)源名稱
#?標(biāo)志位:?--datastore-endpoint&nbsp;value
#?環(huán)境變量:?K3S_DATASTORE_ENDPOINT
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--datastore-endpoint&nbsp;etcd'?\sh?-
#?cron規(guī)范中的快照間隔時間
#?--etcd-snapshot-schedule-cron&nbsp;value
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--etcd-snapshot-schedule-cron?*&nbsp;*/5&nbsp;*&nbsp;*&nbsp;*'?\sh?-

3.4 網(wǎng)絡(luò)選項

理解 Server 節(jié)點的安裝,以及注冊 Agent 節(jié)點的步驟!

默認(rèn)情況下,K3s 將以 flannel 作為 CNI 運(yùn)行,使用 VXLAN 作為默認(rèn)后端,CNI 和默認(rèn)后端都可以通過參數(shù)修改。要啟用加密,請使用下面的 IPSecWireGuard 選項。

#?默認(rèn)安裝K3s之后的網(wǎng)絡(luò)配置
$?sudo?cat?/var/lib/rancher/k3s/agent/etc/flannel/net-conf.json
{"Network":?"10.42.0.0/16","EnableIPv6":?false,"EnableIPv4":?true,"IPv6Network":?"::/0","Backend":?{"Type":?"vxlan"}
}
CLI Flag 和 Value 描述
--flannel-backend=vxlan 使用 VXLAN 后端(默認(rèn))
--flannel-backend=host-gw 使用 host-gw 后端
--flannel-backend=ipsec 使用 IPSEC 后端;對網(wǎng)絡(luò)流量進(jìn)行加密
--flannel-backend=wireguard 使用 WireGuard 后端;對網(wǎng)絡(luò)流量進(jìn)行加密
  • 配置 Flannel 選項

這樣,我就可以在安裝 K3s 或者之后修改對應(yīng)配置文件,來修改 Flannel 默認(rèn)的后端網(wǎng)絡(luò)配置選項(重啟會覆蓋不生效)了。下面,我們演示下,如何修改為 host-gw 模式。

#?主節(jié)點
#?flannel-backend使用host-gw
#?該模式會把對端主機(jī)的IP當(dāng)做默認(rèn)網(wǎng)管(多Server情況)
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--flannel-backend=host-gw'?\sh?-#?工作節(jié)點
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?K3S_URL=https://192.168.100.100:6443?\K3S_TOKEN=xxx?sh?-
#?默認(rèn)的路由信息
$?route?-n
0.0.0.0?????????172.16.64.1?????0.0.0.0?????????UG????100????0????????0?enp0s2
10.42.1.0???????172.16.64.9?????255.255.255.0???UG????0??????0????????0?enp0s2#?查看配置之后的網(wǎng)絡(luò)配置
$?sudo?cat?/var/lib/rancher/k3s/agent/etc/flannel/net-conf.json
{"Network":?"10.42.0.0/16","Backend":?{"Type":?"host-gw"}
}
  • 啟用 Directrouting 特性

Flannel 自身的特性:當(dāng)主機(jī)在同一子網(wǎng)時,啟用 direct routes(如 host-gw)。vxlan 只用于將數(shù)據(jù)包封裝到不同子網(wǎng)的主機(jī)上,同子網(wǎng)的主機(jī)之間使用 ?host-gw,默認(rèn)值為 ?false

要添加我們就不能修改其對應(yīng)的網(wǎng)絡(luò)配置文件,因為重新安裝或者重啟都會把這個配置沖掉(變成默認(rèn)配置),所以需要折中下。我們自建一個網(wǎng)絡(luò)配置文件,然后在啟動的時候執(zhí)行從哪個配置文件里面加載對應(yīng)配置。

#?k3s的master和agent
$?sudo?cat?/etc/flannel/net-conf.json
{"Network":?"10.42.0.0/16","Backend":?{"Type":?"vxlan","Directrouting":?true}
}#?k3s?master
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--flannel-backend=host-gw'?\sh?-
  • 自定義 CNI

使用 ?--flannel-backend=none(禁用) 運(yùn)行 K3s,然后在安裝你選擇的 CNI。按照 Calico CNI 插件指南 來修改 CalicoYAML 配置文件,在 container_settings 部分中允許 IP 轉(zhuǎn)發(fā)。

#?加到Calico的YAML文件中
#?允許IP轉(zhuǎn)發(fā)(這個是K3s的一個限制;需要開啟)
"container_settings":?{"allow_ip_forwarding":?true
}-?name:?CALICO_IPV4POOL_CIDRvalue:?"192.168.200.0/24"
#?通過在主機(jī)上運(yùn)行以下命令,確保設(shè)置已被應(yīng)用(true)
$?sudo?cat?/etc/cni/net.d/10-canal.conflist#?calico
#?其中--cluster-cidr可不設(shè)置
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--flannel-backend=none?\--cluster-cidr=192.168.200.0/24"'?\sh?-#?啟動網(wǎng)絡(luò)服務(wù)
$?kubectl?apply?-f?./calico.yaml

3.5 外部數(shù)據(jù)庫

理解 Server 節(jié)點的安裝,以及注冊 Agent 節(jié)點的步驟!

  • [1] 使用外部數(shù)據(jù)庫實現(xiàn)高可用安裝

    • 兩個或多個server 節(jié)點

    • 零個或多個agent 節(jié)點

    • 外部數(shù)據(jù)存儲(Etcd/MySQL/PostgRES)

    • 固定的注冊地址(LB)

    • 這應(yīng)該是最適合國內(nèi)用戶的 K3s HA 方案

雖然單節(jié)點 k3s server 集群可以滿足各種用例,但是對于需要穩(wěn)定運(yùn)行的重要環(huán)境,可以在 HA 配置中運(yùn)行 K3s,如何使用外部數(shù)據(jù)庫安裝一個高可用的 K3s 集群?

K3S安裝事項 - 外部數(shù)據(jù)庫
主機(jī)名 角色 IP
k3s-server-1 k3s master 172.31.2.134
k3s-server-2 k3s master 172.31.2.42
k3s-db DB 172.31.10.251
k3s-lb LB 172.31.13.97
k3s-agent k3s agent 172.31.15.130
#?1.創(chuàng)建一個外部數(shù)據(jù)存儲
$?docker?run?--name?some-mysql?\--restart=unless-stopped?-p?3306:3306?\-e?MYSQL_ROOT_PASSWORD=password?-d?mysql:5.7#?2.啟動k3s-server節(jié)點(有讀寫權(quán)限不用加庫名)
#?mysql://username:password@tcp(hostname:3306)/database-name
#?可加污點?--node-taint?CriticalAddonsOnly=true:NoExecute
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?sh?-?server?\--datastore-endpoint="mysql://root:password@ip:3306/k3s"?\--tls-san?172.31.13.97
#?3.配置固定的注冊地址(k3s-lb節(jié)點)
#?Agent節(jié)點需要一個URL來注冊(LB)
$?cat?>>?/etc/nginx.conf?<<EOF
worker_processes?4;
worker_rlimit_nofile?40000;events?{worker_connections?8192;
}stream?{upstream?k3s_api?{least_conn;server?172.31.2.134:6443?max_fails=3?fail_timeout=5s;server?172.31.2.42:6443?max_fails=3?fail_timeout=5s;}server?{listen?????6443;proxy_pass?k3s_api;}
}
EOF#?啟動服務(wù)
$?docker?run?-d?--restart=unless-stopped?\-p?6443:6443?\-v?/etc/nginx.conf:/etc/nginx/nginx.conf?\nginx:1.14
#?4.加入Agent節(jié)點
#?Agent會保存LB節(jié)點和每個Server節(jié)點的IP信息
#?cat?/var/lib/rancher/k3s/agent/etc/k3s-agent-load-balancer.json
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cnK3S_URL=https://172.31.13.97:6443?K3S_TOKEN=mynodetoken?\sh?-#?5.通過kubeconfig訪問K3s集群
$?kubectl?get?nodes
NAME???????????STATUS???ROLES??????????????????AGE???VERSION
k3s-server-1???Ready????control-plane,master???68s???v1.20.7+k3s1
k3s-server-2???Ready????control-plane,master???66s???v1.20.7+k3s1
  • [2] 嵌入式 DB 的高可用

要在這種模式下運(yùn)行 K3s,你必須有奇數(shù)的服務(wù)器節(jié)點,建議從三個節(jié)點開始。在嵌入式中,默認(rèn)使用 Etcd 作為高可用的數(shù)據(jù)庫。

#?服務(wù)器節(jié)點(啟動etcd集群)
#?SECRET我們預(yù)定一個key值
#?使用cluster-init標(biāo)志來啟用集群
#?并使用一個標(biāo)記作為共享的密鑰來加入其他服務(wù)器到集群中
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?K3S_TOKEN=SECRET?\sh?-s?-?--cluster-init#?查看類型
$?sudo??kubectl?get?nodes
NAME????STATUS??ROLES??????????????????????AGE??VERSION
ip-xxx??Ready???control-plane,etcd,master??19h??v1.23.6+k3s1#?其他服務(wù)器節(jié)點(2/3)
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?K3S_TOKEN=SECRET?\sh?-s?-?--server?https://<ip-or-host-server>:6443#?查詢ETCD集群狀態(tài)
# etcd證書默認(rèn)目錄:/var/lib/rancher/k3s/server/tls/etcd
# etcd數(shù)據(jù)默認(rèn)目錄:/var/lib/rancher/k3s/server/db/etcd
$?ETCDCTL_ENDPOINTS='https://172.31.12.136:2379,\https://172.31.4.43:2379,\https://172.31.4.190:2379'?\
ETCDCTL_CACERT='/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt'?\
ETCDCTL_CERT='/var/lib/rancher/k3s/server/tls/etcd/server-client.crt'\
ETCDCTL_KEY='/var/lib/rancher/k3s/server/tls/etcd/server-client.key'?\
ETCDCTL_API=3?etcdctl?endpoint?status?--write-out=table
  • [3] 集群數(shù)據(jù)存儲選項

使用 etcd 以外的數(shù)據(jù)存儲運(yùn)行 K8S 的能力使 K3s 區(qū)別于其他 K8S 發(fā)行版。該功能為 K8S 操作者提供了靈活性,可用的數(shù)據(jù)存儲選項允許你選擇一個最適合用例的數(shù)據(jù)存儲。

如果你的團(tuán)隊沒有操作 etcd 的專業(yè)知識,可以選擇 MySQLPostgreSQL 等企業(yè)級 SQL 數(shù)據(jù)庫。如果您需要在 CI/CD 環(huán)境中運(yùn)行一個簡單的、短暫的集群,可以使用嵌入式 SQLite 數(shù)據(jù)庫

如果你想使用外部數(shù)據(jù)存儲,如 PostgreSQLMySQLetcd,你必須設(shè)置 datastore-endpoint 參數(shù),以便 K3s 知道如何連接到它,也可以指定參數(shù)來配置連接的認(rèn)證和加密。下表總結(jié)了這些參數(shù),它們可以作為 CLI 標(biāo)志或環(huán)境變量傳遞。

CLI Flag 環(huán)境變量 描述
--datastore-endpoint K3S_DATASTORE_ENDPOINT 指定一個 PostgresSQL、MySQL 或 etcd 連接字符串。用于描述與數(shù)據(jù)存儲的連接。這個字符串的結(jié)構(gòu)是特定于每個后端的,詳情如下。
--datastore-cafile K3S_DATASTORE_CAFILE TLS 證書頒發(fā)機(jī)構(gòu)(CA)文件,用于幫助確保與數(shù)據(jù)存儲的通信安全。如果你的數(shù)據(jù)存儲通過 TLS 服務(wù)請求,使用由自定義證書頒發(fā)機(jī)構(gòu)簽署的證書,你可以使用這個參數(shù)指定該 CA,這樣 K3s 客戶端就可以正確驗證證書。
--datastore-certfile K3S_DATASTORE_CERTFILE TLS 證書文件,用于對數(shù)據(jù)存儲進(jìn)行基于客戶端證書的驗證。要使用這個功能,你的數(shù)據(jù)存儲必須被配置為支持基于客戶端證書的認(rèn)證。如果你指定了這個參數(shù),你還必須指定datastore-keyfile參數(shù)。
--datastore-keyfile K3S_DATASTORE_KEYFILE TLS 密鑰文件,用于對數(shù)據(jù)存儲進(jìn)行基于客戶端證書的認(rèn)證。更多細(xì)節(jié)請參見前面的datastore-certfile參數(shù)。

作為最佳實踐,我們建議將這些參數(shù)設(shè)置為環(huán)境變量,而不是命令行參數(shù),這樣你的數(shù)據(jù)庫證書或其他敏感信息就不會作為進(jìn)程信息的一部分暴露出來。

3.6 私有鏡像倉庫

理解 Server 節(jié)點的安裝,以及注冊 Agent 節(jié)點的步驟!

K3s 默認(rèn)使用 containerd 作為容器運(yùn)行時,所以在 docker 上配置鏡像倉庫是不生效的。K3s 鏡像倉庫配置文件由兩大部分組成:mirrors 和 ?configs

  • Mirrors 是一個用于定義專用鏡像倉庫的名稱和 endpoint 的指令

  • Configs 部分定義了每個 mirrorTLS 和證書配置

  • 對于每個 mirror,你可以定義 auth/tls

K3s registry 配置目錄為:/etc/rancher/k3s/registries.yamlK3s 啟動時會檢查 ?/etc/rancher/k3s/ 中是否存在 ?registries.yaml 文件,并指示 containerd 使用文件中定義的鏡像倉庫。如果你想使用一個私有的鏡像倉庫,那么你需要在每個使用鏡像倉庫的節(jié)點上以 root 身份創(chuàng)建這個文件。

請注意,server 節(jié)點默認(rèn)是可以調(diào)度的。如果你沒有在 server 節(jié)點上設(shè)置污點,那么將在它們上運(yùn)行工作負(fù)載,請確保在每個 server 節(jié)點上創(chuàng)建 ?registries.yaml 文件。

containerd 使用了類似 K8Ssvcendpoint 的概念,svc 可以理解為訪問名稱,這個名稱會解析到對應(yīng)的 endpoint 上。也可以理解 mirror 配置就是一個反向代理,它把客戶端的請求代理到 endpoint 配置的后端鏡像倉庫。mirror 名稱可以隨意填寫,但是必須符合 IP 或域名的定義規(guī)則。并且可以配置多個 endpoint,默認(rèn)解析到第一個 endpoint,如果第一個 endpoint 沒有返回數(shù)據(jù),則自動切換到第二個 endpoint,以此類推。

#?/etc/rancher/k3s/registries.yaml
#?同時可以設(shè)置多個mirrors地址
#?可以對mirrors設(shè)置權(quán)限和證書
mirrors:"172.31.6.200:5000":endpoint:-?"http://172.31.6.200:5000"-?"http://x.x.x.x:5000"-?"http://y.y.y.y:5000""rancher.ksd.top:5000":endpoint:-?"http://172.31.6.200:5000""docker.io":endpoint:-?"https://fogjl973.mirror.aliyuncs.com"-?"https://registry-1.docker.io"configs:"172.31.6.200:5000":auth:username:?adminpassword:?Harbor@12345tls:cert_file:?/home/ubuntu/harbor2.escapelife.site.certkey_file:?/home/ubuntu/harbor2.escapelife.site.keyca_file:?/home/ubuntu/ca.crt
#?鏡像都是從同一個倉庫獲取到的
$?sudo?systemctl?restart?k3s.service
$?sudo?crictl?pull?172.31.6.200:5000/library/alpine
$?sudo?crictl?pull?rancher.ksd.top:5000/library/alpine

這里我們介紹下,如何使用 TLS 配置。

#?證書頒發(fā)機(jī)構(gòu)頒發(fā)的證書
$?cat?>>?/etc/rancher/k3s/registries.yaml?<<EOF
mirrors:"harbor.escapelife.site":endpoint:-?"https://harbor.escapelife.site"
configs:"harbor.escapelife.site":auth:username:?adminpassword:?Harbor@12345
EOF$?sudo?systemctl?restart?k3s
#?自簽名證書
$?cat?>>?/etc/rancher/k3s/registries.yaml?<<EOF
mirrors:"harbor2.escapelife.site":endpoint:-?"https://harbor2.escapelife.site"
configs:"harbor2.escapelife.site":auth:username:?adminpassword:?Harbor@12345tls:cert_file:?/home/ubuntu/harbor2.escapelife.site.certkey_file:??/home/ubuntu/harbor2.escapelife.site.keyca_file:???/home/ubuntu/ca.crt
EOF$?sudo?systemctl?restart?k3s
#?不使用TLS證書
$?cat?>>?/etc/rancher/k3s/registries.yaml?<<EOF
mirrors:"docker.io":endpoint:-?"https://fogjl973.mirror.aliyuncs.com"-?"https://registry-1.docker.io"
EOF$?sudo?systemctl?restart?k3s

K3s 將會在 /var/lib/rancher/k3s/agent/etc/containerd/config.toml 中為 containerd 生成 ?config.toml。如果要對這個文件進(jìn)行高級設(shè)置,你可以在同一目錄中創(chuàng)建另一個名為 ?config.toml.tmpl 的文件,此文件將會代替默認(rèn)設(shè)置。

#?完整示例
$?cat?>>?/etc/rancher/k3s/registries.yaml
mirrors:"harbor.escapelife.site":endpoint:-?"https://harbor.escapelife.site""harbor2.escapelife.site":endpoint:-?"https://harbor2.escapelife.site""172.31.19.227:5000":endpoint:-?"http://172.31.19.227:5000""docker.io":endpoint:-?"https://fogjl973.mirror.aliyuncs.com"-?"https://registry-1.docker.io"configs:"harbor.escapelife.site":auth:username:?adminpassword:?Harbor@12345"harbor2.escapelife.site":auth:username:?adminpassword:?Harbor@12345tls:cert_file:?/home/ubuntu/harbor2.escapelife.site.certkey_file:??/home/ubuntu/harbor2.escapelife.site.keyca_file:???/home/ubuntu/ca.crt

3.7 離線安裝

理解 Server 節(jié)點的安裝,以及注冊 Agent 節(jié)點的步驟!

離線安裝的過程主要分為以下兩個步驟:

  • 步驟 1:部署鏡像

    • 部署私有鏡像倉庫

    • 手動部署鏡像

  • 步驟 2:安裝 K3s 工具

    • 單節(jié)點安裝

    • 高可用安裝

  • 通過私有鏡像倉庫安裝 K3s

    • k3s-images.txt 包含對于版本依賴的鏡像文件

    • k3s-airgap-images-amd64.tar 包含對于版本的鏡像文件

#?將所需鏡像上傳到私有鏡像倉庫
#?https://github.com/k3s-io/k3s/releases
可以從K3s鏡像列表獲取到版本,下載上傳到私有鏡像倉庫#?創(chuàng)建鏡像倉庫(YAML)
#?按照私有鏡像倉庫配置指南創(chuàng)建并配置registry.yaml文件
$?mkdir?-p?/etc/rancher/k3s/
cat?>>?/etc/rancher/k3s/registries.yaml?<<EOF
mirrors:"docker.io":endpoint:-?"https://harbor.escapelife.site"
configs:"docker.io":auth:username:?adminpassword:?Harbor@12345
EOF
#?安裝單節(jié)點K3s集群
#?https://github.com/k3s-io/k3s/releases
可以從K3s倉庫獲取到版本(二進(jìn)制文件)#?獲取K3s安裝腳本
$?wget?https://get.k3s.io?-o?./install.sh
$?wget?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh#?安裝K3s-server
$?INSTALL_K3S_SKIP_DOWNLOAD=true?./install.sh#?將agent加入到K3s集群
$?INSTALL_K3S_SKIP_DOWNLOAD=true?\K3S_URL=https://myserver:6443?K3S_TOKEN=mynodetoken?\./install.sh
  • 通過手動部署鏡像安裝 K3s

#?從Github頁面獲取你所運(yùn)行的K3s版本及文件
#?https://github.com/rancher/k3s/releases
k3s二進(jìn)制文件+鏡像tar文件#?將tar文件放在images目錄下
$?sudo?mkdir?-p?/var/lib/rancher/k3s/agent/images/
$?sudo?cp?./k3s-airgap-images-$ARCH.tar?/var/lib/rancher/k3s/agent/images/#?將k3s二進(jìn)制文件放在/usr/local/bin/k3s路徑上
$?mv?./k3s?/usr/local/bin/
$?chmod?755?/usr/local/bin/k3s#?安裝K3s-server
$?INSTALL_K3S_SKIP_DOWNLOAD=true?./install.sh#?將agent加入到K3s集群
$?INSTALL_K3S_SKIP_DOWNLOAD=true?\K3S_URL=https://myserver:6443?K3S_TOKEN=mynodetoken?\./install.sh

離線升級 K3s 版本,完成離線安裝 K3s 后,還可以通過腳本升級 K3s 版本,或啟用自動升級功能,以保持離線環(huán)境中的 K3s 版本與最新的 K3s 版本同步。

  • 升級 K3s 版本

#?通過腳本升級
#?https://github.com/rancher/k3s/releases
從Github頁面下載要升級到的K3s版本#?替換
#?復(fù)制并替換每個節(jié)點上/usr/local/bin中的舊K3s二進(jìn)制文件
$?mv?./k3s?/usr/local/bin/
$?chmod?755?/usr/local/bin/k3s
$?wget?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh#?重啟K3s服務(wù)
$?sudo?systemctl?restart?k3s.service

3.8 儀表盤及卸載

理解 Server 節(jié)點的安裝,以及注冊 Agent 節(jié)點的步驟!

推薦使用三種儀表盤工具,分別是對應(yīng)是 Kubernetes Dashboardkube-explorerRancher UI,其各自各有優(yōu)劣。

  • [1] Kubernetes Dashboard

#?部署Kubernetes儀表盤
$?GITHUB_URL=https://github.com/kubernetes/dashboard/releases
$?VERSION_KUBE_DASHBOARD=$(curl?-w?'%{url_effective}'?-I?-L?-s?-S?\${GITHUB_URL}/latest?-o?/dev/null?|?sed?-e?'s|.*/||')
$?sudo?k3s?kubectl?create?-f?https://raw.githubusercontent.com/kubernetes/dashboard/${VERSION_KUBE_DASHBOARD}/aio/deploy/recommended.yaml
#?儀表盤RBAC配置
#?本指南中創(chuàng)建的admin-user將在儀表盤中擁有管理權(quán)限
$?sudo?k3s?kubectl?create?\-f?dashboard.admin-user.yml?\-f?dashboard.admin-user-role.yml#?dashboard.admin-user.yml
apiVersion:?v1
kind:?ServiceAccount
metadata:name:?admin-usernamespace:?kubernetes-dashboard#?dashboard.admin-user-role.yml
apiVersion:?rbac.authorization.k8s.io/v1
kind:?ClusterRoleBinding
metadata:name:?admin-user
roleRef:apiGroup:?rbac.authorization.k8s.iokind:?ClusterRolename:?cluster-admin
subjects:-?kind:?ServiceAccountname:?admin-usernamespace:?kubernetes-dashboard
#?獲得Bearer-Token
$?sudo?k3s?kubectl?-n?kubernetes-dashboard?\describe?secret?admin-user-token?|?grep?'^token'#?本地訪問儀表盤
#?https://192.168.100.100:8443
#?https://www.escapelife.site/posts/180e93f1.html
#?https://www.escapelife.site/posts/538ec6b1.html
$?sudo?k3s?kubectl?proxy
$?sudo?kubectl?-n?kubernetes-dashboard?port-forward?\--address?0.0.0.0?svc/kubernets-dashboard?8443:443
#?升級儀表盤
$?sudo?k3s?kubectl?delete?ns?kubernetes-dashboard
$?GITHUB_URL=https://github.com/kubernetes/dashboard/releases
$?VERSION_KUBE_DASHBOARD=$(curl?-w?'%{url_effective}'?-I?-L?-s?-S?${GITHUB_URL}/latest?-o?/dev/null?|?sed?-e?'s|.*/||')
$?sudo?k3s?kubectl?apply?-f?https://raw.githubusercontent.com/kubernetes/dashboard/${VERSION_KUBE_DASHBOARD}/aio/deploy/recommended.yaml?-f?dashboard.admin-user.yml?-f?dashboard.admin-user-role.yml#?##?刪除儀表盤和admin-user配置
$?sudo?k3s?kubectl?delete?ns?kubernetes-dashboard
$?sudo?k3s?kubectl?delete?clusterrolebinding?kubernetes-dashboard
$?sudo?k3s?kubectl?delete?clusterrole?kubernetes-dashboard
  • [2] kube-explorer

    • kube-explorerK8S 的便攜式資源管理器,沒有任何依賴

    • 并提供了一個幾乎完全無狀態(tài)的 K8S 資源管理器

#?從發(fā)布頁面下載二進(jìn)制文件
#?https://github.com/cnrancher/kube-explorer#?運(yùn)行
#?--kubeconfig?可以不配置(自己可以找到)
$?./kube-explorer?--kubeconfig=/etc/rancher/k3s/kube.yaml?\--http-listen-port=9898?\--https-listen-port=0#?打開瀏覽器訪問
http://192.168.100.100:9898
  • [3] Rancher UI

    • 可以將 K3s 導(dǎo)入到 Rancher UI 中去管理

    • 官網(wǎng) 導(dǎo)入 K3s 集群 指導(dǎo)文檔

#?導(dǎo)入K3s集群時,Rancher會將其識別為K3s類型,并且附件額外功能
#?1.能夠升級K3s版本
#?2.可配置升級集群時升級的最大節(jié)點數(shù)
#?3.在主機(jī)詳情頁能夠查看啟動K3s集群時每個節(jié)點的配置參數(shù)和環(huán)境變量#?配置K3s集群以允許導(dǎo)入到Rancher
$?curl?-sfL?https://rancher-mirror.rancher.cn/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?sh?-s?-?\--write-kubeconfig-mode?644
  • [4] 卸載 K3s 服務(wù)

#?主節(jié)點
$?/usr/local/bin/k3s-uninstall.sh#?工作節(jié)點
$?/usr/local/bin/k3s-agent-uninstall.sh
#?包括docker等信息一并清理#!/bin/bashKUBE_SVC='
kubelet
kube-scheduler
kube-proxy
kube-controller-manager
kube-apiserver
'for?kube_svc?in?${KUBE_SVC};
do#?停止服務(wù)if?[[?`systemctl?is-active?${kube_svc}`?==?'active'?]];?thensystemctl?stop?${kube_svc}fi#?禁止服務(wù)開機(jī)啟動if?[[?`systemctl?is-enabled?${kube_svc}`?==?'enabled'?]];?thensystemctl?disable?${kube_svc}fi
done#?停止所有容器
docker?stop?$(docker?ps?-aq)#?刪除所有容器
docker?rm?-f?$(docker?ps?-qa)#?刪除所有容器卷
docker?volume?rm?$(docker?volume?ls?-q)#?卸載mount目錄
for?mount?in?$(mount?|?grep?tmpfs?|?grep?'/var/lib/kubelet'?|?awk?'{?print?$3?}')?/var/lib/kubelet?/var/lib/rancher;
doumount?$mount;
done#?備份目錄
mv?/etc/kubernetes?/etc/kubernetes-bak-$(date?+"%Y%m%d%H%M")
mv?/var/lib/etcd?/var/lib/etcd-bak-$(date?+"%Y%m%d%H%M")
mv?/var/lib/rancher?/var/lib/rancher-bak-$(date?+"%Y%m%d%H%M")
mv?/opt/rke?/opt/rke-bak-$(date?+"%Y%m%d%H%M")#?刪除殘留路徑
rm?-rf?/etc/ceph?\/etc/cni?\/opt/cni?\/run/secrets/kubernetes.io?\/run/calico?\/run/flannel?\/var/lib/calico?\/var/lib/cni?\/var/lib/kubelet?\/var/log/containers?\/var/log/kube-audit?\/var/log/pods?\/var/run/calico?\/usr/libexec/kubernetes#?清理網(wǎng)絡(luò)接口
no_del_net_inter='
lo
docker0
eth
ens
bond
'network_interface=`ls?/sys/class/net`for?net_inter?in?$network_interface;
doif?!?echo?"${no_del_net_inter}"?|?grep?-qE?${net_inter:0:3};?thenip?link?delete?$net_interfi
done#?清理殘留進(jìn)程
port_list='
80
443
6443
2376
2379
2380
8472
9099
10250
10254
'for?port?in?$port_list;
dopid=`netstat?-atlnup?|?grep?$port?|?awk?'{print?$7}'?|?awk?-F?'/'?'{print?$1}'?|?grep?-v?-?|?sort?-rnk2?|?uniq`if?[[?-n?$pid?]];?thenkill?-9?$pidfi
donekube_pid=`ps?-ef?|?grep?-v?grep?|?grep?kube?|?awk?'{print?$2}'`if?[[?-n?$kube_pid?]];?thenkill?-9?$kube_pid
fi#?清理Iptables表
##?注意:如果節(jié)點Iptables有特殊配置,以下命令請謹(jǐn)慎操作
sudo?iptables?--flush
sudo?iptables?--flush?--table?nat
sudo?iptables?--flush?--table?filter
sudo?iptables?--table?nat?--delete-chain
sudo?iptables?--table?filter?--delete-chain
systemctl?restart?docker

3.9 注意事項

理解 Server 節(jié)點的安裝,以及注冊 Agent 節(jié)點的步驟!

  • Helm

    • 如果需要使用 helm 操作 K3s 集群,需要創(chuàng)建 ~/.kube/conf 目錄

    • 需要執(zhí)行 cp /etc/rancher/k3s/k3s.yaml ~/.kube/config 命令

  • 自動部署的清單

    • 將由 rancher/helm-controller 在運(yùn)行時安裝

    • 目錄路徑:/var/lib/rancher/k3s/server/manifests

    • 目錄下面的每個 yaml 就代表這個一個需要啟動的服務(wù)

對于我們希望使用的組件,可以在啟動的時候禁用默認(rèn)組件,在手動部署你需要的一些組件(通常是放到一個指定目錄下面,隨著服務(wù)啟動自動拉起),從而達(dá)到靈活使用的目的。

#?查看所有Pod服務(wù)
#?比如helm/coredns也不是自帶的就是通過這個方式創(chuàng)建的
$?sudo?kubectl?get?pods?-A
  • 注冊 Agent 節(jié)點

    • 工作節(jié)點密碼存儲:/etc/rancher/node/password

    • 主節(jié)點的密碼存儲:/var/lib/rancher/k3s/server/cred/node-passwd

agent 節(jié)點運(yùn)行注冊命令,會和 server 節(jié)點發(fā)起 websocket 連接,然后會在工作節(jié)點上面創(chuàng)建一個隨機(jī)的密碼。然后會拿著這個密碼和工作節(jié)點的主機(jī)名,發(fā)送給主節(jié)點。然后主節(jié)點會將這個信息在保存(k8s secrets)起來,隨后的任何嘗試都必須使用相同的密碼。

#?工作節(jié)點的密碼信息(password+hostname)
$?sudo?cat?/etc/rancher/node/password#?查看主節(jié)點的密碼信息
#?https://docs.rancher.cn/docs/k3s/architecture/_index#注冊-agent-節(jié)點
$?sudo?kubectl?get?secret?k3s2.node-password.k3s?-o?yaml?-n?kube-system#?可以查看日志信息驗證這個信息的存在
$?sudo?tail?-f?200?/var/log/syslog?|?grep?k3s
#?發(fā)現(xiàn)節(jié)點信息提示NotReady狀態(tài)
#?可以嘗試刪除節(jié)點的密碼存儲信息,之后會自動獲取新的
$?sudo?kubectl?delete?secret?k3s2.node-password.k3s?-n?kube-system
  • 自定義存儲類型

集群啟動之后,默認(rèn)會啟動一個 local-path 的組件,用于提供服務(wù)掛載存儲使用,其默認(rèn)以 PVC 的形式。之后,將其存儲在 /var/lib/rancher/k3s/server/storageclass 目錄下面。

#?查看組件
$?sudo?kubectl?get?pods?-A#?查看對應(yīng)存儲
$?sudo?kubectl?get?storageclass#?可以使用參數(shù)修改默認(rèn)存儲地址
#?--default-local-storage-path&nbsp;value
$?curl?-sfL?http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh?|?\INSTALL_K3S_MIRROR=cn?\INSTALL_K3S_EXEC='--etcd-snapshot-schedule-cron?*&nbsp;*/5&nbsp;*&nbsp;*&nbsp;*'?\sh?-

4. K3S 集群升級

手動升級 + 自動升級

當(dāng)升級 K3s 時,K3s 服務(wù)會重啟或停止,但 K3s 容器會繼續(xù)運(yùn)行。要停止所有的 K3s 容器并重置容器的狀態(tài),可以使用 ?k3s-killall.sh 腳本。killall 腳本清理容器、K3s 目錄和網(wǎng)絡(luò)組件,同時也刪除了 iptables 鏈和所有相關(guān)規(guī)則。集群數(shù)據(jù)不會被刪除。

  • [1] 手動升級 - 使用安裝腳本升級 K3s

你可以通過使用安裝腳本升級 K3s,或者手動安裝所需版本的二進(jìn)制文件。

#?升級到最新stable版本
$?curl?-sfL?https://get.k3s.io?|?sh?-#?升級到latest版本
$?curl?-sfL?https://get.k3s.io?|?INSTALL_K3S_CHANNEL=latest?sh?-#?升級到v1.20的最新版本
$?curl?-sfL?https://get.k3s.io?|?INSTALL_K3S_CHANNEL="v1.20"?sh?-#?升級到指定版本
$?curl?-sfL?https://get.k3s.io?|?INSTALL_K3S_VERSION=vX.Y.Z-rc1?sh?-
  • [2] 手動升級 - 使用二進(jìn)制文件手動升級 K3s

你可以通過使用安裝腳本升級 K3s,或者手動安裝所需版本的二進(jìn)制文件。

#?從發(fā)布下載所需版本的K3s二進(jìn)制文件
https://github.com/rancher/k3s/releases#?將下載的二進(jìn)制文件復(fù)制到/usr/local/bin/k3s
$?mv?./k3s?/usr/local/bin/k3s#?停止舊的K3s二進(jìn)制文件
$?curl?-sfL?https://get.k3s.io?|?INSTALL_K3S_CHANNEL="v1.20"?sh?-#?啟動新的K3s二進(jìn)制文件
$?curl?-sfL?https://get.k3s.io?|?INSTALL_K3S_VERSION=vX.Y.Z-rc1?sh?-

你可以使用 Ranchersystem-upgrad-controller 來管理 K3s 集群升級。這是一種 Kubernetes 原生的集群升級方法。它利用自定義資源定義(CRD)、計劃和控制器,根據(jù)配置的計劃安排升級。

控制器通過監(jiān)控計劃和選擇要在其上運(yùn)行升級 job 的節(jié)點來調(diào)度升級,計劃通過標(biāo)簽選擇器定義哪些節(jié)點應(yīng)該升級。當(dāng)一個 job 成功運(yùn)行完成后,控制器會給它運(yùn)行的節(jié)點打上相應(yīng)的標(biāo)簽。

  • [3] 自動升級 - 使用二進(jìn)制文件手動升級 K3s

    • k3s-upgrade

    • system-upgrade-controller

#?將system-upgrade-controller安裝到您的集群中
$?kubectl?apply?-f?https://github.com/rancher/system-upgrade-controller/releases/download/v0.6.2/system-upgrade-controller.yaml
#?配置計劃
#?建議您最少創(chuàng)建兩個計劃
#?升級server節(jié)點的計劃和升級agent節(jié)點的計劃#?Server?plan
apiVersion:?upgrade.cattle.io/v1
kind:?Plan
metadata:name:?server-plannamespace:?system-upgrade
spec:concurrency:?1cordon:?truenodeSelector:matchExpressions:-?key:?node-role.kubernetes.io/master?#?選擇主節(jié)點operator:?Invalues:-?"true"serviceAccountName:?system-upgradeupgrade:image:?rancher/k3s-upgradeversion:?v1.20.4+k3s1#?Agent?plan
apiVersion:?upgrade.cattle.io/v1
kind:?Plan
metadata:name:?agent-plannamespace:?system-upgrade
spec:concurrency:?1cordon:?truenodeSelector:matchExpressions:-?key:?node-role.kubernetes.io/master?#?選擇工作節(jié)點operator:?DoesNotExistprepare:args:-?prepare-?server-planimage:?rancher/k3s-upgradeserviceAccountName:?system-upgradeupgrade:image:?rancher/k3s-upgradeversion:?v1.20.4+k3s1
#?自動升級到最新版本(不指定版本)
apiVersion:?upgrade.cattle.io/v1
kind:?Plan
...
spec:...upgrade:image:?rancher/k3s-upgradechannel:?https://update.k3s.io/v1-release/channels/stable

K3S集群升級

5. K3S 備份恢復(fù)

SQLite + etcd + 外部數(shù)據(jù)存儲

  • [1] 使用嵌入式 SQLite 數(shù)據(jù)存儲進(jìn)行備份和恢復(fù)

#?方式1:備份/恢復(fù)數(shù)據(jù)目錄#?備份
$?cp?-rf?/var/lib/rancher/k3s/server/db?/opt/db#?恢復(fù)
$?systemctl?stop?k3s
$?rm?-rf?/var/lib/rancher/k3s/server/db
$?cp?-rf?/opt/db?/var/lib/rancher/k3s/server/db
$?systemctl?start?k3s
#?方式2:通過 SQLite cli#?備份
sqlite3?/var/lib/rancher/k3s/server/db/state.db
SQLite?version?3.22.0?2018-01-22?18:45:57
Enter?".help"?for?usage?hints.
sqlite>?.backup?"/opt/kine.db"
sqlite>?.exit#?恢復(fù)
$?sudo?systemctl?stop?k3ssqlite3?/var/lib/rancher/k3s/server/db/state.db
SQLite?version?3.22.0?2018-01-22?18:45:57
Enter?".help"?for?usage?hints.
sqlite>?.restore?'/opt/kine.db'
sqlite>?.exit$?sudo?systemctl?start?k3s

當(dāng)使用外部數(shù)據(jù)存儲時,備份和恢復(fù)操作是在 K3s 之外處理的。數(shù)據(jù)庫管理員需要對外部數(shù)據(jù)庫進(jìn)行備份,或者從快照或轉(zhuǎn)儲中進(jìn)行恢復(fù)。我們建議將數(shù)據(jù)庫配置為執(zhí)行定期快照。

  • [2] 使用外部數(shù)據(jù)存儲進(jìn)行備份和恢復(fù)

#?備份
$?mysqldump?-uroot?-p?--all-databases?--master-data?>?k3s-dbdump.db#?恢復(fù)
$?systemctl?stop?k3s
$?mysql?-uroot?-p??<?k3s-dbdump.db
$?systemctl?start?k3s
  • [3] 使用嵌入式 etcd 數(shù)據(jù)存儲進(jìn)行備份和恢復(fù)

#?創(chuàng)建快照(K3s默認(rèn)啟用快照)
#?快照目錄默認(rèn):?/var/lib/rancher/k3s/server/db/snapshots#?要配置快照間隔或保留的快照數(shù)量
--etcd-disable-snapshots???????禁用自動etcd快照
--etcd-snapshot-schedule-cron ?定時快照的時間點;認(rèn)值為每12小時觸發(fā)一次
--etcd-snapshot-retention ?????保留的快照數(shù)量;默認(rèn)值為5
--etcd-snapshot-dir????????????保存數(shù)據(jù)庫快照的目錄路徑
--cluster-reset ???????????????忘記所有的對等體;成為新集群的唯一成員
--cluster-reset-restore-path???要恢復(fù)的快照文件的路徑

當(dāng) K3s 從備份中恢復(fù)時,舊的數(shù)據(jù)目錄將被移動到/var/lib/rancher/k3s/server/db/etcd-old/。然后 K3s 會嘗試通過創(chuàng)建一個新的數(shù)據(jù)目錄來恢復(fù)快照,然后從一個帶有一個 etcd 成員的新 K3s 集群啟動 etcd

#?從快照恢復(fù)集群
#?使用--cluster-reset選項運(yùn)行K3s
#?同時給出--cluster-reset-restore-path
$?./k3s?server?\--cluster-reset?\--cluster-reset-restore-path=<PATH-TO-SNAPSHOT>

6. K3S 卷和存儲

介紹了如何通過 local storage provider 或 Longhorn 來設(shè)置持久存儲。

當(dāng)部署一個需要保留數(shù)據(jù)的應(yīng)用程序時,你需要創(chuàng)建持久存儲。持久存儲允許您從運(yùn)行應(yīng)用程序的 pod 外部存儲應(yīng)用程序數(shù)據(jù)。即使應(yīng)用程序的 pod 發(fā)生故障,這種存儲方式也可以使您維護(hù)應(yīng)用程序數(shù)據(jù)。

  • [1] 設(shè)置 Local Storage Provider 支持

K3s 自帶 RancherLocal Path Provisioner(LPP),這使得能夠使用各自節(jié)點上的本地存儲來開箱即用地創(chuàng)建 pvc。根據(jù)用戶配置,LPP 將自動在節(jié)點上創(chuàng)建基于 hostPath 的持久卷。它利用了 K8sLocal Persistent Volume 特性引入的特性,但它比 K8s 中內(nèi)置的 ?local pv 特性更簡單的解決方案。

#?pvc.yaml
apiVersion:?v1
kind:?PersistentVolumeClaim
metadata:name:?local-path-pvcnamespace:?default
spec:accessModes:-?ReadWriteOncestorageClassName:?local-pathresources:requests:storage:?2Gi#?pod.yaml
apiVersion:?v1
kind:?Pod
metadata:name:?volume-testnamespace:?default
spec:containers:-?name:?volume-testimage:?nginx:stable-alpineimagePullPolicy:?IfNotPresentvolumeMounts:-?name:?volvmountPath:?/dataports:-?containerPort:?80volumes:-?name:?volvpersistentVolumeClaim:claimName:?local-path-pvc
#?應(yīng)用yaml服務(wù)
$?kubectl?create?-f?pvc.yaml?pod.yaml#?確認(rèn)PV和PVC已創(chuàng)建
$?kubectl?get?pv
$?kubectl?get?pvc
  • [2] 設(shè)置 Longhorn 支持

K3s 支持 Longhorn(是 K8s 的一個開源分布式塊存儲系統(tǒng))。

#?安裝Longhorn
#?將被安裝在命名空間longhorn-system中
$?kubectl?apply?-f?https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml#?pvc.yaml
apiVersion:?v1
kind:?PersistentVolumeClaim
metadata:name:?longhorn-volv-pvc
spec:accessModes:-?ReadWriteOncestorageClassName:?longhornresources:requests:storage:?2Gi#?pod.yaml
apiVersion:?v1
kind:?Pod
metadata:name:?volume-testnamespace:?default
spec:containers:-?name:?volume-testimage:?nginx:stable-alpineimagePullPolicy:?IfNotPresentvolumeMounts:-?name:?volvmountPath:?/dataports:-?containerPort:?80volumes:-?name:?volvpersistentVolumeClaim:claimName:?longhorn-volv-pvc
#?應(yīng)用yaml服務(wù)
$?kubectl?create?-f?pvc.yaml?pod.yaml#?確認(rèn)PV和PVC已創(chuàng)建
$?kubectl?get?pv
$?kubectl?get?pvc

7. K3S 網(wǎng)絡(luò)相關(guān)

簡單介紹下 K3s 相關(guān)的網(wǎng)絡(luò)配置組件!

  • CoreDNS

CoreDNS 是在 agent 節(jié)點啟動時部署的。要禁用,請在每臺服務(wù)器上運(yùn)行 --disable coredns 選項。如果你不安裝 CoreDNS,你將需要自己安裝一個集群 DNS 提供商。

#?如何修改coredns參數(shù)
#?/var/lib/rancher/k3s/server/manifests/coredns.yaml
#?該文件重啟K3s服務(wù)的話會導(dǎo)致coredns配置重新初始化
1.將coredns.yaml保存到其他目錄
2.通過?--disable?coredns?禁用coredns
3.復(fù)制coredns.yaml到/var/lib/rancher/k3s/server/manifests/目錄并修改參數(shù)
  • Traefik Ingress Controller

啟動 server 時,默認(rèn)情況下會部署 Traefik,對該文件的任何修改都會以類似 kubectl apply 的方式自動部署到 Kubernetes 中,將使用主機(jī)上的 80443 端口。

#?操作和上面基本是一致的
#?請使用?--disable?traefik?選項啟動每個server
#?/var/lib/rancher/k3s/server/manifests/traefik.yaml
#?如何啟用?treafik2?dashboard
#?http://traefik.example.com/dashboard#?Note:?in?a?kubernetes?secret?the?string?(e.g.?generated?by?htpasswd)?must?be?base64-encoded?first.
#?To?create?an?encoded?user:password?pair,?the?following?command?can?be?used:
#?htpasswd?-nb?admin?admin?|?openssl?base64apiVersion:?v1
kind:?Secret
metadata:name:?authsecretnamespace:?default
data:users:?|2YWRtaW46JGFwcjEkLkUweHd1Z0EkUjBmLi85WndJNXZWRFMyR2F2LmtELwoK---
apiVersion:?traefik.containo.us/v1alpha1
kind:?IngressRoute
metadata:name:?traefik-dashboard
spec:routes:-?match:?Host(`traefik.example.com`)?&&?(PathPrefix(`/api`)?||?PathPrefix(`/dashboard`))kind:?Ruleservices:-?name:?api@internalkind:?TraefikServicemiddlewares:-?name:?auth---
apiVersion:?traefik.containo.us/v1alpha1
kind:?Middleware
metadata:name:?auth
spec:basicAuth:secret:?authsecret?#?Kubernetes?secret?named?"secretName"
  • Service Load Balancer

K3s 提供了一個名為 Klipper Load Balancer 的負(fù)載均衡器,它可以使用可用的主機(jī)端口。允許創(chuàng)建 LoadBalancer 類型的 Service,但不包括 LB 的實現(xiàn)。某些 LB 服務(wù)需要云提供商,例如 Amazon EC2。相比之下,K3s service LB 使得可以在沒有云提供商的情況下使用 LB 服務(wù)。

8. K3S 與 Helm

HelmKubernetes 的包管理工具。Helm ChartKubernetes YAML 清單文件提供了模板化語法,可以通過 Helm 安裝對應(yīng)的 chartK3s 不需要任何特殊的配置就可以使用 Helm 命令行工具。

  • 自動部署 Helm charts

/var/lib/rancher/k3s/server/manifests 中找到的任何 Kubernetes 清單將以類似 kubectl apply 的方式自動部署到 K3s。以這種方式部署的 manifests 是作為 AddOn 自定義資源來管理的。你會發(fā)現(xiàn)打包組件的 AddOns,如 CoreDNSLocal-Storage 等。AddOns 是由部署控制器自動創(chuàng)建的,并根據(jù)它們在 manifests 目錄下的文件名命名。

#?查看運(yùn)行AddOn資源
$?kubectl?get?addon?-A#?也可以將Helm-Chart作為AddOns部署
https://github.com/rancher/helm-controller/
  • 使用 Helm CRD

HelmChart CRD 捕獲了大多數(shù)你通常會傳遞給 helm 命令行工具的選項。下面是一個例子,說明如何從默認(rèn)的 Chart 資源庫中部署 Grafana,覆蓋一些默認(rèn)的 Chart 值。請注意,HelmChart 資源本身在 kube-system 命名空間,但 Chart 資源將被部署到 monitoring 命名空間。

apiVersion:?helm.cattle.io/v1
kind:?HelmChart
metadata:name:?grafananamespace:?kube-system
spec:chart:?stable/grafanatargetNamespace:?monitoringset:adminPassword:?"NotVerySafePassword"valuesContent:?|-image:tag:?masterenv:GF_EXPLORE_ENABLED:?trueadminUser:?adminsidecar:datasources:enabled:?true

9. K3S 高級選項

包含高級選項和配置

  • 證書輪換

默認(rèn)情況下,K3s 的證書在 12 個月內(nèi)過期。如果證書已經(jīng)過期或剩余的時間不足 90 天,則在 K3s 重啟時輪換證書。

#?查詢K3s證書過期時間
$?for?i?in?`ls?/var/lib/rancher/k3s/server/tls/*.crt`;?\do?\echo?$i;\openssl?x509?-enddate?-noout?-in?$i;?\done#?修改系統(tǒng)時間為證書過期前90天或證書過期后
$?timedatectl?set-ntp?no
$?date?-s?20220807#?重啟K3s服務(wù)
$?service?k3s?restart
  • Red Hat 和 CentOS 的額外準(zhǔn)備

建議運(yùn)行以下命令,關(guān)閉 firewalld 防火墻。

$?sudo?systemctl?disable?firewalld?--now

10. 參考鏈接

送人玫瑰,手有余香!

  • [1] 文檔教程

    • K3s 中文文檔 - 國外

    • K3s 中文文檔 - 國內(nèi)

    • K3s 國內(nèi)鏡像站 - 加速

    • K3s 系列教程 - 官方制作

  • [2] 代碼地址

    • K3s 倉庫地址 - Github

  • [3] 周邊項目

    • K3s 周邊項目 - k3os

? ? ?完全基于?K8S?管理的輕量級操作系統(tǒng)

  • K3s 周邊項目 - autok3s

? ? 用于簡化?K3s?集群部署和管理的輕量級工具

? ? 即在阿里云和?aws?等云服務(wù)器上面部署?k3s

  • K3s 周邊項目 - k3d

    可以在?k3d?創(chuàng)建容器化的?k3s?集群

    可以使用容器在單臺計算機(jī)上啟動多節(jié)點?k3s?集群

  • K3s 周邊項目 - harvester

    基于?K8S?構(gòu)建的開源超融合基礎(chǔ)架構(gòu)(HCI)軟件

    旨在替換?vSphere?和?Nutanix?的開源替代方案

  • K3s 周邊項目 - octopus

    主要用于邊緣計算相關(guān)

    用于?K8S?和?k3s?的輕量級云原生設(shè)備管理系統(tǒng)

    集群可以將邊緣設(shè)備作為自定義?k8s?資源進(jìn)行管理

本文轉(zhuǎn)載自:「 Escape 的博客 」,原文:https://url.hi-linux.com/ytP71 ,版權(quán)歸原作者所有。歡迎投稿,投稿郵箱: editor@hi-linux.com。

最近,我們建立了一個技術(shù)交流微信群。目前群里已加入了不少行業(yè)內(nèi)的大神,有興趣的同學(xué)可以加入和我們一起交流技術(shù),在 「奇妙的 Linux 世界」 公眾號直接回復(fù) 「加群」 邀請你入群。

你可能還喜歡

點擊下方圖片即可閱讀

超贊,又一 Markdown 神器!可直接畫思維導(dǎo)圖,還支持 VSCode 和 Vim


點擊上方圖片,『美團(tuán)|餓了么』外賣紅包天天免費領(lǐng)

更多有趣的互聯(lián)網(wǎng)新鮮事,關(guān)注「奇妙的互聯(lián)網(wǎng)」視頻號全了解!

總結(jié)

以上是生活随笔為你收集整理的轻量级 Kubernetes 集群发行版 K3s 完全进阶指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。