當前位置:首頁 » 編程軟體 » k3s編譯

k3s編譯

發布時間: 2025-01-14 23:12:15

⑴ 雲原生有哪些優勢

雲原生的優勢簡單來說有以下幾點:

1、實現應用更小體積

對於微服務化架構而言,擁有了更小的體積代表了未來將會是更少的下載帶寬,而且更快地分發下載速度,在工作上會提高工作效率,節省更多的工作時間。

2、擁有更快的啟動速度

相比傳統的單體應用而言,啟動速度與運行效率快慢並不是重要的指標,但是對於需要快速迭代、水平擴展的雲原生微服務架構應用而言,更快的啟動速度就意味著更高的交付效率,和更加快速的回滾,尤其是面對較多應用的時候,可能僅僅才500ms的反應時間也會讓用戶感覺到延遲,從而造成用戶的體驗感變差。

3、實際佔用資源更少

在實際的運行中佔用的資源更低,也就代虧嘩族表了更高的部署密度和更低的計算成本,同時,在JVM啟動時需要消耗大量CPU資源對位元組碼進行編譯,降低啟動時資源消耗,可以減少資源爭搶,更好保障其他應用SLA。

4、數據沒有固定的存儲模式

也就說,在如今的實際使用中,雲原生應用和服務既可銷弊以用JSON來處理數據,也可以用protocol buffer 或傳統的 XML 來構造數據。很大程度上滿足了不同的用戶需求,無論是操作,還是實際都帶來極大的便利性。

5、彈性擴展

雲原生架構的主要特點是微服務、容器化、DevOps 、持續交付四個主要的特點,也正因為如此它的資源是可以按照實際情況進行伸縮,這樣不但提高資源的利用率,也大大降低了企業成本。

6、系統更加安全強壯

雲原生架構依託於容器編排工具(K8S)與微服務的組合,應用就擁有了自動恢復能力、容錯能力、故障隔離能力,讓應用時刻處於可用的狀態。

7、屏蔽底層差異

因為使用了容器化技術,應用運行於容器之中,應用就不需要考慮底層硬體的差異,只要是能運行容器鏡像的硬體都可以運行程序,大大簡化了開發工蘆派作量。同時對運維人員也非常友好,不需要再為環境問題而苦惱。

⑵ 使用 k3s 在 Fedora IoT 上運行 K8S

Fedora IoT 是一個即將發布的、面向物聯網的 Fedora 版本。去年 Fedora Magazine 的《 如何使用 Fedora IoT 點亮 LED 燈 》一文第一次介紹了它。從那以後,它與 Fedora Silverblue 一起不斷改進,以提供針對面向容器的工作流的不可變基礎操作系統。

Kubernetes 是一個頗受歡迎的容器編排系統。它可能最常用在那些能夠處理巨大負載的強勁硬體上。不過,它也能在像樹莓派 3 這樣輕量級的設備上運行。讓我們繼續閱讀,來了解如何運行它。

雖然 Kubernetes 在雲計算領域風靡一時,但讓它在小型單板機上運行可能並不是常見的。不過,我們有非常明確的理由來做這件事。首先,這是一個不需要昂貴硬體就可以學習並熟悉 Kubernetes 的好方法;其次,由於它的流行性,市面上有 大量應用 進行了預先打包,以用於在 Kubernetes 集群中運行。更不用說,當你遇到問題時,會有大規模的社區用戶為你提供幫助。

最後但同樣重要的是,即使是在家庭實驗室這樣的小規模環境中,容器編排也確實能夠使事情變得更加簡單。雖然在學習曲線方面,這一點並不明顯,但這些技能在你將來與任何集群打交道的時候都會有幫助。不管你面對的是一個單節點樹莓派集群,還是一個大規模的機器學習場,它們的操作方式都是類似的。

一個「正常」安裝的 Kubernetes(如果有這么一說的話)對於物聯網來說有點沉重。K8s 的推薦內存配置,是每台機器 2GB!不過,我們也有一些替代品,其中一個新人是 k3s —— 一個輕量級的 Kubernetes 發行版。

K3s 非常特殊,因為它將 etcd 替換成了 SQLite 以滿足鍵值存儲需求。還有一點,在於整個 k3s 將使用一個二進制文件分發,而不是每個組件一個。這減少了內存佔用並簡化了安裝過程。基於上述原因,我們只需要 512MB 內存即可運行 k3s,極度適合小型單板電腦!

安裝 k3s 非常簡單。直接運行安裝腳本

它會下載、安裝並啟動 k3s。安裝完成後,運行以下命令來從伺服器獲取節點列表:

需要注意的是,有幾個選項可以通過環境變數傳遞給安裝腳本。這些選項可以在 文檔 中找到。當然,你也完全可以直接下載二進制文件來手動安裝 k3s。

對於實驗和學習來說,這樣已經很棒了,不過單節點的集群也不能算一個集群。幸運的是,添加另一個節點並不比設置第一個節點要難。只需要向安裝腳本傳遞兩個環境變數,它就可以找到第一個節點,而不用運行 k3s 的伺服器部分。

上面的 example-url 應被替換為第一個節點的 IP 地址,或一個完全限定域名。在該節點中,(用 XXX 表示的)令牌可以在 /var/lib/rancher/k3s/server/node-token 文件中找到。

現在我們有了一個 Kubernetes 集群,我們可以真正做些什麼呢?讓我們從部署一個簡單的 Web 伺服器開始吧。

這會從名為 nginx 的容器鏡像中創建出一個名叫 my-server 的 部署 (默認使用 docker hub 注冊中心,以及 latest 標簽)。

為了訪問到 pod 中運行的 nginx 伺服器,首先通過一個 服務 來暴露該部署。以下命令將創建一個與該部署同名的服務。

服務將作為一種負載均衡器和 Pod 的 DNS 記錄來工作。比如,當運行第二個 Pod 時,我們只需指定 my-server(服務名稱)就可以通過 curl 訪問 nginx 伺服器。有關如何操作,可以看下面的實例。

默認狀態下,一個服務只能獲得一個 ClusterIP(只能從集群內部訪問),但你也可以通過把它的類型設置為 LoadBalancer 為該服務申請一個外部 IP。不過,並非所有應用都需要自己的 IP 地址。相反,通常可以通過基於 Host 請求頭部或請求路徑進行路由,從而使多個服務共享一個 IP 地址。你可以在 Kubernetes 使用 Ingress 完成此操作,而這也是我們要做的。Ingress 也提供了額外的功能,比如無需配置應用即可對流量進行 TLS 加密

Kubernetes 需要 Ingress 控制器來使 Ingress 資源工作,k3s 包含 Traefik 正是出於此目的。它還包含了一個簡單的服務負載均衡器,可以為集群中的服務提供外部 IP。這篇 文檔 描述了這種服務:

Ingress 控制器已經通過這個負載均衡器暴露在外。你可以使用以下命令找到它正在使用的 IP 地址。

找到名為 traefik 的服務。在上面的例子中,我們感興趣的 IP 是 10.0.0.8。

讓我們創建一個 Ingress,使它通過基於 Host 頭部的路由規則將請求路由至我們的伺服器。這個例子中我們使用 xip.io 來避免必要的 DNS 記錄配置工作。它的工作原理是將 IP 地址作為子域包含,以使用 10.0.0.8.xip.io 的任何子域來達到 IP 10.0.0.8。換句話說,my-server.10.0.0.8.xip.io 被用於訪問集群中的 Ingress 控制器。你現在就可以嘗試(使用你自己的 IP,而不是 10.0.0.8)。如果沒有 Ingress,你應該會訪問到「默認後端」,只是一個寫著「404 page not found」的頁面。

我們可以使用以下 Ingress 讓 Ingress 控制器將請求路由到我們的 Web 伺服器的服務。

將以上片段保存到 my-ingress.yaml 文件中,然後運行以下命令將其加入集群:

你現在應該能夠在你選擇的完全限定域名中訪問到 nginx 的默認歡迎頁面了。在我的例子中,它是 my-server.10.0.0.8.xip.io。Ingress 控制器會通過 Ingress 中包含的信息來路由請求。對 my-server.10.0.0.8.xip.io 的請求將被路由到 Ingress 中定義為 backend 的服務和埠(在本例中為 my-server 和 80)。

想像如下場景:你的家或農場周圍有很多的設備。它是一個具有各種硬體功能、感測器和執行器的物聯網設備的異構集合。也許某些設備擁有攝像頭、天氣或光線感測器。其它設備可能會被連接起來,用來控制通風、燈光、百葉窗或閃爍的 LED。

這種情況下,你想從所有感測器中收集數據,在最終使用它來制定決策和控制執行器之前,也可能會對其進行處理和分析。除此之外,你可能還想配置一個儀表盤來可視化那些正在發生的事情。那麼 Kubernetes 如何幫助我們來管理這樣的事情呢?我們怎麼保證 Pod 在合適的設備上運行?

簡單的答案就是「標簽」。你可以根據功能來標記節點,如下所示:

一旦它們被打上標簽,我們就可以輕松地使用 nodeSelector 為你的工作負載選擇合適的節點。拼圖的最後一塊:如果你想在所有合適的節點上運行 Pod,那應該使用 DaemonSet 而不是部署。換句話說,應為每個使用唯一感測器的數據收集應用程序創建一個 DaemonSet,並使用 nodeSelector 確保它們僅在具有適當硬體的節點上運行。

服務發現功能允許 Pod 通過服務名稱來尋找彼此,這項功能使得這類分布式系統的管理工作變得易如反掌。你不需要為應用配置 IP 地址或自定義埠,也不需要知道它們。相反,它們可以通過集群中的命名服務輕松找到彼此。

隨著集群的啟動並運行,收集數據並控制燈光和氣候,可能使你覺得你已經把它完成了。不過,集群中還有大量的計算資源可以用於其它項目。這才是 Kubernetes 真正出彩的地方。

你不必擔心這些資源的確切位置,或者去計算是否有足夠的內存來容納額外的應用程序。這正是編排系統所解決的問題!你可以輕松地在集群中部署更多的應用,讓 Kubernetes 來找出適合運行它們的位置(或是否適合運行它們)。

為什麼不運行一個你自己的 NextCloud 實例呢?或者運行 gitea ?你還可以為你所有的物聯網容器設置一套 CI/CD 流水線。畢竟,如果你可以在集群中進行本地構建,為什麼還要在主計算機上構建並交叉編譯它們呢?

這里的要點是,Kubernetes 可以更容易地利用那些你可能浪費掉的「隱藏」資源。Kubernetes 根據可用資源和容錯處理規則來調度 Pod,因此你也無需手動完成這些工作。但是,為了幫助 Kubernetes 做出合理的決定,你絕對應該為你的工作負載添加 資源請求 配置。

盡管 Kuberenetes 或一般的容器編排平台通常不會與物聯網相關聯,但在管理分布式系統時,使用一個編排系統肯定是有意義的。你不僅可以使用統一的方式來處理多樣化和異構的設備,還可以簡化它們的通信方式。此外,Kubernetes 還可以更好地對閑置資源加以利用。

容器技術使構建「隨處運行」應用的想法成為可能。現在,Kubernetes 可以更輕松地來負責「隨處」的部分。作為構建一切的不可變基礎,我們使用 Fedora IoT。

via: https://fedoramagazine.org/kubernetes-on-fedora-iot-with-k3s/

作者: Lennart Jern 選題: lujun9972 譯者: StdioA 校對: wxy

⑶ 用於本地實驗的小型 Kubernetes:k0s、MicroK8s、kind、k3s 和 Minikube

前言

當您希望在本地環境實驗 Kubernetes 相關概念或技術,但又不想對生產環境造成風險時,小型 Kubernetes 集群成為了理想的選擇。它們適合桌面或筆記本電腦運行,提供了一個安全的沙盒環境來測試想法。市面上涌現出多種解決方案,本文將回顧其中最受歡迎的工具,以幫助您更好地了解它們,並根據需求選擇合適工具。

工具1. K0s

K0s 是一個輕量級的 Kubernetes 實現,旨在提供一個易於設置的環境。通過從項目存儲庫下載其靜態構建的單個文件並進行配置,即可啟動集群。該文件專為 Linux 編譯,只能在該系統上運行。您需要使用命令將文件復制到特定目錄,並啟動服務。K0s 集成了一個用於連接 Kubernetes API 的 kubectl CLI 工具,允許您創建各種 Kubernetes 對象,如命名空間和部署。要添加節點,您需要在其他伺服器上下載和安裝 K0s 二進制文件,並生成身份驗證令牌。卸載 K0s 時,只需停止服務並從主機中刪除相關文件。K0s 使用 containerd 管理容器,並支持 Calico 和 kube-router 作為 CNI。它還提供了自動完成腳本,適用於多種 shell 環境。

工具2. MicroK8s

MicroK8s 是由 Canonical 開發的一個輕量級集群解決方案。與 K0s 類似,集群節點需要手動設置,可在與主節點通過 TCP/IP 連接的任何 Linux 實例上運行。添加新節點同樣需要令牌,內置的 kubectl 工具處理 API 交互。MicroK8s 使用默認的 CNI,並支持 42 個 Linux 發行版。安裝後,您可以啟動集群,同時附帶一組可啟用和禁用的插件。它還包含一個內部注冊表和 microk8s inspect 命令,用於分析集群並生成報告。

工具3. kind

kind 是用於本地運行 Kubernetes 集群的輕量級工具,安裝簡單,僅需下載可執行文件。創建集群涉及設置 Docker 容器和網路許可權,運行 kind create cluster 啟動單個節點。kind 使用 Docker 管理容器,並在創建群集時自動配置 kubectl 訪問 API。您可以使用配置文件創建更復雜的集群,例如三個節點。卸載時只需調用 kind delete cluster。它支持 Bash、zsh 和 fish 的自動完成腳本,不附帶任何插件,但允許使用其他 CNI,例如 Flannel 和 Traefik。

工具4. K3s

K3s 是 Rancher 的 Kubernetes 發行版,名稱旨在強調其輕量級和簡單性。它與 K0s 和 MicroK8s 類似,但具有更少的功能。啟動後,K3s 會創建具有兩種角色之一的群集節點。大部分磁碟驅動程序和雲提供程序驅動程序已從構建中排除,以減小可執行文件大小。在最簡單情況下,您可以使用 Docker Desktop 將群集作為單個節點的一部分運行。k3d 實用程序管理在 Linux 中運行的 K3s 節點。

工具5. Minikube

Minikube 適用於基於 Debian 和 Red Hat 的 Linux 發行版,安裝和配置相對簡單。它實現了一個本地 Kubernetes 環境,支持 Bash、zsh 和 fish 的自動完成腳本。您可以選擇使用的 CNI 插件,並使用命令將節點添加到群集。使用 minikube status 命令查看群集狀態。Minikube 還支持多個配置文件的集群,以及一組插件,允許您輕松激活組件,如注冊表、入口代理和 Istio。

替代解決方案

本文未涵蓋所有小型 Kubernetes 解決方案,但提到了一些較少受歡迎的項目,例如支持的操作系統兼容性。K0s、MicroK8s、K3s 和 Minikube 在 Linux 環境中運行,但藉助虛擬化工具,它們也可以在不同操作系統上部署。比較表提供了基本功能摘要,以幫助您根據任務、資源和網路基礎設施需求做出選擇。

熱點內容
怎麼調好一個伺服器 發布:2025-01-15 09:34:59 瀏覽:400
java流程式控制制 發布:2025-01-15 09:33:32 瀏覽:301
訊飛語音源碼 發布:2025-01-15 09:26:04 瀏覽:791
什麼車配置好開 發布:2025-01-15 09:24:37 瀏覽:816
編譯程序用cpu嗎 發布:2025-01-15 09:24:24 瀏覽:440
ftp4j下載 發布:2025-01-15 09:01:44 瀏覽:784
手機wifi密碼在哪裡看 發布:2025-01-15 08:59:16 瀏覽:112
自從編程s 發布:2025-01-15 08:46:41 瀏覽:832
android獲取許可權 發布:2025-01-15 08:45:15 瀏覽:963
採用請求分頁存儲 發布:2025-01-15 08:45:04 瀏覽:249