精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

輕量級Kubernetes-K3S工具介紹

馬哥Linux運(yùn)維 ? 來源:奇妙的Linux世界 ? 作者:Escape ? 2022-06-21 16:50 ? 次閱讀

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 masterkubeletcontainerd

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í)支持使用 etcd3MySQLPostgreSQL 作為存儲機(jī)制。
  • 默認(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)核就可以了(需要 kernelcgroup 掛載)。

之所以叫做 K3S 是因?yàn)橄M惭b的 K8S 在內(nèi)存占用方面只是一半的大小,而一半大的東西就是一個(gè) 5 個(gè)字母的單詞,簡寫為 K3S

  • 生命周期
    • 同時(shí)支持 3 個(gè) K8s 版本,支持的生命周期與 K8s 相同
    • 可以參考: Kubernetes 版本及版本偏差支持策略 進(jìn)行學(xué)習(xí)
  • 更新周期
    • 當(dāng) K8s 更新新版本后,一般 K3s 在一周內(nèi)同步更新
    • 可以通過 這個(gè)鏈接 獲取 latest/stable/testing 版本
    • 我們默認(rèn)安裝的是 stable 版本,可以運(yùn)行通過命令進(jìn)行查看
  • 命名規(guī)范
    • v1.20.4+k3s1: v1.20.4K8s 版本,k3s1 為補(bǔ)丁版本
#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 集群。我們可以看到 K3SK8S 的架構(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)
5cea2b64-da51-11ec-ba43-dac502259ad0.jpgK3S工具進(jìn)階指南
  • K8s 架構(gòu)
5d3e3f24-da51-11ec-ba43-dac502259ad0.pngK3S工具進(jìn)階指南

國內(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è)安裝腳本,可以方便的在 systemdopenrc 的系統(tǒng)上將其作為服務(wù)安裝。運(yùn)行此安裝后,K3s 服務(wù)將被配置為在節(jié)點(diǎn)重啟后或進(jìn)程崩潰或被殺死時(shí)自動重啟。

  • 安裝內(nèi)容

    • kubectlcrictlctr
    • k3s-killall.shk3s-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ī)則,所有出站流量都是允許的
協(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)

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ù)修改。要啟用加密,請使用下面的 IPSecWireGuard 選項(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 插件指南 來修改 CalicoYAML 配置文件,在 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)高可用安裝

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

5d70d4a2-da51-11ec-ba43-dac502259ad0.pngK3S安裝事項(xiàng) - 外部數(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)建一個(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è)知識,可以選擇 MySQLPostgreSQL 等企業(yè)級 SQL 數(shù)據(jù)庫。如果您需要在 CI/CD 環(huán)境中運(yùn)行一個(gè)簡單的、短暫的集群,可以使用嵌入式 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 指定一個(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 鏡像倉庫配置文件由兩大部分組成:mirrorsconfigs

  • Mirrors 是一個(gè)用于定義專用鏡像倉庫的名稱和 endpoint 的指令
  • Configs 部分定義了每個(gè) mirrorTLS 和證書配置
  • 對于每個(gè) mirror,你可以定義 auth/tls

K3s registry 配置目錄為:/etc/rancher/k3s/registries.yamlK3s 啟動時(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 使用了類似 K8Ssvcendpoint 的概念,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 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|.*/||')
$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-explorerK8S 的便攜式資源管理器,沒有任何依賴
    • 并提供了一個(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

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-

你可以使用 Ranchersystem-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
5dabf212-da51-11ec-ba43-dac502259ad0.pngK3S集群升級

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 自帶 RancherLocal Path Provisioner(LPP),這使得能夠使用各自節(jié)點(diǎn)上的本地存儲來開箱即用地創(chuàng)建 pvc。根據(jù)用戶配置,LPP 將自動在節(jié)點(diǎn)上創(chuàng)建基于 hostPath 的持久卷。它利用了 K8sLocal 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ī)上的 80443 端口。

#操作和上面基本是一致的
#請使用--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

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資源
$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)軟件 旨在替換vSphereNutanix的開源替代方案
    • K3s 周邊項(xiàng)目 - octopus 主要用于邊緣計(jì)算相關(guān) 用于K8Sk3s的輕量級云原生設(shè)備管理系統(tǒng) 集群可以將邊緣設(shè)備作為自定義k8s資源進(jìn)行管理

原文標(biāo)題:輕量級 Kubernetes 集群發(fā)行版 K3s 完全進(jìn)階指南

文章出處:【微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 工具
    +關(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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    創(chuàng)建51輕量級操作系統(tǒng)

    創(chuàng)建51輕量級操作系統(tǒng)
    發(fā)表于 09-29 09:58

    10個(gè)輕量級框架

    這些輕量級框架使用HTML5和CSS3標(biāo)準(zhǔn)來幫助您快速開發(fā)跨平臺的Web移動應(yīng)用和網(wǎng)站。
    發(fā)表于 07-17 08:25

    輕量級深度學(xué)習(xí)網(wǎng)絡(luò)是什么

    輕量級深度學(xué)習(xí)網(wǎng)絡(luò)概覽
    發(fā)表于 04-23 14:53

    輕量級的ui框架如何去制作

    原創(chuàng)分享:自制輕量級單片機(jī)UI框架框架元素用戶接口代碼開源平時(shí)常看csdn,但是從來沒有自己寫過。正好這幾天需要用單片機(jī)做一個(gè)簡易的ui界面,于是自己寫了一個(gè)輕量級的ui框架。發(fā)個(gè)csdn分享給大家
    發(fā)表于 07-14 07:39

    輕量級工作流引擎架構(gòu)設(shè)計(jì)

    為了克服傳統(tǒng)工作流管理系統(tǒng)的不足,設(shè)計(jì)了工作流管理型系統(tǒng)的原型體系結(jié)構(gòu),搭建了輕量級工作流引擎的核心架構(gòu),詳細(xì)地介紹輕量級工作流引擎各個(gè)組件及功能,該架構(gòu)能根據(jù)
    發(fā)表于 04-12 16:15 ?0次下載
    <b class='flag-5'>輕量級</b>工作流引擎架構(gòu)設(shè)計(jì)

    時(shí)候?qū)⒏咔骞ぷ髁鬓D(zhuǎn)換為4K/8K工作流的TICO輕量級壓縮技術(shù)介紹

    intoPIX的產(chǎn)品和營銷經(jīng)理Jean-Baptiste Lorent描述了TICO輕量級壓縮,非常適合將高清工作流轉(zhuǎn)換為4K / 8K工作流。
    的頭像 發(fā)表于 11-22 07:08 ?4536次閱讀

    如何使用kubernetes client-go實(shí)踐一個(gè)簡單的與K8s交互過程

    【導(dǎo)讀】Kubernetes項(xiàng)目使用Go語言編寫,對Go api原生支持非常便捷。 本篇文章介紹了如何使用kubernetes client-go實(shí)踐一個(gè)簡單的與K8s交互過程
    的頭像 發(fā)表于 02-02 11:16 ?6778次閱讀
    如何使用<b class='flag-5'>kubernetes</b> client-go實(shí)踐一個(gè)簡單的與<b class='flag-5'>K8s</b>交互過程

    探入探討k0s介紹k0sctl使用

    解決這種問題;所以也在探索比較方便的二進(jìn)制部署方式,比如這個(gè) k0s。 一、k0s 介紹 The Simple, Solid Certified Kubernetes Distribu
    的頭像 發(fā)表于 10-20 15:51 ?2823次閱讀
    探入探討<b class='flag-5'>k0s</b><b class='flag-5'>介紹</b>及<b class='flag-5'>k</b>0sctl使用

    k3s輕量級Kubernetes

    ./oschina_soft/gitee-k3s.zip
    發(fā)表于 05-10 09:56 ?0次下載
    <b class='flag-5'>k3s</b><b class='flag-5'>輕量級</b><b class='flag-5'>Kubernetes</b>

    K8S(kubernetes)學(xué)習(xí)指南

    K8S(kubernetes)學(xué)習(xí)指南
    發(fā)表于 06-29 14:14 ?0次下載

    一個(gè)高并發(fā)、輕量級的信息泄露掃描工具BBScan

    BBScan 是一個(gè)高并發(fā)、輕量級的信息泄露掃描工具
    的頭像 發(fā)表于 09-21 10:19 ?1578次閱讀

    PSoC NeoPixel Easy輕量級

    電子發(fā)燒友網(wǎng)站提供《PSoC NeoPixel Easy輕量級庫.zip》資料免費(fèi)下載
    發(fā)表于 11-17 09:48 ?0次下載
    PSoC NeoPixel Easy<b class='flag-5'>輕量級</b>庫

    什么是K3sK8sK3sK8s有什么區(qū)別?

    Kubernetes,通常縮寫為 K8s,是領(lǐng)先的容器編排工具。該開源項(xiàng)目最初由 Google 開發(fā),幫助塑造了現(xiàn)代編排的定義。該系統(tǒng)包括了部署和運(yùn)行容器化系統(tǒng)所需的一切。
    的頭像 發(fā)表于 08-03 10:53 ?7302次閱讀

    輕量級數(shù)據(jù)庫有哪些

    數(shù)據(jù)庫系統(tǒng)由于其小巧、快速、易用等優(yōu)勢,越來越受到人們的青睞。那么,輕量級數(shù)據(jù)庫有哪些?本文將為大家介紹幾種常見的輕量級數(shù)據(jù)庫系統(tǒng)。 1. SQLite SQLite被廣泛應(yīng)用于各種移動應(yīng)用程序、Web應(yīng)用程序和嵌入式系統(tǒng)中。它
    的頭像 發(fā)表于 08-28 16:41 ?5882次閱讀

    Linux輕量級工具集合Busybox的特點(diǎn)和使用

    Busybox是一個(gè)開源的、輕量級的軟件工具集合,旨在提供一個(gè)精簡的Unix工具集,適用于嵌入式系統(tǒng)和資源受限的環(huán)境。它將許多常用的Unix工具(如ls、cp、cat、mv、grep、
    的頭像 發(fā)表于 11-10 09:50 ?1364次閱讀