iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0

今天要提到的是KubeEdge的安裝,下面表格是測試環境。

Kubernetes KubeEdge docker go
Cloud v1.15.3 v1.4.0 19.03.6 1.13.12
Edge X v1.4.0 19.03.12 1.13.12
在cloud端要有一個Kubernetes環境,edge端不需要加入Kubernetes叢集中;KubeEdge版本我們選擇1.4.0版本,go版本是1.13.12。
我的硬體環境如下:
節點名稱 作業系統 角色 IP
k8s-node01 ubuntu 18.04 cloud 192.168.0.3
raspberrypi Raspbian GNU/Linux 10 (buster) edge 192.168.0.7

Cloud端環境設定

Docker以及Kubernetes的安裝在第三天的文章中有提過,這裡說明的是Kubeedge的安裝。
相比於KubeEdge前幾版本的安裝,在1.4版本簡化了很多程序,包含設定檔案的修改以及鑰匙複製步驟都有省略。

Go安裝

# 下載go
wget https://golang.org/dl/go1.13.12.linux-amd64.tar.gz
# 解壓縮go後,會產生一個go資料夾。執行檔會在go/bin底下(可以參考下圖)
tar xzvf go1.13.12.linux-amd64.tar.gz
# 將執行檔路徑加入系統路徑中
vim ~/.bashrc


將go路徑加入系統路徑中

# ~/.bashrc
# 以上圖中的路徑為例
export PATH=/home/alan/go/bin:$PATH

退出後重新source一下

source ~/.bashrc
# 測試
go version

KubeEdge安裝

下載keadm

# 下載keadm
wget https://github.com/kubeedge/kubeedge/releases/download/v1.4.0/keadm-v1.4.0-linux-amd64.tar.gz

# 解壓縮
tar xzvf keadm-v1.4.0-linux-amd64.tar.gz

裡面的資料夾內容很單純,解壓縮後資料夾底部有一個keadm執行檔。
接著初始化KubeEdge。

sudo ./keadm init --advertise-address=192.168.0.3 --kube-config=/home/alan/.kube/config

上面那串是我執行時的使用參數。

  • advertise-address
    指定一個edge端可以連接的到的IP
  • kube-config
    填上kubernetes config檔的存放位置,可以用echo $HOME/.kube/config查看
    執行完成後cloudcore的log檔會放在這裡:
# cloud_core log
/var/log/kubeedge/cloudcore.log

取得憑證

相比於前幾個版本的KubeEdge而言,1.4版本的憑證取得方式相當親民,透過下面指令可以取得一組token,我們在edgecore註冊時會用到

sudo ./keadm gettoken --kube-config=/home/alan/.kube/config

--kube-config同樣填上kubernetes config檔案位置

Edge端環境設定

安裝Docker

樹梅派版本的Docker安裝非常簡單:

curl -sSL https://get.docker.com | sh

只要一行就完成了,可以將pi這個使用者加入使用docker權限的群組:

sudo usermod -aG docker pi

以後使用docker的時候就不需要再利用super user權限(sudo)

安裝go

這部分和在cloud端安裝go幾乎一樣,但因為我是使用樹梅派所以必須選擇對應系統架構(ARM)的go

wget https://golang.org/dl/go1.13.12.linux-armv6l.tar.gz
tar xzvf go1.13.12.linux-armv6l.tar.gz

解壓縮後加入系統路徑(可以參考下面兩張圖)

安裝KubeEdge

下載keadm,要注意的是需要下載符合ARM架構的安裝包

wget https://github.com/kubeedge/kubeedge/releases/download/v1.4.0/keadm-v1.4.0-linux-arm.tar.gz

解壓縮之後,裡面的目錄結構和在cloud安裝時一模一樣,所以直接到目錄底部執行:

sudo ./keadm join --cloudcore-ipport=<Cloud節點IP>:10000 --edgenode-name=<你要註冊在Cloud節點上的名字> --token=<在cloud安裝時最後一步驟取得的一大串token>

這裡需要幾個參數:

  • cloudcore-ipport
    填上cloud端宣告的IP
  • edgenode-name
    填上你要註冊在cloud端的節點名字,可以不填系統會幫你取一個
  • token
    把在cloud端安裝時最後一步驟取得的那一串token填上去

參考圖片

完成後會看到類似這樣的畫面

如果要查看edgecore的log或是服務狀態可以透過service查看:

最後回到cloud端查看所有節點:

kubectl get nodes


就會看到節點已經部屬完成了。裡面的raspberrypi就是忘記給edgenode-name時系統命名的。

Trouble shooting

因為之前有用過kubeedge v1.2版本,在kubeedge中存放公私鑰的地方都都是固定的(/etc/kuebedge/ca, /etc/kubeedge/certs),所以改安裝1.4版本的時候cloudcore生成鑰匙時就遇到這個問題:

E0911 17:09:15.562992    9428 server.go:297] failed to sign a certificate, error: failed to parse ECPrivateKey, err: x509: failed to parse EC private key: asn1: structure error: tags don't match (16 vs {class:0 tag:4 length:76 isCompound:true}) {optional:false explicit:false application:false private:false defaultValue:<nil> tag:<nil> stringType:0 timeType:0 set:false omitEmpty:false} ecPrivateKey @2
F0911 17:09:15.563016    9428 cloudhub.go:72] failed to parse ECPrivateKey, err: x509: failed to parse EC private key: asn1: structure error: tags don't match (16 vs {class:0 tag:4 length:76 isCompound:true}) {optional:false explicit:false application:false private:false defaultValue:<nil> tag:<nil> stringType:0 timeType:0 set:false omitEmpty:false} ecPrivateKey @2

後來參考了這個issue解決了這個問題,節錄這個issue裡面提到的解決方法:

I think you use x509 files generated in kubeedge-v1.2.
you can try to remove /etc/kubeedge/ca and /etc/kubeedge/certs both cloud and edge side, delete all secreat in kubeedge ns of K8S.
Then, restart cloudcore, configure edgecore's token and restart edgecore

簡單來說就是把cloud跟edge上面/etc/kubeedge/ca跟/etc/kubeedge/certs目錄刪掉;在cloud清理掉所有的secrets(kubectl delete secrets --all)之後重新依序在cloud和edge初始化KubeEdge(keadm init),記得要先停止原本的核心服務(keadm reset)


上一篇
Day 7: KubeEdge 元件: Edge(II)
下一篇
Day 9 KubeEdge基本部署: Pod
系列文
從開源kubernetes雲端運算到kubeedge雲邊協同30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言