6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

KubeEdge環境をk3sで構築してみた

Last updated at Posted at 2019-09-26

TL;DR

k3s上でもKubeEdgeを動かすことができる!(すごい)
kubeadmで構築するよりも簡単(個人の感想)で、より「エッジ」に適したk3s上に構築する方がいいのかもしれません

はじめに

「次はKubeEdgeのExampleを試すと言ったな、あれは嘘だ。」

はいどうも
前回の記事でKubeEdgeをEC2インスタンス上に構築してみましたが、あるお方が言いました

???「k3s上でも動かないのかな」

確かに気になりますね!
ということで、早速試してみました

環境

前回に引き続き、AWSのEC2インスタンス上に構築します

バージョン

今回も現時点(2019/09)での最新版を使用しました
前回からKubeEdgeのマイナーバージョンが上がっています

  • k3s: 0.9.1
  • KubeEdge: 1.1.0

マシンスペック

前回の反省を活かし、今回はスペックを落としました
マスタとエッジ両方同じスペックです

  • OS: Ubuntu 18.04 LTS
  • CPU: 2
  • Memory: 4GB
  • Storage: 8GiB

構築手順

構築手順は基本的には前回と変わりませんが、k3sで動かすために少し変更を加えています
今回は差分を示しながら解説したいと思いますので、割愛部分は前回と同じと思って下さい
※バージョンが書かれたところは適宜、読み替えて下さい

では早速、解説していきます

マスタ

まずは、k3sをインストールします
と言っても、用意されたスクリプトを実行するだけです(便利)

sudo su -
curl -sfL https://get.k3s.io | sh -

無事インストールできたら、KubeEdge用に少し変更を加えます
server \の次の行に以下を追記し再起動します

vim /etc/systemd/system/k3s.service
+ --http-listen-port 8080

systemctl daemon-reload
systemctl restart k3s

# 確認
kubectl get nodes
ss -ntlp | grep 8080

これでk3sの構築は完了です
あとで必要になるので/var/lib/rancher/k3s/server/node-tokenの文字列を控えておきます

あとは前回と同じ手順でマスタ側のKubeEdgeを構築するだけです
ただし、バージョンが上がったことで実行コマンドが少し変わっています

cd /etc/kubeedge/cloud
nohup ./cloudcore/cloudcore > cloudcore.log 2>&1 &
tail cloudcore.log # 確認

エッジ

次はエッジ側です
こちらでもk3sをインストールします
先程控えておいた文字列を使ってk3sクラスタに参加させます

sudo su -
curl -sfL https://get.k3s.io | K3S_URL=https://<マスタのIP>:6443 K3S_TOKEN="<先程控えた文列>" sh -

エッジ側のk3sのインストールはこれで完了です(簡単)

あとは前回と同じ要領でKubeEdgeを構築するだけですが、ここでもひと工夫が必要です
追加で編集した部分のみ抜粋します

cd /etc/kubeedge/edge
vim conf/edge.yaml
- runtime-type: docker
+ runtime-type: remote
- remote-runtime-endpoint: unix:///var/run/dockershim.sock
+ remote-runtime-endpoint: unix:///var/run/k3s/containerd/containerd.sock
- remote-image-endpoint: unix:///var/run/dockershim.sock
+ remote-image-endpoint: unix:///var/run/k3s/containerd/containerd.sock

nohup ./edgecore > edgecore.log 2>&1 &
tail edgecore.log # 確認

今回はDockerを使っていないので、k3sが利用しているcontainerdのソケットを指定します

テスト

最後にk3sクラスタが正しく動いているか確認します
が、前回と同じ手順だと上手くいかないので少し変更します

# 一旦ファイルとして保存
wget -L https://raw.githubusercontent.com/kubeedge/kubeedge/release-1.1/build/deployment.yaml
vim deployment.yaml
- hostPort: 80
+ hostPort: 9080

kubectl apply -f deployment.yaml
kubectl get pods
kubectl get deploy

k3sではhostPortの80番はすでに使われているので、適当なポートに書き換えます
問題なくPodがデプロイできればOKです

最後に

いかがだったでしょうか
筆者的には、前回と同じ部分があるとはいえ、kubeadmよりも簡単に構築できた気がします
しかし気になるのはマスタ側もk3sでなければならないことですね
k8sとk3sがクラスタを組めれば万々歳なのですが、それは贅沢ってもんですかねw

そしてやはり残る疑問は**「KubeEdge自体がちゃんと動いているのか」**です
なので次こそはExampleを試したいと思います!
ではでは〜

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?