K3s
是一個(gè)輕量級的 Kubernetes
發(fā)行版,它針對邊緣計(jì)算、物聯(lián)網(wǎng)等場景進(jìn)行了高度優(yōu)化。
-
CNCF
認(rèn)證的Kubernetes
發(fā)行版 -
支持
X86_64
,ARM64
,ARMv7
平臺 -
單一進(jìn)程包含
Kubernetes master
,kubelet
和containerd
1. K3S 工具介紹
為你提供 k3s 的產(chǎn)品介紹
K3s
有以下增強(qiáng)功能:
-
打包為單個(gè)二進(jìn)制文件
-
把
K8S
相關(guān)的組件,比如kube-api
/kube-manager
都打包到同一個(gè)二進(jìn)制文件里面,這樣的話,只需要啟動這個(gè)文件就可以快速的啟動對應(yīng)的組件。
-
把
-
使用基于 sqlite3 的默認(rèn)存儲機(jī)制
-
同時(shí)支持使用
etcd3
、MySQL
和PostgreSQL
作為存儲機(jī)制。
-
同時(shí)支持使用
-
默認(rèn)情況下是安全的
-
在
K3s
中有一個(gè)默認(rèn)的證書管理機(jī)制(默認(rèn)一年有效期),也有一個(gè)可以輪轉(zhuǎn)證書的功能(就是在小于九十天之內(nèi)重啟K3s
的話,就會自動續(xù)一年)。
-
在
-
功能強(qiáng)大的
batteries-included
功能- 就是雖然有些服務(wù)本身這個(gè)二進(jìn)制文件并沒有提供,但是可以通過內(nèi)置的服務(wù),將配置文件放到指定的目錄下面,就可以在啟動的時(shí)候一并將該服務(wù)啟動或替換默認(rèn)組件。
-
所有
K8S control-plane
組件都封裝在單個(gè)二進(jìn)制文件和進(jìn)程中- 因?yàn)榉庋b在二進(jìn)制文件中,所以啟動的時(shí)候只有一個(gè)進(jìn)程。好處在于只需要管理這個(gè)單一進(jìn)程就可以了,同時(shí)也具備操作復(fù)雜集群的能力。
-
最大程度減輕了外部依賴性
-
即稍新一點(diǎn)的
Linux
內(nèi)核就可以了(需要kernel
和cgroup
掛載)。
-
即稍新一點(diǎn)的
之所以叫做 K3S
是因?yàn)橄M惭b的 K8S
在內(nèi)存占用方面只是一半的大小,而一半大的東西就是一個(gè) 5
個(gè)字母的單詞,簡寫為 K3S
。
-
生命周期
-
同時(shí)支持
3
個(gè)K8s
版本,支持的生命周期與K8s
相同 - 可以參考: Kubernetes 版本及版本偏差支持策略 進(jìn)行學(xué)習(xí)
-
同時(shí)支持
-
更新周期
-
當(dāng)
K8s
更新新版本后,一般K3s
在一周內(nèi)同步更新 -
可以通過 這個(gè)鏈接 獲取
latest
/stable
/testing
版本 -
我們默認(rèn)安裝的是
stable
版本,可以運(yùn)行通過命令進(jìn)行查看
-
當(dāng)
-
命名規(guī)范
-
v1.20.4+k3s1:
v1.20.4
為K8s
版本,k3s1
為補(bǔ)丁版本
-
v1.20.4+k3s1:
#K3s軟件包需要的依賴項(xiàng)
containerd#容器運(yùn)行時(shí)(可以使用docker替代)
Flannel#網(wǎng)絡(luò)
CoreDNS#DNS
CNI#CNI
Traefik#默認(rèn)的controller服務(wù)(apisix/ingress-controller)
iptables#主機(jī)實(shí)用程序
serviceloadbalancer#嵌入式服務(wù)負(fù)載均衡器
networkpolicycontroller#嵌入式網(wǎng)絡(luò)策略控制器
#K3s適用于以下場景
CI
Development
ARM
嵌入K8s
物聯(lián)網(wǎng)-IoT
邊緣計(jì)算-Edge
與此同時(shí),Rancher
中國團(tuán)隊(duì)推出了一款針對 K3s
的效率提升工具:AutoK3s。只需要輸入一行命令,即可快速創(chuàng)建 K3s
集群并添加指定數(shù)量的 master
節(jié)點(diǎn)和 worker
節(jié)點(diǎn)。
2. K3S 快速入門
原理就是,將 K8S 的相關(guān)組件封裝到 K3S 的二進(jìn)制文件中去!
原理就是,將 K8S
的相關(guān)組件封裝到 K3S
的二進(jìn)制文件中去,然后啟動這二進(jìn)制文件就可以啟動一個(gè)成熟的 K8S
集群。我們可以看到 K3S
和 K8S
的架構(gòu)基本差不多,其中 k3s-server
對應(yīng)這個(gè) control-plane
,而 k3s-agent
對應(yīng)著 node
節(jié)點(diǎn)。
可以看到 k3s
中使用的默認(rèn)存儲是 SQLite
(自帶),且默認(rèn)的網(wǎng)絡(luò)使用的是 Flannel
(自帶)。當(dāng)服務(wù)端和客戶端都啟動之后,通過 Tunnel-Proxy
這個(gè)組件進(jìn)行通信,通過這個(gè)通道去管理網(wǎng)絡(luò)流量。在 agent
節(jié)點(diǎn)中,通過 kubelet
操作 contaninerd
來創(chuàng)建對應(yīng) Pod
。
- K3s 架構(gòu)
- K8s 架構(gòu)
國內(nèi)的話,建議使用官方提供的 鏡像地址,這樣不但可以加速本地 K3s
的時(shí)候,而且方便部署和更新服務(wù)。這也是為什么建議國內(nèi)使用 k3s-install.sh
部署服務(wù)的原因,因?yàn)槠鋬?nèi)部使用的地址都是從國內(nèi)去獲取的。
3. K3S 安裝事項(xiàng)
3.1 安裝指南
理解 Server 節(jié)點(diǎn)的安裝,以及注冊 Agent 節(jié)點(diǎn)的步驟!
雖然可以通過下載二進(jìn)制文件進(jìn)行服務(wù)端和工作節(jié)點(diǎn)的運(yùn)行(./k3s server
),但是一旦我們退出進(jìn)程,之前創(chuàng)建的節(jié)點(diǎn)也就立即銷毀了,所以還是建議使用腳本進(jìn)行安裝。
#主節(jié)點(diǎn)
$./k3sserver
#工作節(jié)點(diǎn)
$./k3sagentK3S_URL=xxxK3S_TOKEN=xxx
#清除垃圾文件
$rm-rf/etc/rancher/var/lib/rancher
- 鏡像加速
#添加配置
$cat>>/etc/rancher/k3s/registries.yaml<"docker.io":
endpoint:
-"https://fogjl973.mirror.aliyuncs.com"
-"https://registry-1.docker.io"
EOF
#重啟服務(wù)
$sudosystemctlrestartk3s
#是否生效
$sudocrictlinfo|grep-A2"endpoint"
K3s
提供了一個(gè)安裝腳本,可以方便的在 systemd
或 openrc
的系統(tǒng)上將其作為服務(wù)安裝。運(yùn)行此安裝后,K3s
服務(wù)將被配置為在節(jié)點(diǎn)重啟后或進(jìn)程崩潰或被殺死時(shí)自動重啟。
-
安裝內(nèi)容
-
kubectl
、crictl
、ctr
-
k3s-killall.sh
、k3s-uninstall.sh
-
-
執(zhí)行操作
-
將
kubeconfig
文件寫入到/etc/rancher/k3s/k3s.yaml
里面 -
由
K3s
安裝的kubectl
工具將自動使用該文件的配置來運(yùn)行 -
其他機(jī)器可以通過復(fù)制這個(gè)配置文件并修改
server
地址來操作K3s
集群
-
將
-
主節(jié)點(diǎn) - 192.168.100.100
#安裝腳本
#https://get.k3s.io
$curl-sfLhttps://get.k3s.io|sh-
#建議使用這個(gè)安裝腳本(國內(nèi)化了)
$curl-sfLhttps://rancher-mirror.rancher.cn/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cnK3S_NODE_NAME=k3s1
K3S_KUBECONFIG_OUTPUT=/home/escape/.kube/config
INSTALL_K3S_EXEC="--docker"sh-
#查找stable分支版本信息
[INFO]Findingreleaseforchannelstable
[INFO]Usingv1.23.6+k3s1asrelease
#獲取國內(nèi)鏡像版本地址
[INFO]Downloadinghashhttps://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/sha256sum-amd64.txt
[INFO]Downloadingbinaryhttps://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/k3s
[INFO]Verifyingbinarydownload
#安裝k3s二進(jìn)制工具并鏈接相關(guān)工具(內(nèi)置)
[INFO]Installingk3sto/usr/local/bin/k3s
[INFO]SkippinginstallationofSELinuxRPM
[INFO]Creating/usr/local/bin/kubectlsymlinktok3s
[INFO]Creating/usr/local/bin/crictlsymlinktok3s
[INFO]Skipping/usr/local/bin/ctrsymlinktok3s,commandexistsinPATHat/usr/bin/ctr
#安裝清除和卸載k3s生成的配置和工具
[INFO]Creatingkillallscript/usr/local/bin/k3s-killall.sh
[INFO]Creatinguninstallscript/usr/local/bin/k3s-uninstall.sh
#常見了兩個(gè)systemd的配置
[INFO]env:Creatingenvironmentfile/etc/systemd/system/k3s.service.env
[INFO]systemd:Creatingservicefile/etc/systemd/system/k3s.service
[INFO]systemd:Enablingk3sunit
Createdsymlink/etc/systemd/system/multi-user.target.wants/k3s.service→/etc/systemd/system/k3s.service.
#啟動k3s服務(wù)
[INFO]systemd:Startingk3s
- 工作節(jié)點(diǎn) - 192.168.100.101
#工作節(jié)點(diǎn)上安裝并將它們添加到集群
#https://docs.rancher.cn/docs/k3s/architecture/_index#注冊-agent-節(jié)點(diǎn)
$curl-sfLhttps://get.k3s.io|
K3S_URL=https://myserver:6443
K3S_TOKEN=mynodetokensh-
#建議使用這個(gè)安裝命令(國內(nèi)化了)
#K3S_URL:會使K3s以worker模式運(yùn)行
#K3S_TOKEN:使用的值存儲在你的服務(wù)器節(jié)點(diǎn)上
#K3S_NODE_NAME:為每個(gè)節(jié)點(diǎn)提供一個(gè)有效且唯一的主機(jī)名
$curl-sfLhttps://rancher-mirror.rancher.cn/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cnK3S_NODE_NAME=k3s2
K3S_KUBECONFIG_OUTPUT=/home/escape/.kube/config
K3S_URL=https://192.168.100.100:6443
K3S_TOKEN=mynodetokensh-
#mynodetoken
$sudocat/var/lib/rancher/k3s/server/token
#查找stable分支版本信息
[INFO]Findingreleaseforchannelstable
[INFO]Usingv1.23.6+k3s1asrelease
#獲取國內(nèi)鏡像版本地址
[INFO]Downloadinghashhttps://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/sha256sum-amd64.txt
[INFO]Downloadingbinaryhttps://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/k3s
[INFO]Verifyingbinarydownload
#安裝k3s二進(jìn)制工具并鏈接相關(guān)工具(內(nèi)置)
[INFO]Installingk3sto/usr/local/bin/k3s
[INFO]Creating/usr/local/bin/kubectlsymlinktok3s
[INFO]Creating/usr/local/bin/crictlsymlinktok3s
[INFO]Skipping/usr/local/bin/ctrsymlinktok3s
#安裝清除和卸載k3s生成的配置和工具
[INFO]Creatingkillallscript/usr/local/bin/k3s-agent-killall.sh
[INFO]Creatinguninstallscript/usr/local/bin/k3s-agent-uninstall.sh
#常見了兩個(gè)systemd的配置
[INFO]env:Creatingenvironmentfile/etc/systemd/system/k3s-agent.service.env
[INFO]systemd:Creatingservicefile/etc/systemd/system/k3s-agent.service
[INFO]systemd:Enablingk3s-agentunit
Createdsymlink/etc/systemd/system/multi-user.target.wants/k3s-agent.service→/etc/systemd/system/k3s-agent.service.
#啟動k3s服務(wù)
[INFO]systemd:Startingk3s-agent
3.2 配置要求
理解 Server 節(jié)點(diǎn)的安裝,以及注冊 Agent 節(jié)點(diǎn)的步驟!
-
[1] 先決條件
- 選擇上,兩個(gè)節(jié)點(diǎn)不能有相同的主機(jī)名
- 不修改主機(jī)名可以通過添加隨機(jī)后綴或指定主機(jī)名
#為每個(gè)節(jié)點(diǎn)添加隨機(jī)后綴
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cnK3S_URL=https://192.168.100.100:6443
K3S_TOKEN=xxxsh-s---with-node-id
#為每個(gè)節(jié)點(diǎn)指定主機(jī)名
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
K3S_NODE_NAME="k3s2"INSTALL_K3S_MIRROR=cn
K3S_URL=https://192.168.64.3:6443K3S_TOKEN=xxxsh-
#為每個(gè)節(jié)點(diǎn)指定主機(jī)名
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cnK3S_URL=https://192.168.64.3:6443
K3S_TOKEN=xxxsh-s---node-namek3s2
-
[2] 硬件信息
-
操作系統(tǒng):可以在大多數(shù)現(xiàn)代
Linux
系統(tǒng)上運(yùn)行 -
磁盤設(shè)備:
K3s
的性能取決于數(shù)據(jù)庫的性能(建議使用SSD
硬盤) -
網(wǎng)絡(luò)相關(guān):
K3s Server
節(jié)點(diǎn)的入站規(guī)則,所有出站流量都是允許的
-
操作系統(tǒng):可以在大多數(shù)現(xiàn)代
協(xié)議 | 端口 | 源 | 描述 |
---|---|---|---|
TCP | 6443 | K3s agent 節(jié)點(diǎn) | Kubernetes API Server |
UDP | 8472 | K3s server 和 agent 節(jié)點(diǎn) | 僅對 Flannel VXLAN 需要 |
TCP | 10250 | K3s server 和 agent 節(jié)點(diǎn) | Kubelet metrics |
TCP | 2379-2380 | K3s server 節(jié)點(diǎn) | 只有嵌入式 etcd 高可用才需要 |
-
[3] 安裝選項(xiàng)
- 官方安裝參數(shù)文檔
- 安裝選項(xiàng)示例演示
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)程工具 |
#其實(shí)就把對應(yīng)參數(shù)加到systemd配置文件里面去了
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC="--docker"sh-
#自動化部署(不用獲取token值了)
#主節(jié)點(diǎn)和工作節(jié)點(diǎn)使用我們指定的key來通信
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
K3S_TOKEN=rancher-k3ssh-
$sudocat/var/lib/rancher/k3s/server/token
-
[4] 其他說明
-
運(yùn)行
agent
時(shí)還必須設(shè)置K3S_TOKEN
-
以
K3S_
開頭的環(huán)境變量將被保留,供systemd/openrc
使用 -
沒有明確設(shè)置
exec
并設(shè)置K3S_URL
的話會將命令默認(rèn)為工作節(jié)點(diǎn)
-
運(yùn)行
3.3 命令參數(shù)
理解 Server 節(jié)點(diǎn)的安裝,以及注冊 Agent 節(jié)點(diǎn)的步驟!
在整個(gè) K3s 文檔中,你會看到一些選項(xiàng)可以作為命令標(biāo)志和環(huán)境變量傳遞進(jìn)來,那該如何使用標(biāo)志和環(huán)境變量呢?
- [1] 使用標(biāo)志和環(huán)境變量
#使用標(biāo)志
$curl-sfLhttps://get.k3s.io|K3S_KUBECONFIG_MODE="644"sh-s-
$curl-sfLhttps://get.k3s.io|sh-s---write-kubeconfig-mode644
#環(huán)境變量
$curl-sfLhttps://get.k3s.io|
INSTALL_K3S_EXEC="--flannel-backendnone"sh-s-
$curl-sfLhttps://get.k3s.io|
sh-s-server--flannel-backendnone
- [2] K3s Server/Agent - 常用配置
#write-kubeconfig
#將管理客戶端的kubeconfig寫入這個(gè)文件
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
K3S_KUBECONFIG_OUTPUT=/root/.kube/config
sh-
#使用docker作為容器運(yùn)行時(shí)
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC="--docker"sh-
#指定運(yùn)行時(shí)工具
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC="--container-runtime-endpointcontainerd"
sh-
#設(shè)置私有鏡像倉庫配置文件
#默認(rèn)配置文件:/etc/rancher/k3s/registries.yaml
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC="--private-registryxxx"
sh-
#針對多網(wǎng)卡主機(jī)安裝K3s集群
#默認(rèn)多網(wǎng)卡會使用默認(rèn)網(wǎng)關(guān)的那個(gè)卡
$rout-n
#K3sserver
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC="--node-ip=192.168.100.100"
sh-
#K3sagent
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
K3S_URL=https://192.168.99.211:6443K3S_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)程集群
#或者部署多個(gè)Server并使用LB進(jìn)行負(fù)責(zé),就需要保留公網(wǎng)地址
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC="--tls-san1.1.1.1"
sh-
#獲取配置
$kubectlgetsecretk3s-serving-nkube-system-oyaml
#然后本機(jī)復(fù)制公網(wǎng)主節(jié)點(diǎn)對應(yīng)的yaml文件即可本地操作了
$scpci@1.1.1.1:/etc/rancher/k3s/k3s.yaml~/.kube/config
#修改啟動的服務(wù)對應(yīng)配置(調(diào)整節(jié)點(diǎn)的啟動的最大Pod數(shù)量)
$curl-sfLhttp://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-sfLhttp://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-sfLhttp://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-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC='--data-dir=/opt/k3s-data'
sh-
#禁用組件
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC='--disabletraefik'
sh-
#自己加自己需要的服務(wù)
$ls/var/lib/rancher/k3s/server/manifests
$kubectlgetpods-A|greptraefik
#添加label和taint標(biāo)識
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC='--node-labelfoo=bar,hello=world
--node-taintkey1=value1:NoExecute'
sh-
#查看一下
$kubectldescribenodes
- [3] K3s Server/Agent - 數(shù)據(jù)庫選項(xiàng)
#指定數(shù)據(jù)源名稱
#標(biāo)志位:--datastore-endpointvalue
#環(huán)境變量:K3S_DATASTORE_ENDPOINT
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC='--datastore-endpointetcd'
sh-
#cron規(guī)范中的快照間隔時(shí)間
#--etcd-snapshot-schedule-cronvalue
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC='--etcd-snapshot-schedule-cron**/5***'
sh-
3.4 網(wǎng)絡(luò)選項(xiàng)
理解 Server 節(jié)點(diǎn)的安裝,以及注冊 Agent 節(jié)點(diǎn)的步驟!
默認(rèn)情況下,K3s
將以 flannel
作為 CNI
運(yùn)行,使用 VXLAN
作為默認(rèn)后端,CNI
和默認(rèn)后端都可以通過參數(shù)修改。要啟用加密,請使用下面的 IPSec
或 WireGuard
選項(xiàng)。
#默認(rèn)安裝K3s之后的網(wǎng)絡(luò)配置
$sudocat/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 選項(xiàng)
這樣,我就可以在安裝 K3s
或者之后修改對應(yīng)配置文件,來修改 Flannel
默認(rèn)的后端網(wǎng)絡(luò)配置選項(xiàng)(重啟會覆蓋不生效)了。下面,我們演示下,如何修改為 host-gw
模式。
#主節(jié)點(diǎn)
#flannel-backend使用host-gw
#該模式會把對端主機(jī)的IP當(dāng)做默認(rèn)網(wǎng)管(多Server情況)
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC='--flannel-backend=host-gw'
sh-
#工作節(jié)點(diǎn)
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cnK3S_URL=https://192.168.100.100:6443
K3S_TOKEN=xxxsh-
#默認(rèn)的路由信息
$route-n
0.0.0.0172.16.64.10.0.0.0UG10000enp0s2
10.42.1.0172.16.64.9255.255.255.0UG000enp0s2
#查看配置之后的網(wǎng)絡(luò)配置
$sudocat/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)時(shí),啟用 direct routes
(如 host-gw
)。vxlan
只用于將數(shù)據(jù)包封裝到不同子網(wǎng)的主機(jī)上,同子網(wǎng)的主機(jī)之間使用 host-gw
,默認(rèn)值為 false
。
要添加我們就不能修改其對應(yīng)的網(wǎng)絡(luò)配置文件,因?yàn)橹匦掳惭b或者重啟都會把這個(gè)配置沖掉(變成默認(rèn)配置),所以需要折中下。我們自建一個(gè)網(wǎng)絡(luò)配置文件,然后在啟動的時(shí)候執(zhí)行從哪個(gè)配置文件里面加載對應(yīng)配置。
#k3s的master和agent
$sudocat/etc/flannel/net-conf.json
{
"Network":"10.42.0.0/16",
"Backend":{
"Type":"vxlan",
"Directrouting":true
}
}
#k3smaster
$curl-sfLhttp://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 插件指南 來修改 Calico
的 YAML
配置文件,在 container_settings
部分中允許 IP
轉(zhuǎn)發(fā)。
#加到Calico的YAML文件中
#允許IP轉(zhuǎn)發(fā)(這個(gè)是K3s的一個(gè)限制;需要開啟)
"container_settings":{
"allow_ip_forwarding":true
}
-name:CALICO_IPV4POOL_CIDR
value:"192.168.200.0/24"
#通過在主機(jī)上運(yùn)行以下命令,確保設(shè)置已被應(yīng)用(true)
$sudocat/etc/cni/net.d/10-canal.conflist
#calico
#其中--cluster-cidr可不設(shè)置
$curl-sfLhttp://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ù)
$kubectlapply-f./calico.yaml
3.5 外部數(shù)據(jù)庫
理解 Server 節(jié)點(diǎn)的安裝,以及注冊 Agent 節(jié)點(diǎn)的步驟!
-
[1] 使用外部數(shù)據(jù)庫實(shí)現(xiàn)高可用安裝
-
兩個(gè)或多個(gè)
server
節(jié)點(diǎn) -
零個(gè)或多個(gè)
agent
節(jié)點(diǎn) -
外部數(shù)據(jù)存儲(
Etcd/MySQL/PostgRES
) -
固定的注冊地址(
LB
) - 這應(yīng)該是最適合國內(nèi)用戶的 K3s HA 方案
-
兩個(gè)或多個(gè)
雖然單節(jié)點(diǎn) k3s server
集群可以滿足各種用例,但是對于需要穩(wěn)定運(yùn)行的重要環(huán)境,可以在 HA
配置中運(yùn)行 K3s
,如何使用外部數(shù)據(jù)庫安裝一個(gè)高可用的 K3s
集群?
主機(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)建一個(gè)外部數(shù)據(jù)存儲
$dockerrun--namesome-mysql
--restart=unless-stopped-p3306:3306
-eMYSQL_ROOT_PASSWORD=password-dmysql:5.7
#2.啟動k3s-server節(jié)點(diǎn)(有讀寫權(quán)限不用加庫名)
#mysql://username:password@tcp(hostname:3306)/database-name
#可加污點(diǎn)--node-taintCriticalAddonsOnly=true:NoExecute
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cnsh-server
--datastore-endpoint="mysql://root:password@ip:3306/k3s"
--tls-san172.31.13.97
#3.配置固定的注冊地址(k3s-lb節(jié)點(diǎn))
#Agent節(jié)點(diǎn)需要一個(gè)URL來注冊(LB)
$cat>>/etc/nginx.conf<#啟動服務(wù)
$dockerrun-d--restart=unless-stopped
-p6443:6443
-v/etc/nginx.conf:/etc/nginx/nginx.conf
nginx:1.14
#4.加入Agent節(jié)點(diǎn)
#Agent會保存LB節(jié)點(diǎn)和每個(gè)Server節(jié)點(diǎn)的IP信息
#cat/var/lib/rancher/k3s/agent/etc/k3s-agent-load-balancer.json
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
K3S_URL=https://172.31.13.97:6443K3S_TOKEN=mynodetoken
sh-
#5.通過kubeconfig訪問K3s集群
$kubectlgetnodes
NAMESTATUSROLESAGEVERSION
k3s-server-1Readycontrol-plane,master68sv1.20.7+k3s1
k3s-server-2Readycontrol-plane,master66sv1.20.7+k3s1
- [2] 嵌入式 DB 的高可用
要在這種模式下運(yùn)行 K3s
,你必須有奇數(shù)的服務(wù)器節(jié)點(diǎn),建議從三個(gè)節(jié)點(diǎn)開始。在嵌入式中,默認(rèn)使用 Etcd
作為高可用的數(shù)據(jù)庫。
#服務(wù)器節(jié)點(diǎn)(啟動etcd集群)
#SECRET我們預(yù)定一個(gè)key值
#使用cluster-init標(biāo)志來啟用集群
#并使用一個(gè)標(biāo)記作為共享的密鑰來加入其他服務(wù)器到集群中
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cnK3S_TOKEN=SECRET
sh-s---cluster-init
#查看類型
$sudokubectlgetnodes
NAMESTATUSROLESAGEVERSION
ip-xxxReadycontrol-plane,etcd,master19hv1.23.6+k3s1
#其他服務(wù)器節(jié)點(diǎn)(2/3)
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cnK3S_TOKEN=SECRET
sh-s---serverhttps://: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=3etcdctlendpointstatus--write-out=table
- [3] 集群數(shù)據(jù)存儲選項(xiàng)
使用 etcd
以外的數(shù)據(jù)存儲運(yùn)行 K8S
的能力使 K3s
區(qū)別于其他 K8S
發(fā)行版。該功能為 K8S
操作者提供了靈活性,可用的數(shù)據(jù)存儲選項(xiàng)允許你選擇一個(gè)最適合用例的數(shù)據(jù)存儲。
如果你的團(tuán)隊(duì)沒有操作 etcd
的專業(yè)知識,可以選擇 MySQL
或 PostgreSQL
等企業(yè)級 SQL
數(shù)據(jù)庫。如果您需要在 CI/CD
環(huán)境中運(yùn)行一個(gè)簡單的、短暫的集群,可以使用嵌入式 SQLite
數(shù)據(jù)庫
如果你想使用外部數(shù)據(jù)存儲,如 PostgreSQL
、MySQL
或 etcd
,你必須設(shè)置 datastore-endpoint
參數(shù),以便 K3s
知道如何連接到它,也可以指定參數(shù)來配置連接的認(rèn)證和加密。下表總結(jié)了這些參數(shù),它們可以作為 CLI
標(biāo)志或環(huán)境變量傳遞。
CLI Flag | 環(huán)境變量 | 描述 |
---|---|---|
--datastore-endpoint |
K3S_DATASTORE_ENDPOINT |
指定一個(gè) PostgresSQL、MySQL 或 etcd 連接字符串。用于描述與數(shù)據(jù)存儲的連接。這個(gè)字符串的結(jié)構(gòu)是特定于每個(gè)后端的,詳情如下。 |
--datastore-cafile |
K3S_DATASTORE_CAFILE |
TLS 證書頒發(fā)機(jī)構(gòu)(CA)文件,用于幫助確保與數(shù)據(jù)存儲的通信安全。如果你的數(shù)據(jù)存儲通過 TLS 服務(wù)請求,使用由自定義證書頒發(fā)機(jī)構(gòu)簽署的證書,你可以使用這個(gè)參數(shù)指定該 CA,這樣 K3s 客戶端就可以正確驗(yàn)證證書。 |
--datastore-certfile |
K3S_DATASTORE_CERTFILE |
TLS 證書文件,用于對數(shù)據(jù)存儲進(jìn)行基于客戶端證書的驗(yàn)證。要使用這個(gè)功能,你的數(shù)據(jù)存儲必須被配置為支持基于客戶端證書的認(rèn)證。如果你指定了這個(gè)參數(shù),你還必須指定datastore-keyfile 參數(shù)。 |
--datastore-keyfile |
K3S_DATASTORE_KEYFILE |
TLS 密鑰文件,用于對數(shù)據(jù)存儲進(jìn)行基于客戶端證書的認(rèn)證。更多細(xì)節(jié)請參見前面的datastore-certfile 參數(shù)。 |
作為最佳實(shí)踐,我們建議將這些參數(shù)設(shè)置為環(huán)境變量,而不是命令行參數(shù),這樣你的數(shù)據(jù)庫證書或其他敏感信息就不會作為進(jìn)程信息的一部分暴露出來。
3.6 私有鏡像倉庫
理解 Server 節(jié)點(diǎn)的安裝,以及注冊 Agent 節(jié)點(diǎn)的步驟!
K3s
默認(rèn)使用 containerd
作為容器運(yùn)行時(shí),所以在 docker
上配置鏡像倉庫是不生效的。K3s
鏡像倉庫配置文件由兩大部分組成:mirrors
和 configs
。
-
Mirrors
是一個(gè)用于定義專用鏡像倉庫的名稱和endpoint
的指令 -
Configs
部分定義了每個(gè)mirror
的TLS
和證書配置 -
對于每個(gè)
mirror
,你可以定義auth
和/
或tls
K3s registry
配置目錄為:/etc/rancher/k3s/registries.yaml
。K3s
啟動時(shí)會檢查 /etc/rancher/k3s/
中是否存在 registries.yaml
文件,并指示 containerd
使用文件中定義的鏡像倉庫。如果你想使用一個(gè)私有的鏡像倉庫,那么你需要在每個(gè)使用鏡像倉庫的節(jié)點(diǎn)上以 root
身份創(chuàng)建這個(gè)文件。
請注意,server
節(jié)點(diǎn)默認(rèn)是可以調(diào)度的。如果你沒有在 server
節(jié)點(diǎn)上設(shè)置污點(diǎn),那么將在它們上運(yùn)行工作負(fù)載,請確保在每個(gè) server
節(jié)點(diǎn)上創(chuàng)建 registries.yaml
文件。
containerd
使用了類似 K8S
中 svc
與 endpoint
的概念,svc
可以理解為訪問名稱,這個(gè)名稱會解析到對應(yīng)的 endpoint
上。也可以理解 mirror
配置就是一個(gè)反向代理,它把客戶端的請求代理到 endpoint
配置的后端鏡像倉庫。mirror
名稱可以隨意填寫,但是必須符合 IP
或域名的定義規(guī)則。并且可以配置多個(gè) endpoint
,默認(rèn)解析到第一個(gè) endpoint
,如果第一個(gè) endpoint
沒有返回?cái)?shù)據(jù),則自動切換到第二個(gè) endpoint
,以此類推。
#/etc/rancher/k3s/registries.yaml
#同時(shí)可以設(shè)置多個(gè)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:admin
password:Harbor@12345
tls:
cert_file:/home/ubuntu/harbor2.escapelife.site.cert
key_file:/home/ubuntu/harbor2.escapelife.site.key
ca_file:/home/ubuntu/ca.crt
#鏡像都是從同一個(gè)倉庫獲取到的
$sudosystemctlrestartk3s.service
$sudocrictlpull172.31.6.200:5000/library/alpine
$sudocrictlpullrancher.ksd.top:5000/library/alpine
這里我們介紹下,如何使用 TLS
配置。
#證書頒發(fā)機(jī)構(gòu)頒發(fā)的證書
$cat>>/etc/rancher/k3s/registries.yaml<"harbor.escapelife.site":
endpoint:
-"https://harbor.escapelife.site"
configs:
"harbor.escapelife.site":
auth:
username:admin
password:Harbor@12345
EOF
$sudosystemctlrestartk3s
#自簽名證書
$cat>>/etc/rancher/k3s/registries.yaml<"harbor2.escapelife.site":
endpoint:
-"https://harbor2.escapelife.site"
configs:
"harbor2.escapelife.site":
auth:
username:admin
password:Harbor@12345
tls:
cert_file:/home/ubuntu/harbor2.escapelife.site.cert
key_file:/home/ubuntu/harbor2.escapelife.site.key
ca_file:/home/ubuntu/ca.crt
EOF
$sudosystemctlrestartk3s
#不使用TLS證書
$cat>>/etc/rancher/k3s/registries.yaml<"docker.io":
endpoint:
-"https://fogjl973.mirror.aliyuncs.com"
-"https://registry-1.docker.io"
EOF
$sudosystemctlrestartk3s
K3s
將會在 /var/lib/rancher/k3s/agent/etc/containerd/config.toml
中為 containerd
生成 config.toml
。如果要對這個(gè)文件進(jìn)行高級設(shè)置,你可以在同一目錄中創(chuàng)建另一個(gè)名為 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:admin
password:Harbor@12345
"harbor2.escapelife.site":
auth:
username:admin
password:Harbor@12345
tls:
cert_file:/home/ubuntu/harbor2.escapelife.site.cert
key_file:/home/ubuntu/harbor2.escapelife.site.key
ca_file:/home/ubuntu/ca.crt
3.7 離線安裝
理解 Server 節(jié)點(diǎn)的安裝,以及注冊 Agent 節(jié)點(diǎn)的步驟!
離線安裝的過程主要分為以下兩個(gè)步驟:
-
步驟 1:部署鏡像
- 部署私有鏡像倉庫
- 手動部署鏡像
-
步驟 2:安裝
K3s
工具- 單節(jié)點(diǎn)安裝
- 高可用安裝
-
通過私有鏡像倉庫安裝 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<"docker.io":
endpoint:
-"https://harbor.escapelife.site"
configs:
"docker.io":
auth:
username:admin
password:Harbor@12345
EOF
#安裝單節(jié)點(diǎn)K3s集群
#https://github.com/k3s-io/k3s/releases
可以從K3s倉庫獲取到版本(二進(jìn)制文件)
#獲取K3s安裝腳本
$wgethttps://get.k3s.io-o./install.sh
$wgethttp://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:6443K3S_TOKEN=mynodetoken
./install.sh
- 通過手動部署鏡像安裝 K3s
#從Github頁面獲取你所運(yùn)行的K3s版本及文件
#https://github.com/rancher/k3s/releases
k3s二進(jìn)制文件+鏡像tar文件
#將tar文件放在images目錄下
$sudomkdir-p/var/lib/rancher/k3s/agent/images/
$sudocp./k3s-airgap-images-$ARCH.tar/var/lib/rancher/k3s/agent/images/
#將k3s二進(jìn)制文件放在/usr/local/bin/k3s路徑上
$mv./k3s/usr/local/bin/
$chmod755/usr/local/bin/k3s
#安裝K3s-server
$INSTALL_K3S_SKIP_DOWNLOAD=true./install.sh
#將agent加入到K3s集群
$INSTALL_K3S_SKIP_DOWNLOAD=true
K3S_URL=https://myserver:6443K3S_TOKEN=mynodetoken
./install.sh
離線升級 K3s
版本,完成離線安裝 K3s
后,還可以通過腳本升級 K3s
版本,或啟用自動升級功能,以保持離線環(huán)境中的 K3s
版本與最新的 K3s
版本同步。
- 升級 K3s 版本
#通過腳本升級
#https://github.com/rancher/k3s/releases
從Github頁面下載要升級到的K3s版本
#替換
#復(fù)制并替換每個(gè)節(jié)點(diǎn)上/usr/local/bin中的舊K3s二進(jìn)制文件
$mv./k3s/usr/local/bin/
$chmod755/usr/local/bin/k3s
$wgethttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh
#重啟K3s服務(wù)
$sudosystemctlrestartk3s.service
3.8 儀表盤及卸載
理解 Server 節(jié)點(diǎn)的安裝,以及注冊 Agent 節(jié)點(diǎn)的步驟!
推薦使用三種儀表盤工具,分別是對應(yīng)是 Kubernetes Dashboard
、kube-explorer
和 Rancher 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|.*/||')
$sudok3skubectlcreate-fhttps://raw.githubusercontent.com/kubernetes/dashboard/${VERSION_KUBE_DASHBOARD}/aio/deploy/recommended.yaml
#儀表盤RBAC配置
#本指南中創(chuàng)建的admin-user將在儀表盤中擁有管理權(quán)限
$sudok3skubectlcreate
-fdashboard.admin-user.yml
-fdashboard.admin-user-role.yml
#dashboard.admin-user.yml
apiVersion:v1
kind:ServiceAccount
metadata:
name:admin-user
namespace:kubernetes-dashboard
#dashboard.admin-user-role.yml
apiVersion:rbac.authorization.k8s.io/v1
kind:ClusterRoleBinding
metadata:
name:admin-user
roleRef:
apiGroup:rbac.authorization.k8s.io
kind:ClusterRole
name:cluster-admin
subjects:
-kind:ServiceAccount
name:admin-user
namespace:kubernetes-dashboard
#獲得Bearer-Token
$sudok3skubectl-nkubernetes-dashboard
describesecretadmin-user-token|grep'^token'
#本地訪問儀表盤
#https://192.168.100.100:8443
#https://www.escapelife.site/posts/180e93f1.html
#https://www.escapelife.site/posts/538ec6b1.html
$sudok3skubectlproxy
$sudokubectl-nkubernetes-dashboardport-forward
--address0.0.0.0svc/kubernets-dashboard8443:443
#升級儀表盤
$sudok3skubectldeletenskubernetes-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|.*/||')
$sudok3skubectlapply-fhttps://raw.githubusercontent.com/kubernetes/dashboard/${VERSION_KUBE_DASHBOARD}/aio/deploy/recommended.yaml-fdashboard.admin-user.yml-fdashboard.admin-user-role.yml
###刪除儀表盤和admin-user配置
$sudok3skubectldeletenskubernetes-dashboard
$sudok3skubectldeleteclusterrolebindingkubernetes-dashboard
$sudok3skubectldeleteclusterrolekubernetes-dashboard
-
[2] kube-explorer
-
kube-explorer
是K8S
的便攜式資源管理器,沒有任何依賴 -
并提供了一個(gè)幾乎完全無狀態(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集群時(shí),Rancher會將其識別為K3s類型,并且附件額外功能
#1.能夠升級K3s版本
#2.可配置升級集群時(shí)升級的最大節(jié)點(diǎn)數(shù)
#3.在主機(jī)詳情頁能夠查看啟動K3s集群時(shí)每個(gè)節(jié)點(diǎn)的配置參數(shù)和環(huán)境變量
#配置K3s集群以允許導(dǎo)入到Rancher
$curl-sfLhttps://rancher-mirror.rancher.cn/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cnsh-s-
--write-kubeconfig-mode644
- [4] 卸載 K3s 服務(wù)
#主節(jié)點(diǎn)
$/usr/local/bin/k3s-uninstall.sh
#工作節(jié)點(diǎn)
$/usr/local/bin/k3s-agent-uninstall.sh
#包括docker等信息一并清理
#!/bin/bash
KUBE_SVC='
kubelet
kube-scheduler
kube-proxy
kube-controller-manager
kube-apiserver
'
forkube_svcin${KUBE_SVC};
do
#停止服務(wù)
if[[`systemctlis-active${kube_svc}`=='active']];then
systemctlstop${kube_svc}
fi
#禁止服務(wù)開機(jī)啟動
if[[`systemctlis-enabled${kube_svc}`=='enabled']];then
systemctldisable${kube_svc}
fi
done
#停止所有容器
dockerstop$(dockerps-aq)
#刪除所有容器
dockerrm-f$(dockerps-qa)
#刪除所有容器卷
dockervolumerm$(dockervolumels-q)
#卸載mount目錄
formountin$(mount|greptmpfs|grep'/var/lib/kubelet'|awk'{print$3}')/var/lib/kubelet/var/lib/rancher;
do
umount$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`
fornet_interin$network_interface;
do
if!echo"${no_del_net_inter}"|grep-qE${net_inter3};then
iplinkdelete$net_inter
fi
done
#清理殘留進(jìn)程
port_list='
80
443
6443
2376
2379
2380
8472
9099
10250
10254
'
forportin$port_list;
do
pid=`netstat-atlnup|grep$port|awk'{print$7}'|awk-F'/''{print$1}'|grep-v-|sort-rnk2|uniq`
if[[-n$pid]];then
kill-9$pid
fi
done
kube_pid=`ps-ef|grep-vgrep|grepkube|awk'{print$2}'`
if[[-n$kube_pid]];then
kill-9$kube_pid
fi
#清理Iptables表
##注意:如果節(jié)點(diǎn)Iptables有特殊配置,以下命令請謹(jǐn)慎操作
sudoiptables--flush
sudoiptables--flush--tablenat
sudoiptables--flush--tablefilter
sudoiptables--tablenat--delete-chain
sudoiptables--tablefilter--delete-chain
systemctlrestartdocker
3.9 注意事項(xiàng)
理解 Server 節(jié)點(diǎn)的安裝,以及注冊 Agent 節(jié)點(diǎn)的步驟!
-
Helm
-
如果需要使用
helm
操作K3s
集群,需要?jiǎng)?chuàng)建~/.kube/conf
目錄 -
需要執(zhí)行
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
命令
-
如果需要使用
-
自動部署的清單
-
將由
rancher/helm-controller
在運(yùn)行時(shí)安裝 -
目錄路徑:
/var/lib/rancher/k3s/server/manifests
-
目錄下面的每個(gè)
yaml
就代表這個(gè)一個(gè)需要啟動的服務(wù)
-
將由
對于我們希望使用的組件,可以在啟動的時(shí)候禁用默認(rèn)組件,在手動部署你需要的一些組件(通常是放到一個(gè)指定目錄下面,隨著服務(wù)啟動自動拉起),從而達(dá)到靈活使用的目的。
#查看所有Pod服務(wù)
#比如helm/coredns也不是自帶的就是通過這個(gè)方式創(chuàng)建的
$sudokubectlgetpods-A
-
注冊 Agent 節(jié)點(diǎn)
-
工作節(jié)點(diǎn)密碼存儲:
/etc/rancher/node/password
-
主節(jié)點(diǎn)的密碼存儲:
/var/lib/rancher/k3s/server/cred/node-passwd
-
工作節(jié)點(diǎn)密碼存儲:
在 agent
節(jié)點(diǎn)運(yùn)行注冊命令,會和 server
節(jié)點(diǎn)發(fā)起 websocket
連接,然后會在工作節(jié)點(diǎn)上面創(chuàng)建一個(gè)隨機(jī)的密碼。然后會拿著這個(gè)密碼和工作節(jié)點(diǎn)的主機(jī)名,發(fā)送給主節(jié)點(diǎn)。然后主節(jié)點(diǎn)會將這個(gè)信息在保存(k8s secrets
)起來,隨后的任何嘗試都必須使用相同的密碼。
#工作節(jié)點(diǎn)的密碼信息(password+hostname)
$sudocat/etc/rancher/node/password
#查看主節(jié)點(diǎn)的密碼信息
#https://docs.rancher.cn/docs/k3s/architecture/_index#注冊-agent-節(jié)點(diǎn)
$sudokubectlgetsecretk3s2.node-password.k3s-oyaml-nkube-system
#可以查看日志信息驗(yàn)證這個(gè)信息的存在
$sudotail-f200/var/log/syslog|grepk3s
#發(fā)現(xiàn)節(jié)點(diǎn)信息提示NotReady狀態(tài)
#可以嘗試刪除節(jié)點(diǎn)的密碼存儲信息,之后會自動獲取新的
$sudokubectldeletesecretk3s2.node-password.k3s-nkube-system
- 自定義存儲類型
集群啟動之后,默認(rèn)會啟動一個(gè) local-path
的組件,用于提供服務(wù)掛載存儲使用,其默認(rèn)以 PVC
的形式。之后,將其存儲在 /var/lib/rancher/k3s/server/storageclass
目錄下面。
#查看組件
$sudokubectlgetpods-A
#查看對應(yīng)存儲
$sudokubectlgetstorageclass
#可以使用參數(shù)修改默認(rèn)存儲地址
#--default-local-storage-pathvalue
$curl-sfLhttp://rancher-mirror.cnrancher.com/k3s/k3s-install.sh|
INSTALL_K3S_MIRROR=cn
INSTALL_K3S_EXEC='--etcd-snapshot-schedule-cron**/5***'
sh-
4. K3S 集群升級
手動升級 + 自動升級
當(dāng)升級 K3s
時(shí),K3s
服務(wù)會重啟或停止,但 K3s
容器會繼續(xù)運(yùn)行。要停止所有的 K3s
容器并重置容器的狀態(tài),可以使用 k3s-killall.sh
腳本。killall
腳本清理容器、K3s
目錄和網(wǎng)絡(luò)組件,同時(shí)也刪除了 iptables
鏈和所有相關(guān)規(guī)則。集群數(shù)據(jù)不會被刪除。
- [1] 手動升級 - 使用安裝腳本升級 K3s
你可以通過使用安裝腳本升級 K3s
,或者手動安裝所需版本的二進(jìn)制文件。
#升級到最新stable版本
$curl-sfLhttps://get.k3s.io|sh-
#升級到latest版本
$curl-sfLhttps://get.k3s.io|INSTALL_K3S_CHANNEL=latestsh-
#升級到v1.20的最新版本
$curl-sfLhttps://get.k3s.io|INSTALL_K3S_CHANNEL="v1.20"sh-
#升級到指定版本
$curl-sfLhttps://get.k3s.io|INSTALL_K3S_VERSION=vX.Y.Z-rc1sh-
- [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-sfLhttps://get.k3s.io|INSTALL_K3S_CHANNEL="v1.20"sh-
#啟動新的K3s二進(jìn)制文件
$curl-sfLhttps://get.k3s.io|INSTALL_K3S_VERSION=vX.Y.Z-rc1sh-
你可以使用 Rancher
的 system-upgrad-controller
來管理 K3s
集群升級。這是一種 Kubernetes
原生的集群升級方法。它利用自定義資源定義(CRD
)、計(jì)劃和控制器,根據(jù)配置的計(jì)劃安排升級。
控制器通過監(jiān)控計(jì)劃和選擇要在其上運(yùn)行升級 job
的節(jié)點(diǎn)來調(diào)度升級,計(jì)劃通過標(biāo)簽選擇器定義哪些節(jié)點(diǎn)應(yīng)該升級。當(dāng)一個(gè) job
成功運(yùn)行完成后,控制器會給它運(yùn)行的節(jié)點(diǎn)打上相應(yīng)的標(biāo)簽。
-
[3] 自動升級 - 使用二進(jìn)制文件手動升級 K3s
- k3s-upgrade
- system-upgrade-controller
#將system-upgrade-controller安裝到您的集群中
$kubectlapply-fhttps://github.com/rancher/system-upgrade-controller/releases/download/v0.6.2/system-upgrade-controller.yaml
#配置計(jì)劃
#建議您最少創(chuàng)建兩個(gè)計(jì)劃
#升級server節(jié)點(diǎn)的計(jì)劃和升級agent節(jié)點(diǎn)的計(jì)劃
#Serverplan
apiVersion:upgrade.cattle.io/v1
kind:Plan
metadata:
name:server-plan
namespace:system-upgrade
spec:
concurrency:1
cordon:true
nodeSelector:
matchExpressions:
-key:node-role.kubernetes.io/master#選擇主節(jié)點(diǎn)
operator:In
values:
-"true"
serviceAccountName:system-upgrade
upgrade:
image:rancher/k3s-upgrade
version:v1.20.4+k3s1
#Agentplan
apiVersion:upgrade.cattle.io/v1
kind:Plan
metadata:
name:agent-plan
namespace:system-upgrade
spec:
concurrency:1
cordon:true
nodeSelector:
matchExpressions:
-key:node-role.kubernetes.io/master#選擇工作節(jié)點(diǎn)
operator:DoesNotExist
prepare:
args:
-prepare
-server-plan
image:rancher/k3s-upgrade
serviceAccountName:system-upgrade
upgrade:
image:rancher/k3s-upgrade
version:v1.20.4+k3s1
#自動升級到最新版本(不指定版本)
apiVersion:upgrade.cattle.io/v1
kind:Plan
...
spec:
...
upgrade:
image:rancher/k3s-upgrade
channel: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ù)
$systemctlstopk3s
$rm-rf/var/lib/rancher/k3s/server/db
$cp-rf/opt/db/var/lib/rancher/k3s/server/db
$systemctlstartk3s
#方式2:通過 SQLite cli
#備份
sqlite3/var/lib/rancher/k3s/server/db/state.db
SQLiteversion3.22.02018-01-221857
Enter".help"forusagehints.
sqlite>.backup"/opt/kine.db"
sqlite>.exit
#恢復(fù)
$sudosystemctlstopk3s
sqlite3/var/lib/rancher/k3s/server/db/state.db
SQLiteversion3.22.02018-01-221857
Enter".help"forusagehints.
sqlite>.restore'/opt/kine.db'
sqlite>.exit
$sudosystemctlstartk3s
當(dāng)使用外部數(shù)據(jù)存儲時(shí),備份和恢復(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ù)
$systemctlstopk3s
$mysql-uroot-p
- [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 定時(shí)快照的時(shí)間點(diǎn);認(rèn)值為每12小時(shí)觸發(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í),舊的數(shù)據(jù)目錄將被移動到/var/lib/rancher/k3s/server/db/etcd-old/
。然后 K3s
會嘗試通過創(chuàng)建一個(gè)新的數(shù)據(jù)目錄來恢復(fù)快照,然后從一個(gè)帶有一個(gè) etcd
成員的新 K3s
集群啟動 etcd
。
#從快照恢復(fù)集群
#使用--cluster-reset選項(xiàng)運(yùn)行K3s
#同時(shí)給出--cluster-reset-restore-path
$./k3sserver
--cluster-reset
--cluster-reset-restore-path=
6. K3S 卷和存儲
介紹了如何通過 local storage provider 或 Longhorn 來設(shè)置持久存儲。
當(dāng)部署一個(gè)需要保留數(shù)據(jù)的應(yīng)用程序時(shí),你需要?jiǎ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
自帶 Rancher
的 Local Path Provisioner
(LPP
),這使得能夠使用各自節(jié)點(diǎn)上的本地存儲來開箱即用地創(chuàng)建 pvc
。根據(jù)用戶配置,LPP
將自動在節(jié)點(diǎn)上創(chuàng)建基于 hostPath
的持久卷。它利用了 K8s
的 Local Persistent Volume
特性引入的特性,但它比 K8s
中內(nèi)置的 local pv
特性更簡單的解決方案。
#pvc.yaml
apiVersion:v1
kind:PersistentVolumeClaim
metadata:
name:local-path-pvc
namespace:default
spec:
accessModes:
-ReadWriteOnce
storageClassName:local-path
resources:
requests:
storage:2Gi
#pod.yaml
apiVersion:v1
kind:Pod
metadata:
name:volume-test
namespace:default
spec:
containers:
-name:volume-test
image:nginx:stable-alpine
imagePullPolicy:IfNotPresent
volumeMounts:
-name:volv
mountPath:/data
ports:
-containerPort:80
volumes:
-name:volv
persistentVolumeClaim:
claimName:local-path-pvc
#應(yīng)用yaml服務(wù)
$kubectlcreate-fpvc.yamlpod.yaml
#確認(rèn)PV和PVC已創(chuàng)建
$kubectlgetpv
$kubectlgetpvc
- [2] 設(shè)置 Longhorn 支持
K3s
支持 Longhorn
(是 K8s
的一個(gè)開源分布式塊存儲系統(tǒng))。
#安裝Longhorn
#將被安裝在命名空間longhorn-system中
$kubectlapply-fhttps://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
#pvc.yaml
apiVersion:v1
kind:PersistentVolumeClaim
metadata:
name:longhorn-volv-pvc
spec:
accessModes:
-ReadWriteOnce
storageClassName:longhorn
resources:
requests:
storage:2Gi
#pod.yaml
apiVersion:v1
kind:Pod
metadata:
name:volume-test
namespace:default
spec:
containers:
-name:volume-test
image:nginx:stable-alpine
imagePullPolicy:IfNotPresent
volumeMounts:
-name:volv
mountPath:/data
ports:
-containerPort:80
volumes:
-name:volv
persistentVolumeClaim:
claimName:longhorn-volv-pvc
#應(yīng)用yaml服務(wù)
$kubectlcreate-fpvc.yamlpod.yaml
#確認(rèn)PV和PVC已創(chuàng)建
$kubectlgetpv
$kubectlgetpvc
7. K3S 網(wǎng)絡(luò)相關(guān)
簡單介紹下 K3s 相關(guān)的網(wǎng)絡(luò)配置組件!
- CoreDNS
CoreDNS
是在 agent
節(jié)點(diǎn)啟動時(shí)部署的。要禁用,請?jiān)诿颗_服務(wù)器上運(yùn)行 --disable coredns
選項(xiàng)。如果你不安裝 CoreDNS
,你將需要自己安裝一個(gè)集群 DNS
提供商。
#如何修改coredns參數(shù)
#/var/lib/rancher/k3s/server/manifests/coredns.yaml
#該文件重啟K3s服務(wù)的話會導(dǎo)致coredns配置重新初始化
1.將coredns.yaml保存到其他目錄
2.通過--disablecoredns禁用coredns
3.復(fù)制coredns.yaml到/var/lib/rancher/k3s/server/manifests/目錄并修改參數(shù)
- Traefik Ingress Controller
啟動 server
時(shí),默認(rèn)情況下會部署 Traefik
,對該文件的任何修改都會以類似 kubectl apply
的方式自動部署到 Kubernetes
中,將使用主機(jī)上的 80
和 443
端口。
#操作和上面基本是一致的
#請使用--disabletraefik選項(xiàng)啟動每個(gè)server
#/var/lib/rancher/k3s/server/manifests/traefik.yaml
#如何啟用treafik2dashboard
#http://traefik.example.com/dashboard
#Note:inakubernetessecretthestring(e.g.generatedbyhtpasswd)mustbebase64-encodedfirst.
#Tocreateanencodeduser:passwordpair,thefollowingcommandcanbeused:
#htpasswd-nbadminadmin|opensslbase64
apiVersion:v1
kind:Secret
metadata:
name:authsecret
namespace:default
data:
users:|2
YWRtaW46JGFwcjEkLkUweHd1Z0EkUjBmLi85WndJNXZWRFMyR2F2LmtELwoK
---
apiVersion:traefik.containo.us/v1alpha1
kind:IngressRoute
metadata:
name:traefik-dashboard
spec:
routes:
-match:Host(`traefik.example.com`)&&(PathPrefix(`/api`)||PathPrefix(`/dashboard`))
kind:Rule
services:
-name:api@internal
kind:TraefikService
middlewares:
-name:auth
---
apiVersion:traefik.containo.us/v1alpha1
kind:Middleware
metadata:
name:auth
spec:
basicAuth:
secret:authsecret#Kubernetessecretnamed"secretName"
- Service Load Balancer
K3s
提供了一個(gè)名為 Klipper Load Balancer
的負(fù)載均衡器,它可以使用可用的主機(jī)端口。允許創(chuàng)建 LoadBalancer
類型的 Service
,但不包括 LB
的實(shí)現(xiàn)。某些 LB
服務(wù)需要云提供商,例如 Amazon EC2
。相比之下,K3s service LB
使得可以在沒有云提供商的情況下使用 LB
服務(wù)。
8. K3S 與 Helm
Helm
是 Kubernetes
的包管理工具。Helm Chart
為 Kubernetes YAML
清單文件提供了模板化語法,可以通過 Helm
安裝對應(yīng)的 chart
。K3s
不需要任何特殊的配置就可以使用 Helm
命令行工具。
- 自動部署 Helm charts
在 /var/lib/rancher/k3s/server/manifests
中找到的任何 Kubernetes
清單將以類似 kubectl apply
的方式自動部署到 K3s
。以這種方式部署的 manifests
是作為 AddOn
自定義資源來管理的。你會發(fā)現(xiàn)打包組件的 AddOns
,如 CoreDNS
、Local-Storage
等。AddOns
是由部署控制器自動創(chuàng)建的,并根據(jù)它們在 manifests
目錄下的文件名命名。
#查看運(yùn)行AddOn資源
$kubectlgetaddon-A
#也可以將Helm-Chart作為AddOns部署
https://github.com/rancher/helm-controller/
- 使用 Helm CRD
HelmChart CRD
捕獲了大多數(shù)你通常會傳遞給 helm
命令行工具的選項(xiàng)。下面是一個(gè)例子,說明如何從默認(rèn)的 Chart
資源庫中部署 Grafana
,覆蓋一些默認(rèn)的 Chart
值。請注意,HelmChart
資源本身在 kube-system
命名空間,但 Chart
資源將被部署到 monitoring
命名空間。
apiVersion:helm.cattle.io/v1
kind:HelmChart
metadata:
name:grafana
namespace:kube-system
spec:
chart:stable/grafana
targetNamespace:monitoring
set:
adminPassword:"NotVerySafePassword"
valuesContent:|-
image:
tag:master
env:
GF_EXPLORE_ENABLED:true
adminUser:admin
sidecar:
datasources:
enabled:true
9. K3S 高級選項(xiàng)
包含高級選項(xiàng)和配置
- 證書輪換
默認(rèn)情況下,K3s
的證書在 12
個(gè)月內(nèi)過期。如果證書已經(jīng)過期或剩余的時(shí)間不足 90
天,則在 K3s
重啟時(shí)輪換證書。
#查詢K3s證書過期時(shí)間
$foriin`ls/var/lib/rancher/k3s/server/tls/*.crt`;
do
echo$i;
opensslx509-enddate-noout-in$i;
done
#修改系統(tǒng)時(shí)間為證書過期前90天或證書過期后
$timedatectlset-ntpno
$date-s20220807
#重啟K3s服務(wù)
$servicek3srestart
- Red Hat 和 CentOS 的額外準(zhǔn)備
建議運(yùn)行以下命令,關(guān)閉 firewalld
防火墻。
$sudosystemctldisablefirewalld--now
10. 參考鏈接
送人玫瑰,手有余香!
完全基于K8S管理的輕量級操作系統(tǒng)
用于簡化K3s
集群部署和管理的輕量級工具
即在阿里云和aws
等云服務(wù)器上面部署k3s
-
[1] 文檔教程
- K3s 中文文檔 - 國外
- K3s 中文文檔 - 國內(nèi)
- K3s 國內(nèi)鏡像站 - 加速
- K3s 系列教程 - 官方制作
-
[2] 代碼地址
- K3s 倉庫地址 - Github
-
[3] 周邊項(xiàng)目
-
K3s 周邊項(xiàng)目 - k3os
-
K3s 周邊項(xiàng)目 - autok3s
-
K3s 周邊項(xiàng)目 - k3d
可以在
k3d
創(chuàng)建容器化的k3s
集群 可以使用容器在單臺計(jì)算機(jī)上啟動多節(jié)點(diǎn)k3s
集群 -
K3s 周邊項(xiàng)目 - harvester
基于
K8S
構(gòu)建的開源超融合基礎(chǔ)架構(gòu)(HCI
)軟件 旨在替換vSphere
和Nutanix
的開源替代方案 -
K3s 周邊項(xiàng)目 - octopus
主要用于邊緣計(jì)算相關(guān)
用于
K8S
和k3s
的輕量級云原生設(shè)備管理系統(tǒng) 集群可以將邊緣設(shè)備作為自定義k8s
資源進(jìn)行管理
-
原文標(biāo)題:輕量級 Kubernetes 集群發(fā)行版 K3s 完全進(jìn)階指南
文章出處:【微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
工具
+關(guān)注
關(guān)注
4文章
307瀏覽量
27734 -
邊緣計(jì)算
+關(guān)注
關(guān)注
22文章
3063瀏覽量
48626 -
kubernetes
+關(guān)注
關(guān)注
0文章
223瀏覽量
8695
原文標(biāo)題:輕量級 Kubernetes 集群發(fā)行版 K3s 完全進(jìn)階指南
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論