国产性生交xxxxx免费-国产中文字幕-啊灬啊灬啊灬快灬高潮了,亚洲国产午夜精品理论片在线播放 ,亚洲欧洲日本无在线码,色爽交视频免费观看

鍋爐信息網(wǎng) > 鍋爐知識(shí) > 鍋爐學(xué)習(xí)

K3S 入門級(jí)實(shí)戰(zhàn)教程,和 K8S 有何不同?

發(fā)布時(shí)間:

我們知道 Kubernetes(或 K8s)是用于管理容器化工作負(fù)載和服務(wù)的便攜式開源平臺(tái)。它有助于在集群中編排和管理 pod 中的應(yīng)用程序。它


我們知道 Kubernetes(或 K8s)是用于管理容器化工作負(fù)載和服務(wù)的便攜式開源平臺(tái)。它有助于在集群中編排和管理 pod 中的應(yīng)用程序。它還有效地改進(jìn)了任務(wù),例如重新部署的零停機(jī)時(shí)間或容器的自我修復(fù)。

如果我們想在嵌入式系統(tǒng)中使用 K8s,或者快速建立一個(gè)帶有節(jié)點(diǎn)的本地 Kubernetes 集群,我們可能有必要試試 K3s

[1]

在本教程中,我們將討論 K3s 的主要特性并制作一個(gè)簡(jiǎn)單的集群示例。

2. K3s:輕量級(jí)的 K8s

K3s 是CNCF

[2]
認(rèn)證的 Kubernetes 發(fā)行版和Sandbox
[3]
項(xiàng)目,專為低資源環(huán)境而設(shè)計(jì)。由 Rancher Labs
[4]
維護(hù)著 K3s。

總的來(lái)說(shuō),K3s 提供了一個(gè)開銷較小的 Kubernetes 集群設(shè)置,但仍然集成了 K8s 的大部分架構(gòu)和功能。

以下是 K3s 成為輕量級(jí)發(fā)行版的原因:

  • 打包為具有最小外部依賴性的單個(gè)二進(jìn)制文件

  • 低硬件要求

    [5]
    和內(nèi)存占用
  • 能夠作為單個(gè)服務(wù)器和高可用性

    [6]
    服務(wù)器運(yùn)行

K3s 將標(biāo)準(zhǔn)的 Kubernetes組件

[7]
打包在一個(gè)不到 100 MB 的二進(jìn)制文件中。這是通過(guò)刪除額外的驅(qū)動(dòng)程序、可選的卷插件和第三方云集成來(lái)完成的。

它包含較少的安裝和運(yùn)行 Kubernetes 不需要的部分。但是,我們?nèi)匀豢梢允褂酶郊咏M件與 AWS 或 GCP 等云提供商集成。

K3s 應(yīng)該能夠在具有至少 512M RAM(盡管建議使用 1GB)和一個(gè) CPU 的 Linux 操作系統(tǒng)中運(yùn)行。

盡管 K3s 是 Kubernetes 的輕量級(jí)版本,但它并沒有改變 Kubernetes 的核心工作方式。K3s 架構(gòu)由運(yùn)行在集群中的 master 服務(wù)器和代理(或工作節(jié)點(diǎn))組成。它仍然有 CoreDNS 和 Ingress Controller 作為核心 Networking 的一部分。它有一個(gè)內(nèi)置的 SQLite 數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)所有的服務(wù)器信息。

盡管如此,如果我們需要一個(gè)高可用性服務(wù)器,也可以插入到一個(gè)外部數(shù)據(jù)庫(kù),例如ETCD

[8]
、MySQL
[9]
或Postgres
[10]
。Flannel
[11]
作為集群網(wǎng)絡(luò)的默認(rèn)CNI
[12]
插件。

最后,作為完全認(rèn)證的 K8s 版本,我們可以編寫 YAML 來(lái)像使用 K8s 一樣在 K3s 集群上運(yùn)行。例如,當(dāng)我們管理工作負(fù)載

[13]
或定義 pod與服務(wù)和負(fù)載平衡的網(wǎng)絡(luò)
[14]
時(shí),同樣使用kubectl
[15]
與集群交互。

3.使用

下面看看如何安裝 K3s,如何訪問集群,如何將節(jié)點(diǎn)添加到 master。

3.1. 安裝

基本安裝

[16]
命令很簡(jiǎn)單:$curl-sfLhttps://get.k3s.io|sh-n

這會(huì)執(zhí)行來(lái)自 k3s 官方安裝腳本

[17]
,并在我們的 Linux 主機(jī)中將 K3s 作為服務(wù)運(yùn)行。

作為替代方案,我們可以下載一個(gè)特定指定版本

[18]
并安裝它。無(wú)論哪種方式,我們都可以將服務(wù)器配置
[19]
選項(xiàng)與環(huán)境變量
[20]
混合使用。

例如,我們可能想要禁用 Flannel 并使用不同的 CNI 提供程序。

我們可以通過(guò)運(yùn)行腳本來(lái)做到這一點(diǎn):

$curl-sfLhttps://get.k3s.io|sh-s---flannel-backendnonen

如果我們已經(jīng)安裝了 K3s 二進(jìn)制文件,我們可以在命令行中添加環(huán)境變量前綴:

$INSTALL_K3S_EXEC="--flannel-backendnone"k3sservern

3.2. 集群訪問

默認(rèn)情況下,K3s 將在/etc/rancher/k3s目錄中安裝一個(gè)配置文件。安裝完成后,和 K8s 類似,我們需要定義一個(gè)配置文件位置。

我們可以通過(guò)導(dǎo)出一個(gè)環(huán)境變量讓 K3s 指向配置文件:

$exportKUBECONFIG=/etc/rancher/k3s/k3s.yamln

作為替代方案,可以在 K8s 默認(rèn)指向的主目錄中定義配置文件:

$mkdir-p~/.kuben$sudok3skubectlconfigview--raw|tee~/.kube/confign$chmod600~/.kube/confign

可以檢查集群是否正在運(yùn)行:

$kubectlgetnodesnNAMESTATUSROLESAGEVERSIONn<cluster-name>Readycontrol-plane,master4d3hv1.25.6+k3s1n

值得注意的是,我們可以看到控制平面將與主節(jié)點(diǎn)一起運(yùn)行。

現(xiàn)在讓我們看看創(chuàng)建了哪些容器(pods):

$kubectlgetpods--all-namespacesnNAMESPACENAMEREADYSTATUSRESTARTSAGEnkube-systemhelm-install-traefik-crd-6v28l0/1Completed04d2hnkube-systemhelm-install-traefik-vvfh20/1Completed24d2hnkube-systemsvclb-traefik-cfa7b330-fkmms2/2Running10(8hago)4d2hnkube-systemtraefik-66c46d954f-2lvzr1/1Running5(8hago)4d2hnkube-systemcoredns-597584b69b-sq7mk1/1Running5(8hago)4d2hnkube-systemlocal-path-provisioner-79f67d76f8-2dkkt1/1Running8(8hago)4d2hn

可以在集群上看到可用 pod 的列表。

可以看到一個(gè)基本的 K3s 設(shè)置,包括:

  • Traefik

    [21]
    作為 HTTP 反向代理和負(fù)載均衡的入口控制器
  • CoreDns

    [22]
    管理集群和節(jié)點(diǎn)內(nèi)的 DNS 解析
  • Local Path Provisioner

    [23]
    提供了一種在每個(gè)節(jié)點(diǎn)中利用本地存儲(chǔ)的方法
  • Helm

    [24]
    ,我們可以使用它來(lái)打包、部署

K3s 將在單個(gè)服務(wù)器或代理進(jìn)程中運(yùn)行所有組件,而不是在不同的進(jìn)程中運(yùn)行組件。由于它被打包在一個(gè)文件中,我們也可以[離線安裝]((https://docs.k3s.io/installation/airgap "離線安裝")。當(dāng)然,我們還可以使用 K3d

[25]
在 Docker 中運(yùn)行 K3s 。

3.3. 添加節(jié)點(diǎn)

如果我們想將節(jié)點(diǎn)添加到集群中,只需要執(zhí)行指向節(jié)點(diǎn)主機(jī)的相同命令:

$curl-sfLhttps://get.k3s.io|K3S_URL=https://<node-host>:6443K3S_TOKEN=mynodetokensh-n

K3S_TOKEN 存儲(chǔ)在本地:

$cat/var/lib/rancher/k3s/server/node-tokenn

一旦工作節(jié)點(diǎn)加入主節(jié)點(diǎn),控制平面就會(huì)識(shí)別節(jié)點(diǎn)和在其上調(diào)度服務(wù) Pod。

4.部署服務(wù)

讓我們做一個(gè)簡(jiǎn)單的集群示例,我們將在其中安裝一個(gè) Nginx 鏡像。

創(chuàng)建一個(gè) Nginx 鏡像的 deployment ,其中三個(gè)副本,通過(guò)端口 80 提供服務(wù):

$kubectlcreatedeploymentnginx--image=nginx--port=80--replicas=3n

接下來(lái),檢查一下 pod:

$kubectlgetpodsnNAMEREADYSTATUSRESTARTSAGEnnginx-ff6774dc6-ntxv61/1Running017snnginx-ff6774dc6-qs4r61/1Running017snnginx-ff6774dc6-nbxmx1/1Running017sn

應(yīng)該看到三個(gè)正在運(yùn)行的容器。

Pod 不是永久資源,會(huì)不斷創(chuàng)建和銷毀,IP 發(fā)生變化。因此,需要一個(gè)服務(wù)來(lái)動(dòng)態(tài)地將 pod 的 IP 映射到外部世界。

我們將選擇一個(gè) ClusterIp 類型的 Service:

$kubectlcreateserviceclusteripnginx--tcp=80:80n

看看我們的服務(wù)定義:

$kubectldescribeservicenginxnName:nginxnNamespace:defaultnLabels:app=nginxnAnnotations:<none>nSelector:app=nginxnType:ClusterIPnIPFamilyPolicy:SingleStacknIPFamilies:IPv4nIP:10.43.238.194nIPs:10.43.238.194nPort:80-8080/TCPnTargetPort:80/TCPnEndpoints:10.42.0.10:80,10.42.0.11:80,10.42.0.9:80n

我們可以看到訪問應(yīng)用程序的 pod(或容器)地址對(duì)應(yīng)的 Endpoints。

服務(wù)沒有直接訪問權(quán)限。Ingress Controller 通常位于它前面,用于緩存、負(fù)載平衡和安全合規(guī)控制,例如過(guò)濾掉惡意請(qǐng)求。

最后,讓我們?cè)?YAML 文件中定義一個(gè) Traefik 控制器。這會(huì)將流量從傳入請(qǐng)求路由到服務(wù):

apiVersion:networking.k8s.io/v1nkind:Ingressnmetadata:nname:nginxnannotations:ningress.kubernetes.io/ssl-redirect:"false"nspec:nrules:n-http:npaths:n-path:/npathType:Prefixnbackend:nservice:nname:nginxnport:nnumber:80n

我們可以通過(guò)將此資源應(yīng)用于集群來(lái)創(chuàng)建 ingress

$kubectlapply-f<nginx-ingress-file>.yamln

describe一下:

$kubectldescribeingressnginxnName:nginxnLabels:<none>nNamespace:defaultnAddress:192.168.1.103nIngressClass:traefiknDefaultbackend:<default>nRules:nHostPathBackendsn----------------n*n/nginx:80(10.42.0.10:80,10.42.0.11:80,10.42.0.9:80)nAnnotations:ingress.kubernetes.io/ssl-redirect:falsen

現(xiàn)在可以通過(guò)從主機(jī)或?yàn)g覽器向 192.168.1.103 地址發(fā)送 GET 請(qǐng)求來(lái)訪問 Nginx 主頁(yè)。

我們可能想向入口控制器添加一個(gè) 負(fù)載均衡器

[26]
K3s 默認(rèn)使用 ServiceLB
[27]
。

5. K8s 和 K3s 有何不同

K3s 和 K8s 之間最顯著的區(qū)別是包裝。K3s 是一個(gè)不到 100MB 的單一打包二進(jìn)制文件。K8s 有多個(gè)組件作為進(jìn)程運(yùn)行。

此外,作為一個(gè)更輕量級(jí)的版本,K3s 可以在幾秒鐘內(nèi)啟動(dòng)一個(gè) Kubernetes 集群。我們可以用更少的資源更快地運(yùn)行操作。

K3s 支持 AMD64、ARM64 和 ARMv7 等架構(gòu)。這意味著我們可以在任何地方運(yùn)行它,例如,在 Raspberry PI Zero 中。K3s 還可以處理連接受限的環(huán)境。

在學(xué)習(xí) K3s 時(shí)上手更快,需要掌握的命令更少。開始使用它的工作量比 K8s 少,例如,如果我們還沒有使用分布式集群的背景。

但是,對(duì)于復(fù)雜的集群或繁重的工作負(fù)載,我們?nèi)匀粦?yīng)該考慮使用 K8s。K3s 確實(shí)提供了一個(gè)高可用性選項(xiàng),但它需要做更多的工作才能插入,例如,不同的數(shù)據(jù)庫(kù)或集成云提供商。

如果要在 K3s 和 K8s 之間做出決定,可能會(huì)歸結(jié)為資源的考量。但是,K3s 是持續(xù)集成測(cè)試的不錯(cuò)選擇。

六,結(jié)論

在本文中,我們將 K3s 視為一種輕量級(jí)發(fā)行版和 K8s 的有效替代品。它需要的資源少并且設(shè)置啟動(dòng)。我們?cè)趧?chuàng)建一個(gè)簡(jiǎn)單集群的示例時(shí)已經(jīng)看到了這一點(diǎn)。

盡管如此,它仍然與 K8s 完全兼容,并且也是高可用性服務(wù)器的潛在用途。最后,我們討論了 K8s 和 K3s 的不同之處,以及我們什么時(shí)候應(yīng)該使用 K3s。

作者:baeldung

出處:https://goo.gs/rgram

參考資料

[1]

K3s: https://docs.k3s.io/

[2]

CNCF: https://www.cncf.io/

[3]

Sandbox: https://www.cncf.io/sandbox-projects/

[4]

Rancher Labs: https://ranchermanager.docs.rancher.com/

[5]

硬件要求: https://docs.k3s.io/installation/requirements#hardware

[6]

高可用性: https://docs.k3s.io/architecture#high-availability-k3s-server-with-an-external-db

[7]

組件: https://kubernetes.io/docs/concepts/overview/components/

[8]

ETCD: https://etcd.io/

[9]

MySQL: https://www.mysql.com/

[10]

Postgres: https://www.postgresql.org/

[11]

Flannel: https://github.com/flannel-io/flannel#flannel

[12]

CNI: https://github.com/containernetworking/cni#cni---the-container-network-interface

[13]

工作負(fù)載: https://kubernetes.io/docs/concepts/workloads/

[14]

與服務(wù)和負(fù)載平衡的網(wǎng)絡(luò): https://kubernetes.io/docs/concepts/services-networking/

[15]

kubectl: https://kubernetes.io/docs/reference/kubectl/

[16]

安裝: https://docs.k3s.io/installation

[17]

k3s 官方安裝腳本: https://get.k3s.io./

[18]

版本: https://github.com/k3s-io/k3s/releases

[19]

服務(wù)器配置: https://docs.k3s.io/reference/server-config

[20]

環(huán)境變量: https://docs.k3s.io/reference/env-variables

[21]

Traefik: https://traefik.io/

[22]

CoreDns: https://coredns.io/

[23]

Local Path Provisioner: https://github.com/rancher/local-path-provisioner#local-path-provisioner

[24]

Helm: https://helm.sh/

[25]

K3d: https://k3d.io/

[26]

負(fù)載均衡器: https://docs.k3s.io/networking#service-load-balancer

[27]

ServiceLB: https://github.com/k3s-io/klipper-lb



10T 技術(shù)資源大放送!包括但不限于:Linux、虛擬化、容器、云計(jì)算、網(wǎng)絡(luò)、Python、Go 等。在開源Linux公眾號(hào)內(nèi)回復(fù)10T,即可免費(fèi)獲??!Linux學(xué)習(xí)指南有收獲,點(diǎn)個(gè)在看

精選推薦

  • 催化燃燒設(shè)備供應(yīng)商
    催化燃燒設(shè)備供應(yīng)商

    催化燃燒設(shè)備供應(yīng)商,催化燃燒處理裝置廠家,本裝置是采用廢氣先進(jìn)入噴淋塔過(guò)濾——干式過(guò)濾—-蜂窩活性碳吸附—脫附再生——催化燃

  • 該不該有模具供應(yīng)商
    該不該有模具供應(yīng)商

    今天紅姐又來(lái)跟我探討供應(yīng)商的管理問題了。故事是這樣的:供應(yīng)商來(lái)料不良,原因是模具問題。而那個(gè)模具是我們找的一家模具供應(yīng)商做的

  • 什么牌子高壓鍋好,高壓鍋哪個(gè)牌子好,高壓鍋什么牌子好,高壓鍋哪個(gè)品牌好
    什么牌子高壓鍋好,高壓鍋哪個(gè)牌子好,高

    1蘇泊爾 雙重安全閥門 高壓鍋雙重安全閥,防燙把手,復(fù)合底。這款高壓鍋擁有雙重安全閥門,更好的保證使用安全。搭載防燙傷把手,方便起

  • 高壓鍋啥牌子好,高壓鍋哪個(gè)牌子的好,什么高壓鍋牌子好,高壓鍋推薦選購(gòu)指南
    高壓鍋啥牌子好,高壓鍋哪個(gè)牌子的好,什

    1、雙喜階梯型復(fù)底高壓鍋推薦理由:高壓鍋滿足上蒸下煮,飯菜同時(shí)進(jìn)行,方便快速,有效提升烹飪效率。多重安全防護(hù),安全系數(shù)較高,家人使用

0