K 3 Sの上のEdgex鋳造所
17375 ワード
This blog post is part 2 of a series of articles about how to deploy and operate EdgeX Foundry - an open source software framework for IoT Edge on K3s - a lightweight, highly available, and secured orchestrator.
このシリーズの最初の部分では、我々は手を進めるために必要なすべての事前の要件を見ている.私たちはEdgeX Foundry tutorial by Jonas Werner とK 3 S上でedgex鋳造サービスを展開します.我々はすでにK 3 SはEDGEXマイクロサービスを管理し、調整するための良い軽量ソリューションであることを学んだ.私たちは
Geneva
Edgex鋳造所のバージョン.このポストの範囲は、センサーデータ(例えば周囲温度)を消費するエッジユースケースを示すことです.このセンサーデータは、K 3 S上でホストされているedgExpendryサービスによって処理されます.このセンサーデータはクラウドベースのMQTTブローカーにプッシュされますHiveMQ . ここから、クラウドでデータを保存し処理することができます.これらのポストで使用される構成とマニフェストは、これで利用できますrepository .
セットアップ
エンドツーエンドのセットアップは、図1のようです.
ラズベリーPiを用いたDHT‐22(エッジ装置)
周囲温度と湿度を取り込むDHT - 22センサーを使用します.センサーがブレッドボードまたは抵抗を必要としないことに注意してください、それはすべてSMD(表面実装装置)に取り付けられます.DHTセンサーは、ラズベリーパイのGPIO(汎用I/O)ピンに接続されます.
温度をキャプチャし、センサーデータをEDGEXに送信するスクリプトでは、次の変更が行われます.The
EdgeX IP
, DHT sensor type
, GPIO
ラズベリーパイのピンとedge-device-rest
以下に示すサービス.import sys, time, requests, json, Adafruit_DHT
edgexip = "192.168.1.179"
while True:
# Update to match DHT sensor type and GPIO pin
rawHum, rawTmp = Adafruit_DHT.read_retry(22, 4)
urlTemp = 'http://%s:32536/api/v1/resource/Temp_and_Humidity_sensor_cluster_01/temperature' % edgexip
urlHum = 'http://%s:32536/api/v1/resource/Temp_and_Humidity_sensor_cluster_01/humidity' % edgexip
どのように、あなたはK 3 Sにedgexを展開しますか?
まず、K 3 SクラスタとK 3 Sエージェントを3つの別々のVMSに対して、図3に示すようにK 3 Sクラスタを配備する.k 3 sのedgexサービスはゲートウェイのように動作しますpart-1 ). VMSでは、ubuntu - 20.04 osを使用します.VMSが作成されると、次の手順でK 3 sを展開します.
注意してください.
サーバー/マスター
K 3 Sサーバーを設定するには、次の手順を使用します
export K3s_NODE_NAME=${HOSTNAME//_/-}
export K3s_EXTERNAL_IP=<host-ip>
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | sh -
生成されたノードトークンをコピーするcat /var/lib/rancher/k3s/server/node-token
K 3 Sサーバが稼働しているかどうかをチェックするsystemctl status k3s
エージェント
K 3 Sエージェントを構成するには、次の手順を使用します
export K3S_TOKEN=<node-token of K3s server>
export K3s_URL=https://<ip of k3s server>:6443
export INSTALL_K3S_EXEC="--docker --token $K3S_TOKEN --server $K3S_URL"
export K3S_NODE_NAME=${HOSTNAME//_/-}
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | sh -
K 3 Sサーバが稼働しているかどうかをチェックするsystemctl status k3s-agent
CLIツールをインストールしたことを確認してくださいkubectl
and helm
. また、同じように正しいパーミッションを設定していることを確認します.kubeconfig
K 3 S用のファイルは/etc/rancher/k3s/k3s.yaml
. さらに進む前にKubeconfig環境変数を設定します.export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
Edgex鋳造所をK 3 Sに配備する方法?
k 3 sが稼働中であるならば、クローンrepository Edgex鋳造所を展開するために.
git clone https://github.com/rutu-k/edgex-k3s.git
注意してください、EDGEX鋳造所は、そのサービスを試してみてテストするために、Dockerの構成マニフェストを持っています.使用kompose
Dockerの作成マニフェストをKubernetesマニフェストに変換できます.また、Kubernetesマニフェストに変換した後、ボリュームを使用していたアプリケーションを適切に構成することができず、最終的にKubernetesで動作しません.このため、それぞれのマニフェストを適切に修正しなければならない.簡単に.
emptyDir
ボリュームが設定されます.まず最初に、我々はconsulから始めます.Consulはedgex鋳造所によってレジストリとして使用されます.
helm --kubeconfig /etc/rancher/k3s/k3s.yaml upgrade --install consul ./consul-helm
一度領事が実行している場合は、ダッシュボードを訪問することができますhttp://[K3s server ip]:[NodePort of service]
キー値ストアを訪れた場合、空になります.edgex鋳造サービスのためにそれぞれのコンフィギュレーションを提供する必要があります.このため、キー値をインポートしてconsulに保存します.私は、私がチュートリアルのDocker構成展開を経験していたとき、Consulからキー/価値JSONファイルを輸出しました.
consul kv import --http-addr=http://[K3s server ip]@edgex-kv.json
これで、キー値ストアにコンフィグが表示されます.アプリケーションの配備
kubectl apply -f /k3s/.
すべてのアプリケーションサービスが稼働していることに注意してください.$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 4d1h
edgex-redis ClusterIP 10.43.56.89 <none> 6379/TCP 3d23h
edgex-core-consul ClusterIP None <none> 8500/TCP,8301/TCP,8301/UDP,8302/TCP,8302/UDP,8300/TCP,8600/TCP,8600/UDP 25h
consul NodePort 10.43.193.246 <none> 80:32688/TCP 25h
edgex-app-service-configurable-mqtt NodePort 10.43.102.126 <none> 48101:32294/TCP 4h26m
edgex-app-service-configurable-rules NodePort 10.43.138.76 <none> 48100:30136/TCP 4h26m
edgex-core-command NodePort 10.43.52.70 <none> 48082:32400/TCP 4h26m
edgex-device-rest NodePort 10.43.167.127 <none> 49986:32536/TCP 4h26m
edgex-core-metadata NodePort 10.43.132.29 <none> 48081:30220/TCP 4h26m
edgex-support-notifications NodePort 10.43.39.183 <none> 48060:32680/TCP 4h26m
edgex-kuiper NodePort 10.43.231.24 <none> 48075:30082/TCP,20498:31868/TCP 4h26m
edgex-support-scheduler NodePort 10.43.6.49 <none> 48085:31497/TCP 4h26m
edgex-sys-mgmt-agent NodePort 10.43.250.114 <none> 48090:31736/TCP 4h25m
edgex-core-data NodePort 10.43.251.191 <none> 5563:32220/TCP,48080:31931/TCP
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
edgex-redis-54fb576f64-bdv9x 1/1 Running 1 3d12h
consul-0 1/1 Running 0 25h
edgex-core-metadata-5bd45879cf-h9tbs 1/1 Running 0 4h25m
edgex-kuiper-bbc6cf47-trkdl 1/1 Running 0 4h25m
edgex-sys-mgmt-agent-7fb78c6fc5-qmqc2 1/1 Running 0 4h25m
edgex-support-notifications-7b45446cbc-bqhvb 1/1 Running 0 4h25m
edgex-app-service-configurable-mqtt-59b5c7b6c8-8zhfc 1/1 Running 1 4h25m
edgex-app-service-configurable-rules-58c6846d54-s29hp 1/1 Running 1 4h25m
edgex-core-command-78b5ff9864-hb6wr 1/1 Running 0 4h25m
edgex-core-data-86f5864db6-cvbl7 1/1 Running 0 4h25m
edgex-support-scheduler-755b5779dc-br2d8 1/1 Running 0 4h25m
edgex-device-rest-599c579bf5-zbrg8 1/1 Running 0 4h25m
Edgex鋳造工場ワークフロー
edgexワークフローは3つの主要な部分に分けることができます;デバイス、コアデータサービス、アプリケーションサービス.センサーデータを分析することによって行動を取ることができる作動のためのもう一つの部分があります、しかし、これはこのポストの範囲外です.
Event
オブジェクト.イベントは、特定の時点でデバイス(そのIDまたは名前によってデバイスに関連付けられている)からのセンサー測定値のコレクションです.エーReading
オブジェクトをEvent
オブジェクトは、デバイスによって、検出されて、読取りにコンテクストを提供するために値ディスクリプタと関連する事項値である.行動しましょう
スクリプトは、DHTセンサーをアクティブにし、Edgexファウンドリーに温度値を送信するスクリプトをトリガします.
$ python rpiPutTempHum.py
Temp: 27.7999992371C, humidity: 77.5%
Temp: 28.2000007629C, humidity: 75.5999984741%
Temp: 28.1000003815C, humidity: 75.5%
Temp: 28.1000003815C, humidity: 75.4000015259%
Temp: 28.2000007629C, humidity: 75.3000030518%
Temp: 28.2000007629C, humidity: 75.3000030518%
Temp: 28.2000007629C, humidity: 75.3000030518%
センサー測定値が増加すると、edgex鋳造所のイベントカウントも増加する.└─ $ ▶ curl http://192.168.1.179:31931/api/v1/event/count
2043
また、最新の温度値を得ることができます.└─ $ ▶ curl http://192.168.1.179:31931/api/v1/reading | json_pp -json_opt pretty,canonical | tail -n 10
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 396k 0 396k 0 0 9660k 0 --:--:-- --:--:-- --:--:-- 9660k
{
"created" : 1632159295863,
"device" : "Temp_and_Humidity_sensor_cluster_01",
"id" : "ffcf2a3b-6ecc-4476-9ab6-e17ae983886f",
"name" : "temperature",
"origin" : 1632159295861600937,
"value" : "28",
"valueType" : "Int64"
}
]
アプリケーションサービスのデモを行うには、MQTTブローカに温度値を送信するアプリケーションMQTTサービスを構成します.The edgex-app-service-configurable-mqtt
サービス(セクション3のedgexファウンドリーにおける展開されたサービスをチェックしてください)は、EDGEXセンサーデータをhivemqによって主催される公共のMQTTブローカーに送るコミュニティに提供された輸出者ですhttp://broker.mqttdashboard.com ) 1883年港.次に、このセンサーデータは、HiVemq提供MQTTブラウザクライアントを介して、公開して、特定の購読で可視化することができますtopic
.トピック名は、
edgex-app-service-configurable-mqtt
展開refer here ).- name: WRITABLE_PIPELINE_FUNCTIONS_MQTTSEND_ADDRESSABLE_TOPIC
value: DHT-SENSOR
移動するHiveMQ MQTT browser client . クリックConnect
デフォルトの設定で.次に、クリックAdd New Topic Subscription
, トピック名を入力するDHT-SENSOR
をクリックしてSubscribe
. メッセージにセンサーデータを表示します.結論
この投稿では、次のようになりました.
eKuiper
ルールエンジン.我々は、次の部分でそれをカバーしようとします.私は、あなたがこのポスト有益で魅力的であるとわかりました.このようなより多くのポストのために、我々の毎週の会報を購読してください.私はこのポストに関するあなたの考えを聞きたいです、それで、上で会話を始めますか?
参考文献
Reference
この問題について(K 3 Sの上のEdgex鋳造所), 我々は、より多くの情報をここで見つけました https://dev.to/infracloud/edgex-foundry-on-k3s-the-initiation-1lo5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol