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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenYurt开箱测评|一键让原生K8s集群具备边缘计算能力

發布時間:2024/8/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenYurt开箱测评|一键让原生K8s集群具备边缘计算能力 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者| 鄭超 阿里云高級開發工程師

隨著物聯網技術以及 5G 技術的高速發展,將云計算的能力延伸至邊緣設備端,并通過中心進行統一交付、管控,已成為云計算的重要發展趨勢。為服務更多開發者把握這一趨勢,5 月 29 日,阿里巴巴正式對外開源了基于 ACK@Edge(邊緣集群托管服務)的云原生邊緣計算框架?—— OpenYurt。

自 OpenYurt 開源以來受到了開發者的關注,今天這篇文章將帶大家快速上手 OpenYurt ,介紹如何使用 OpenYurt 提供的命令行管理工具 Yurtctl, 高效快速地部署 OpenYurt 集群。

OpenYurt 介紹

OpenYurt 主打“云邊一體化”概念,依托 Kubernetes 強大的容器應用編排能力,滿足了云-邊一體化的應用分發、交付、和管控的訴求。相較于其他基于 Kubernetes 的邊緣計算框架,OpenYurt 秉持著“最小修改”原則,通過在邊緣節點安裝 Yurthub 組件,和在云端部署 Yurt-controller-manager,保證了在對 Kubernetes 零侵入的情況下,提供管理邊緣計算應用所需的相關能力。OpenYurt 能幫用戶解決在海量邊、端資源上完成大規模應用交付、運維、管控的問題,并提供中心服務下沉通道,實現和邊緣計算應用的無縫對接。在設計 OpenYurt 之初,我們就非常強調保持用戶體驗的一致性,不增加用戶運維負擔,讓用戶真正方便地 “Extending your native kubernetes to edge”。

Yurtctl:一鍵讓原生 K8s 集群具備邊緣計算能力

為了讓原生 K8s 集群具備邊緣計算能力,OpenYurt 以 addon 為載體,非侵入式給原生 K8s 增強了如下能力:

  • 邊緣自治能力(YurtHub: 已開源),保證在弱網或者重啟節點的情況下,部署在邊緣節點上的應用也能正常運行;
  • 云邊協同能力(待開源),通過云邊運維通道解決邊緣的運維需求,同時提供云邊協同能力;
  • 單元化管理能力(待開源),為分散的邊緣節點,邊緣應用,應用間流量提供單元化閉環管理能力;
  • 其他一些能力。

對于大家比較關心的問題:如何將增強的邊緣計算能力和原生 K8s 無縫融合。基于過往 ACK@Edge 的線上運維經驗,我們開源了 Yurtctl 命令行工具,幫助實現了原生 Kubernetes 和 OpenYurt 之間的無縫轉換以及對 OpenYurt 相關組件的高效運維。

Yurtctl 的工作原理

圖 1 - Yurtctl convert 流程

Yurtctl 是一個中心化的管控工具。在 OpenYurt 云-邊一體的架構里,Yurtctl 將直接與 APIServer 進行交互。它借助原生 Kubernetes 的 Job workload 對每個 node 進行運維操作。如圖1所示,在執行轉換(convert)操作時,Yurtctl 會通過 Job 將一個 servant Pod 部署到用戶指定的邊緣節點上,servant Pod 里的容器執行的具體操作請參考:https://github.com/alibaba/openyurt/blob/master/config/yurtctl-servant/setup_edgenode。

由于 servant Pod 需要直接操作節點 root 用戶的文件系統(例如將 yurthub 配置文件放置于 /etc/kubernetes/manifests 目錄下),并且需要重置系統管理程序(kubelet.service), servant Pod 中的 container 將被賦予 privileged 權限,允許其與節點共享 pid namespace,并將借由 nsenter 命令進入節點主命名空間完成相關操作。當 servant Job 成功執行后,Job 會自動刪除。如果失敗,Job 則會被保留,方便運維人員排查錯誤原因。借由該機制,Yurtctl 還可對 Yurthub 進行更新或者刪除。

案例:一鍵轉換 OpenYurt 集群

注:在 ACK 上做 demo 實驗

1. 獲取 yurtctl

OpenYurt github 倉庫包括了 yurtctl 的源碼,下載 OpenYurt 倉庫之后,即可通過編譯獲得 yurtctl,具體命令如下:

$ make build WHAT=cmd/yurtctl hack/make-rules/build.sh cmd/yurtctl Building cmd/yurtctl

編譯成功之后,yurtctl 可執行文件就可以在?_output/bin/?目錄下找到。

2. 將 Kubernetes 轉換為 OpenYurt

如果我們想將一個雙節點(node1 和 node2)的 Kubernetes 集群轉換成 OpenYurt 集群,并且只想讓 node2 成為自治邊緣節點,那么可以通過執行 yurtctl convert 來實現,具體命令如下:

$ yurtctl convert --cloud-nodes node1 --provider ack I0603 14:34:33.714304 40825 convert.go:164] mark node1 as the cloud-node I0603 14:34:33.719816 40825 convert.go:172] mark node2 as the edge-node I0603 14:34:33.736609 40825 convert.go:198] deploy the yurt controller manager I0603 14:34:33.742272 40825 convert.go:210] deploying the yurt-hub and resetting the kubelet service... I0603 14:34:53.810165 40825 util.go:168] servant job(yurtctl-servant-convert-node2) has succeeded

成功配置節點之后,我們需要將邊緣節點標記為自治狀態,具體命令如下:

$ yurtctl markautonomous # 如果用戶只想標記部分邊緣節點,則可以使用 --autonomous-nodes 選項指定 I0602 11:22:05.610222 89160 markautonomous.go:149] mark node2 as autonomous

接著我們就可以測試 node2 在斷網環境下是否能實現節點自治。首先,在 node2 上部署一個測試 pod:

$ kubectl apply -f-<<EOF apiVersion: v1 kind: Pod metadata:name: bbox spec:nodeName: node2containers:- image: busyboxcommand:- topname: bbox EOF pod/bbox created

登陸到 node2 上,將 Yurthub 的 --server-addr 參數設置為一個不可訪問的地址:

sudo sed -i 's|--server-addr=.*|--server-addr=https://1.1.1.1:1111|' /etc/kubernetes/manifests/yurt-hub.yaml

耐心等待 40 秒,我們將觀察到,即使 node2 已經處于 NotReady 狀態,pod1 仍然處于 Running 狀態。這說明當邊緣節點處于自治狀態時,即使 node 不在線,Pod 也不會被云端 node controller 驅逐。

$ kubectl get node NAME STATUS ROLES AGE VERSION node1 Ready master 14m v1.14.8 node2 NotReady <none> 12m v1.14.8 $ kubectl get pod NAME READY STATUS RESTARTS AGE bbox 1/1 Running 0 5m12s

這時如果將 node2 重啟,我們可以用?docker ps?(假設節點使用 docker 作為 container runtime)命令來驗證 bbox Pod 會被重新拉起。

$ docker ps --format 'table {{.ID}}\t{{.Image}}\t{{.RunningFor}}' | grep busybox d0c8134fddc1 busybox About a minutes ago

這是因為 Kubelet 會從 Yurthub 讀取緩存的數據,恢復重啟前的Pod狀態。這部分技術細節我們會在后續的文章里詳細介紹。

3. 將 OpenYurt 轉換回 Kubernetes

相對的,通過運行 yurtctl revert 命令,用戶可以將一個 OpenYurt 集群轉換回 Kubernetes 集群。假設我們想將上述雙節點 Kubernetes 集群轉換回 Kubernetes 模式,那么只需運行以下命令即可(運行該命令前,請先將 node2 上的 yurthub 重新連上 apiserver):

$ yurtctl revert I0603 14:38:55.522376 41016 revert.go:106] label alibabacloud.com/is-edge-worker is removed I0603 14:38:55.527998 41016 revert.go:116] yurt controller manager is removed I0603 14:38:55.548354 41016 revert.go:130] ServiceAccount node-controller is created I0603 14:39:05.572686 41016 util.go:168] servant job(yurtctl-servant-revert-node2) has succeeded I0603 14:39:05.572718 41016 revert.go:142] yurt-hub is removed, kubelet service is reset

如果還想了解更多 yurtctl 的使用方法,請參考 OpenYurt github 倉庫下的[ ]()yurtctl的教程:https://github.com/alibaba/openyurt/tree/master/docs/tutorial。

What's Next

Yurtctl 目標是成為運維人員管理 OpenYurt 集群的有力工具。因此我們會持續演進 Yurtctl 以支持 OpenYurt 的新功能和新增的運維流程或場景。例如,不久之后 OpenYurt 還將開源 Yurttunnel,Yurtunit 等組件,Yurtctl 也將對這些組件提供支持。我們同時歡迎大家提出對 Yurtctl 的需求,一起努力使其更加完善。

社區建設

OpenYurt 社區歡迎新用戶加入和參與共建。用戶可以通過?Github issue?獲取技術支持、報告 bug、提出需求意見等,或者通過 OpenYurt 用戶釘釘群直接和core開發人員取得聯系。(歡迎釘釘搜索群號加入交流群:31993519)

歡迎參與共建:OpenYurt 項目地址 -?https://github.com/alibaba/openyurt

課程推薦

為了更多開發者能夠享受到 Serverless 帶來的紅利,這一次,我們集結了 10+ 位阿里巴巴 Serverless 領域技術專家,打造出最適合開發者入門的 Serverless 公開課,讓你即學即用,輕松擁抱云計算的新范式——Serverless。

點擊即可免費觀看課程:https://developer.aliyun.com/learning/roadmap/serverless

“阿里巴巴云原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的公眾號。”

原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的OpenYurt开箱测评|一键让原生K8s集群具备边缘计算能力的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。