91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

邊緣計算系統KubeEdge如何安裝、部署

發布時間:2021-12-04 10:14:31 來源:億速云 閱讀:591 作者:小新 欄目:云計算

這篇文章給大家分享的是有關邊緣計算系統KubeEdge如何安裝、部署的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

KubeEdge 是一個開源的邊緣云計算系統,可將本機容器化的業務流程和設備管理擴展到Edge上的主機,目前已經納入CNCF體系并進入孵化階段。本文介紹了在兩臺Ubuntu 18.04.3 LTS虛擬機下從源碼開始部署 KubeEdge 1.1.0 集群的過程,云端 Kubernetes 版本為 1.16.0,Golang 版本為1.12.4。

1. 概述

1.1 環境

  • 云端:Ubuntu 18.04.3 LTS,用戶名為k8smaster。ip 為 192.168.179.131 

  • 邊緣端:Ubuntu 18.04.3 LTS,用戶名為k8slave1。ip 為 192.168.179.142

  • KubeEdge 部署需要的組件:(注意,本安裝教程假定你已經在云端機器上安裝好了k8s集群和docker,并在邊緣端機器上安裝好了docker

  • 云端:docker, kubernetes 集群和 KubeEdge 云端核心模塊。

  • 邊緣端:docker, mqtt 和 KubeEdge 邊緣端核心模塊。

1.2 依賴

  • golang:版本1.12.14,移步 https://studygolang.com/dl 下載(由于是源碼編譯,所以需要用到golang)

  • k8s版本:v1.16.0

  • mosquitto:直接通過apt-get安裝

  • KubeEdge:v1.1.0

2. 準備

2.1 創建部署文件目錄

本安裝方法主要適用于初學者,因為初學者對于搭建集群往往是比較陌生的。本文會先創建一個目錄,存放各類安裝過程中需要的文件。

創建部署工程目錄:

# mkdir /home/kkbill/kubeedge

創建子目錄: 

# cd /home/kkbill/kubeedge

# mkdir cloud edge certs yamls src
  • 說明:

    • cloud:云端相關文件,包括 cloudcore 和配置文件。

    • edge:邊緣端相關文件,包括 edgecore 和配置文件。

    • certs:證書文件。

    • yamls:一些 yamls 文件。

    • src:源碼目錄,存放kubeedge源碼。

  • 2.2 KubeEdge 二進制

獲取KubeEdge的方式有兩種,一種是直接從 官網(https://github.com/kubeedge/kubeedge/releases) 中下載(本實驗版本為kubeedge-v1.1.0-linux-amd64.tar.gz);另一種方法是通過源碼編譯得到。這里介紹一下源碼編譯的方法(嗯,折騰...)

2.2.1 Golang環境搭建

(1) 下載golang,并解壓

# wget https://studygolang.com/dl/golang/go1.12.14.linux-amd64.tar.gz

# tar -C /usr/local -xzf  go1.12.14.linux-amd64.tar.gz

(2) 添加環境變量

在~/.bashrc文件末尾添加:

# vim ~/.bashrc

export GOPATH=/home/kkbill/kubeedge
export PATH=$PATH:/usr/local/go/bin

保存后記得執行 source ~/.bashrc 生效。驗證:

# go version
# go version go1.12.14 linux/amd64

2.2.2 下載kubeedge源碼

# git clone https://github.com/kubeedge/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge

2.2.3 檢測gcc是否安裝

# gcc --version

如果沒有,則自行安裝。

2.2.4 編譯云端

# cd $GOPATH/src/github.com/kubeedge/kubeedge/

# make all WHAT=cloudcore

生成二進制 cloudcore 文件位于 cloud 目錄。拷貝 cloudcore 和同一目錄的配置文件(conf目錄)到部署工程目錄:

# cp -a cloud/cloudcore $GOPATH/cloud/
# cp -a cloud/conf/ $GOPATH/cloud/

在編譯的時候遇到了第一個坑,就是版本的問題。由于最新clone下來的版本已經不是v1.1.0了,所以,我們需要把代碼切回到v1.1.0版本,操作如下:(如果你在這一步無異常,則跳過)

在 $GOPATH/src/github.com/kubeedge/kubeedge 目錄下,執行 git tag,并選擇 v1.1.0 即可

# git tag
...
v1.1.0
...

# git checkout v1.1.0

執行完這一句后,代碼就會回到v1.1.0版。

2.2.5 編譯邊緣端

# cd $GOPATH/src/github.com/kubeedge/kubeedge/

# make all WHAT=edgecore

生成二進制 edgecore 文件位于 edge 目錄。拷貝二進制及配置文件到部署工程目錄:

# cp -a edge/edgecore $GOPATH/edge/

# cp -a edge/conf/ $GOPATH/edge/

這里又遇到了第2個坑,即出現如下錯誤:

/usr/local/go/pkg/tool/linux_amd64/link: signal: killed

這是由于編譯需要較大的內存,而內存不夠,造成了OOM。對應的解決辦法:增加內存

(1) 創建要作為swap分區的文件:增加1GB大小的交換分區,則命令寫法如下,其中的count等于想要的塊的數量(bs*count=文件大小)。

# dd if=/dev/zero of=/root/swapfile bs=1M count=1024

(2) 格式化為交換分區文件:

mkswap /root/swapfile #建立swap的文件系統

(3) 啟用交換分區文件:

swapon /root/swapfile #啟用swap文件

解決這個問題,參考了:

https://forum.golangbridge.org/t/go-build-exits-with-signal-killed/513

https://segmentfault.com/a/1190000012219689

https://www.cnblogs.com/spjy/p/7085389.html

2.3 生成證書

# $GOPATH/src/github.com/kubeedge/kubeedge/build/tools/certgen.sh genCertAndKey edge

# cp -a /etc/kubeedge/* $GOPATH/certs

生成的 ca 和 certs 分別位于 /etc/kubeedge/ca 和 /etc/kubeedge/certs 目錄,將其拷貝到部署工程目錄的 certs 目錄。注意,這是在云端機器執行,所以云端已經有了證書,拷貝到 certs 目錄,是為了方便分發到邊緣節點。

2.4 拷貝設備模塊和設備CRD yaml 文件

# cp ????????????????????????/????????????/?????????????????????.????????????/????????????????????????????????/????????????????????????????????/????????????????????/????????????????/????????????????????????????/?

GOPATH/yamls

2.5 拷貝node.json

# cp ????????????????????????/????????????/?????????????????????.????????????/????????????????????????????????/????????????????????????????????/????????????????????/????????????????.????????????????

GOPATH/cloud

釋義:node.json 為節點的配置信息,需要在云端機器執行,作用是將邊緣端加入集群(但實際上只是讓 k8s 知道有這個節點,還不是真正意義上的加入)

2.6 配置云端節點

打開配置文件 $GOPATH/cloud/conf/controller.yaml ,修改兩處 master 的值,將master修改為 k8s 的apiserver的地址,在我的配置中,修改為:https://192.168.179.131:6443

這個地址當然就是云端這臺機器的ip,那么端口是怎么來的?你可以從 /etc/kubernetes/manifests/kube-apiserver.yaml 中找到答案,如下圖所示:

(當然,這里的前提是你已經裝好了kubernetes,但是安裝 kubernetes 不在本教程范圍。)

 邊緣計算系統KubeEdge如何安裝、部署

 這里提醒一下,我在第一次安裝的時候,由于自身對k8s也還非常的不了解,還不知道是查看kube-apiserver.yaml,所以錯寫成了http,這個錯誤讓我廢了很長的時間才解決。

另外,還需要將kubeconfig的值修改為:/root/.kube/config

邊緣計算系統KubeEdge如何安裝、部署

 另外,由于在v1.1.0版本中,邊緣節點名稱為 fb4ebb70-2783-42b8-b3ef-63e2fd6d242e,這不方便閱讀,我們將其修改為edge-node。在edge.yaml文件中把所有 fb4ebb70-2783-42b8-b3ef-63e2fd6d242e 的值替換為 edge-node。

此外,還有非常重要的一點是,注意該文件中 cgroup-driver 字段的值,默認情況下是 cgroupfs,有些文章不說明具體原因就讓你將其修改為 sysemd,這是不負責的。這里是否需要修改該字段的值取決于你安裝的docker的cgroup-driver是什么,原則就是要保持兩者一直,若不一致,就會出現致命的問題。

可以通過 docker info 命令查看已安裝的docker的cgroup-driver,確定好后,再決定是否修改edge.yaml 文件中cgroup-driver的值。

這里我也踩過坑,第一次安裝時未經檢查,就盲目修改了該字段的值,導致最后邊緣節點的狀態始終是NotReady,這個問題在issue列表中也有討論,詳見 https://github.com/kubeedge/kubeedge/issues/1243 。

2.8 安裝mqtt

mqtt只需要在邊緣端安裝。由于我使用的是ubuntu系統,直接使用apt-get,如下:

# add-apt-repository ppa:mosquitto-dev/mosquitto-ppa // 添加源
# apt-get update // 更新
# apt-get install mosquitto // 安裝

3. 部署

前面已經準備好了所需要的配置文件,現在,只需要將證書和邊緣端的文件拷貝到邊緣機器上,使用 scp 命令進行拷貝。(當然,你也可以在邊緣機器上完成上面的2.7節。)

在云端主機上進行操作,192.168.179.142是邊緣端的ip。

# ssh 192.168.179.142 "mkdir -p /etc/kubeedge /home/kkbill/kubeedge/edge"
# scp -r GOPATH/certs/* 192.168.179.142:/etc/kubeedge # scp -r

GOPATH/edge/* 192.168.179.142:/home/kkbill/kubeedge/edge

這里可能會涉及到一些permission deny的問題,這是由于 scp 命令造成的,這個問題不難,自己解決一下。

3.1 云端

首先進入部署工程目錄:cd /home/kkbill/kubeedge

3.1.1 添加邊緣端到集群

# kubectl apply -f cloud/node.json

注意:在執行該命令前,務必修改node.json文件的值,如下,把name字段的值由 fb4ebb70-2783-42b8-b3ef-63e2fd6d242e 的值替換為 edge-node。

 此時,查看節點狀態,邊緣端未就緒。如下:

# kubectl get nodes 

NAME        STATUS      ROLES   AGE     VERSION
edge-node NotReady    edge       9s
k8smaster  Ready          master    15h       v1.16.0

3.1.2 創建設備模塊和設備CRD

# kubectl apply -f yamls

 注意,yamls 目錄有2個 yaml 文件,此處指定目錄,會自動執行目錄所有文件。

3.1.3 運行cloudcore

# cd  cloud

# ./cloudcore

可能會出現如下錯誤:

github.com/kubeedge/kubeedge/cloud/pkg/edgecontroller/manager/secret.go:31: Failed to list *v1.Secret: Get https://192.168.179.131:6443/api/v1/secrets?limit=500&resourceVersion=0: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")

參考這里的討論 https://github.com/kubernetes/kubernetes/issues/48378 ,我忘了當時是怎么解決這個問題的了...

3.2 邊緣端

該部分在邊緣端機器上進行。

首先,在邊緣端運行mqtt:

# mosquitto -d -p 1883

然后進入部署工程目錄:cd /home/kkbill/kubeedge/edge,并運行 edgecore:

# ./edgecore

3.3 驗證

在云端查看狀態:

# kubectl get nodes
NAME        STATUS     ROLES    AGE    VERSION
edge-node   Ready         edge        8h       v1.15.3-kubeedge-v1.1.0
k8smaster    Ready        master     173d   v1.16.0

這個時候,edge-node 的狀態就變成了 Ready。到這里,基本上算是搭建完成了。

感謝各位的閱讀!關于“邊緣計算系統KubeEdge如何安裝、部署”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平潭县| 沙雅县| 皋兰县| 犍为县| 银川市| 合作市| 黔西| 余庆县| 饶阳县| 和硕县| 洪江市| 鲁山县| 哈巴河县| 陆良县| 隆林| 大安市| 通渭县| 龙江县| 泸溪县| 安顺市| 山阴县| 安仁县| 罗田县| 中江县| 云安县| 卢氏县| 永顺县| 仙居县| 松江区| 健康| 甘泉县| 迭部县| 濉溪县| 保定市| 墨脱县| 安仁县| 五原县| 息烽县| 莆田市| 丁青县| 襄汾县|