边缘计算k8s集群之SuperEdge
什么是邊緣計算
邊緣計算,是指在靠近物或數據源頭的一側,采用網絡、計算、存儲、應用核心能力為一體的開放平臺,就近提供最近端服務。其應用程序在邊緣側發起,產生更快的網絡服務響應,滿足行業在實時業務、應用智能、安全與隱私保護等方面的基本需求。邊緣計算處于物理實體和工業連接之間,或處于物理實體的頂端。而云端計算,仍然可以訪問邊緣計算的歷史數據。
邊緣計算在具有低時延、高帶寬、高可靠、海量連接、 異構匯聚和本地安全隱私保護等特點的應用場景,如智能交通、智慧城市、智慧工廠和智能家居等行業或領域,存在非常突出的優勢。比如在自動駕駛領域,邊緣計算是實現自動駕駛的關鍵。智能汽車本質上可以看作是一臺車輪上的大型高功率計算機,其通過多個傳感器收集數據。為了使這些車輛安全可靠地運行,這些傳感器需要立即響應周圍環境,處理速度的任何滯后都可能是致命的。同時邊緣計算將更多的數據計算和存儲從“核心”下沉到“邊緣”,部署于接近數據源的地方,一些數據不必再經過網絡到達云端處理,從而降低時延和網絡負荷,也提升了數據安全性和隱私性。
什么是SuperEdge?
SuperEdge是Kubernetes原生的開源的邊緣容器方案,它將Kubernetes強大的容器管理能力擴展到邊緣計算場景中,針對邊緣計算場景中常見的技術挑戰提供了解決方案,如:單集群節點跨地域、云邊網絡不可靠、邊緣節點位于NAT網絡等。這些能力可以讓應用很容易地部署到邊緣計算節點上,并且可靠地運行。
項目說明
項目地址:
https://github.com/superedge/superedge
SuperEdge可以幫助您很方便地把分布在各處的計算資源放到一個Kubernetes集群中管理,包括但不限于:邊緣云計算資源、私有云資源、現場設備,打造屬于您的邊緣PaaS平臺。
SuperEdge支持所有Kubernetes資源類型、API接口、使用方式、運維工具,無額外的學習成本。也兼容其他云原生項目,如:Promethues,使用者可以結合其他所需的云原生項目一起使用。
SuperEdge項目由以下公司共同發起:騰訊、Intel、VMware、虎牙直播、寒武紀、首都在線和美團。
特點
SuperEdge具有如下特性:
Kubernetes 原生:SuperEdge 以無侵入的方式將 Kubernetes 強大的容器編排、調度能力拓展到邊緣端,其原生支持 Kubernetes,完全兼容 Kubernetes 所有 API 及資源,無額外學習成本
邊緣自治:SuperEdge 提供 L3 級邊緣自治能力,當邊緣節點與云端網絡連接不穩定或處于離線狀態時,邊緣節點可以自主工作,化解了網絡不可靠所帶來的不利影響
分布式節點健康監測:SuperEdge 是業內首個提供邊緣側健康監測能力的開源容器管理系統。SuperEdge 能在邊緣側持續守護進程,并收集節點的故障信息,實現更加快速和精準的問題發現與報告。此外,其分布式的設計還可以實現多區域、多范圍的監測和管理
內置邊緣編排能力:SuperEdge 能夠自動部署多區域的微服務,方便管理運行于多個地區的微服務。同時,網格內閉環服務可以有效減少運行負載,提高系統的容錯能力和可用性
內網穿透:SuperEdge 能夠保證 Kubernetes 節點在有無公共網絡的情況下都可以連續運行和維護,并且同時支持傳輸控制協議(TCP)、超文本傳輸協議(HTTP)和超文本傳輸安全協議(HTTPS)
體系架構
使用ECK免費管理自己的邊緣節點
邊緣容器服務(Edge Cloud Kubernetes Engine,簡稱 ECK)是騰訊云容器服務基于SuperEdge推出的用于從中心云管理邊緣云資源的容器系統。邊緣容器服務完全兼容原生 Kubernetes、支持在同一個集群中管理位于多個機房的節點、一鍵將應用下發到所有邊緣節點,并且具備邊緣自治和分布式健康檢查能力。
優勢
簡而言之,言而總之,最大的優勢就是開箱即用,免費托管。不過目前僅支持創建一個集群。
ECK基于SuperEdge打造,使用ECK和容器服務托管集群一樣,不會收取托管的 Master、Etcd 等管理方面資源的費用。
計算節點由我們自己掌握和提供,邊緣容器服務不收取額外費用。
敞開來講,他有如下優勢:
原生支持
邊緣容器服務緊跟社區,支持最新的 Kubernetes 版本及原生的 Kubernetes 集群管理方式,開箱即用。
跨機房可用
邊緣容器服務是一種 Master 組件托管在云端,worker 節點可位于任意地點的 Kubernetes 服務,用戶無須提供 Master 組件所需資源。
安全可靠
邊緣容器服務支持內外網證書分離,節點權限最小化控制來最大限度避免集群訪問控制權限泄露問題。云邊通信使用 TLS 加密,防止系統管理數據泄露或被篡改。
系統容災
邊緣容器服務針對云邊通信網絡場景提供了可靠的邊緣自治能力,并且具備分布式集群健康檢查能力,可更準確地判定 pod 遷移時機。
系統運維便利
借助于騰訊多年積累的隧道技術,即使邊緣設備不具備公網地址,管理員也可以從云端直接登錄運行在邊緣節點上的容器。
多云管理
邊緣容器服務不限定計算資源。例如,公有云、私有云、騰訊云或其他云計算資源。
創建邊緣集群
集群的創建可以參考:
https://cloud.tencent.com/document/product/457/42889
值得注意的是,需開啟外網訪問。
添加節點
集群創建完成后,我們就可以添加邊緣節點了。這里可以添加本地的終端,也可以添加其他云的主機,相關條件如下:
節點來源:可使用?云服務器控制臺?或?邊緣計算機器控制臺?中已有的服務器、其他平臺或自建機房的服務器。
節點處理器:支持 x86_64、ARM、ARM64。
支持的節點操作系統如下:
Ubuntu 18.04/16.04
CentOS 7.6/7.5/7.4
Tencent Linux Release 2.4/2.2 (Final)
SUSE Linux Enterprise Server 12 SP3
Debian 9.0
請確保需添加節點已安裝?wget、systemctl?及?iptable。
Centos 7參考安裝腳本如下所示(自帶systemctl):
- #安裝wget yum -y install wget #安裝iptables yum install -y iptables #安裝iptables-services yum install iptables-services
節點網絡需具備主動訪問公網能力。
準備好邊緣節點了之后,筆者推薦大家使用腳本來添加節點,如下圖所示:
點擊【下一步】,就可以獲得一段腳本:
我們可以在自己的機器上開始操作了。在開始之前,我們需要確保該節點已安裝?wget、systemctl?及?iptable,并且最好是一臺干凈的終端。接下來我們就可以執行安裝了:
直到:
在執行腳本的時候,這里可能會存在以下問題(已反饋):
操作文檔(https://cloud.tencent.com/document/product/457/42890)和實際操作對不上,需要將上面的edgectl腳本打開查看相關邏輯進行操作:
-n:節點名稱,在集群內必須是唯一的,是必須的
-i:節點內網通信使用的網卡,可不填
其支持Install、check、clear等命令,這里我們需要使用install命令進行安裝
install命令有兩個參數:
執行成功后,會輸出上圖中的“success-message”的內容,如果執行失敗,控制臺不會返回任何內容,需要查看上圖中的日志文件。
提示執行成功后,可能會在集群中無法看到自己的節點,目前已確定是執行腳本對kubelet狀態判斷邏輯有問題,在大家看到這篇教程時,應該已經修復了。
使用Kubectl管理邊緣集群
在前面的教程我們已經詳細講述過相關的教程了,這里就不贅述了。Kubectl的安裝和集群連接請參考以下文檔:
https://cloud.tencent.com/document/product/457/42894
添加工作負載
邊緣集群搭建好了,我們先來運行一個Demo:
部署一個dotnet-samples demo程序
創建Service,開放端口30500(注意配置邊緣節點的防火墻)
Yaml如下所示:
apiVersion: apps/v1 kind: Deployment metadata:annotations:deployment.kubernetes.io/revision: "1"generation: 1labels:k8s-app: dotnet-samplesqcloud-app: dotnet-samplesname: dotnet-samplesnamespace: default spec:progressDeadlineSeconds: 600replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: dotnet-samplesqcloud-app: dotnet-samplesstrategy:rollingUpdate:maxSurge: 1maxUnavailable: 0type: RollingUpdatetemplate:metadata:annotations:edge.tke.cloud.tencent.com/cpu: "1"edge.tke.cloud.tencent.com/mem: 2GicreationTimestamp: nulllabels:k8s-app: dotnet-samplesqcloud-app: dotnet-samplesspec:containers:- image: mcr.microsoft.com/dotnet/samples:aspnetappimagePullPolicy: IfNotPresentname: dotnet-samplesresources:limits:cpu: 500mmemory: 1Girequests:cpu: 250mmemory: 256MisecurityContext:privileged: falseterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstimagePullSecrets:- name: qcloudregistrykeyrestartPolicy: AlwaysschedulerName: default-schedulerterminationGracePeriodSeconds: 30 --- apiVersion: v1 kind: Service metadata:name: dotnet-samplesnamespace: default spec:externalTrafficPolicy: Clusterports:- name: tcp-80-80nodePort: 30500port: 80protocol: TCPtargetPort: 80selector:k8s-app: dotnet-samplesqcloud-app: dotnet-samplessessionAffinity: Nonetype: NodePort創建成功后,訪問后如下所示(注意開放端口):
最后
在邊緣計算場景下,其實還有很多痛點,比如當一個集群橫跨多個地域,如何控制工作負載創建的節點位置?如何對各服務流量進行管控?同時,邊緣容器分布式節點狀態判定機制也是存在特殊性的,因為邊緣弱網絡會觸發 Kubernetes 驅逐機制,這可能會引起不符合預期的 Pod 驅逐動作。這些問題,大家可以參考官方幫助文檔,里面都有詳細的回答。
回歸正題,利用邊緣集群我們可以干很多事情,連接和管理本地、客戶所在地、各云廠商的機房、世界的各個終端。如何利用它搭建一個管道,鍛煉技術,學習技術,我們下回分解。
如果在添加節點的過程中碰到問題,可以參考筆者之前的教程、博客和書籍《Docker+Kubernetes應用開發與快速上云》來解決問題以及查看日志。
集群故障處理之處理思路以及聽診三板斧(三十四)
轉載是一種動力 分享是一種美德
如果喜歡作者的文章,請關注【麥扣聊技術】訂閱號以便第一時間獲得最新內容。本文版權歸作者和湖南心萊信息科技有限公司共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
文檔官網:docs.xin-lai.com
QQ群:
編程交流群<85318032>?
產品交流群<897857351>
總結
以上是生活随笔為你收集整理的边缘计算k8s集群之SuperEdge的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Delphi 26 岁
- 下一篇: 通俗系列之同步、异步、阻塞和非阻塞