快速入门
#
前置条件已有 k3s 集群或 Kubernetes 集群。
#
使用步骤在本演练中,我们将部署 Octopus 并通过其管理一类虚拟设备
并执行以下任务:
#
1. 使用 k3d 搭建 k3s 集群(可选)k3d是快速搭建容器化 k3s 集群的工具。 您可以使用 Docker 在单台计算机上启动多节点 k3s 集群。如果您已有 k3 集群或 Kubernetes 集群,请跳过此步骤。
运行以下指令,启动具有 3 个 worker 节点的本地 k3s 集群。
说明
如果安装成功,则应该看到以下日志,请使用
CTRL+C
键以停止本地集群。打开一个新终端,并配置
KUBECONFIG
以访问本地 k3s 集群。运行
kubectl get node
命令, 检查本地 k3s 集群的节点是否正常。
#
2. 部署 Octopus有两种部署 Octopus 的方法,为方便起见,我们将通过一份 all-in-one
的 YAML 文件来部署。 安装程序 YAML 文件位于 Github 上的deploy/e2e
目录下:
预期结果:
安装后,我们可以验证 Octopus 的状态,如下所示:
#
3. 部署设备模型和设备控制器接下来我们会使用设备模拟器进行测试(不需要将其连接到真实的物理设备)。
首先,我们需要将设备描述为 Kubernetes 中的一种资源。 此描述过程即为对设备进行建模。 在 Kubernetes 中,描述资源的最佳方法是使用CustomResourceDefinitions,因此定义 Octopus 的设备模型实际上是在定义 CustomResourceDefinition, 可快速浏览一下下列的DummySpecialDevice
模型(假设这是一个智能风扇):
说明
下列 YAML 可通过code-generator动态生成,无需手动编辑。
虚拟设备适配器(Dummy Adaptor)的安装 YAML 文件位于adaptors/dummy/deploy/e2e
目录下,即 all_in_one.yaml
, 它包含了设备模型和设备适配器,我们可以通过以下指令将其直接部署到 k3s 集群中:
预期结果:
请注意,还需要授予 Octopus 管理 DummySpecialDevice
/DummyProtocolDevice
的权限:
#
4. 创建 DeviceLink前面我们提到过 DeviceLink 是 Octopus 自定义的一个 k8s 资源对象(简称 dl),用户可通过编辑 DeviceLink 的 YAML 文件来进行配置与和管理设备连接。
接下来,我们将通过 DeviceLink
YAML 来连接一个虚拟设备。 DeviceLink 由 3 部分组成:Adaptor、Model 和 Device spec。
Adaptor
- 适配器定义了要使用的适配器(即协议)以及实际设备应连接的节点。Model
- 模型描述了设备的模型,它是设备模型的TypeMeta CRD。Device Spec
- 设备参数描述了如何连接到设备及其所需的设备属性或状态,这些参数由设备模型的 CRD 来定义。
假设有一个名为 living-room-fan
的设备可以通过 edge-worker
节点连接,我们可以使用以下 YAML 来测试其工作方式。
DeviceLink 包含了几种状态,如果我们发现其PHASE
为DeviceConnected和STATUS
为Healthy的状态下,我们就可以使用设备模型的 CRD 对象来查询其状态(即此处的 dummyspecialdevice):
查看虚拟设备上报的状态或信息:
#
5. 管理设备用户可以使用修改设备属性来管理其设备,例如,假设我们要关闭风扇,可以将其on
(开关属性)配置设置为 "on":false
:
日志显示 devicelink.edge.cattle.io/living-room-fan is patched
,查询其状态,GEAR
和SPEED
值均显示为空值(表示已关闭)。