kubeedge-counter-demo计数器演示
计数器是一个伪设备,用户无需任何额外的物理设备即可运行此演示。
计数器运行在边缘侧,用户可以从云端在Web中对其进行控制,也可以从云端在Web中获取计数器值。
部署go环境
下载地址
tar xf go1.17.11.linux-amd64.tar.gz -C /usr/local/
vi /etc/profile
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
构建镜像
下载代码
https://github.com/kubeedge/examples
cd examples-master/kubeedge-counter-demo/web-controller-app
make
make docker
cd examples-master/kubeedge-counter-demo/counter-mapper
make
make docker
查看镜像
docker images | grep "counter"
部署服务
cd /root/examples-master/kubeedge-counter-demo/crds
vi kubeedge-counter-instance.yaml
apiVersion: devices.kubeedge.io/v1alpha2
kind: Device
metadata:
name: counter
labels:
description: 'counter'
spec:
deviceModelRef:
name: counter-model
nodeSelector:
nodeSelectorTerms:
- matchExpressions:
- key: ''
operator: In
values:
- edge01 #修改之前部署的节点名字
status:
twins:
- propertyName: status
desired:
metadata:
type: string
value: 'OFF'
reported:
metadata:
type: string
value: '0'
#部署
kubectl apply -f .
#如果出现下面的问题
unable to recognize “kubeedge-web-controller-app.yaml”: no matches for kind “Role” in version “rbac.authorization.k8s.io/v1beta1”
unable to recognize “kubeedge-web-controller-app.yaml”: no matches for kind “RoleBinding” in version “rbac.authorization.k8s.io/v1beta1”
解决方法
vi kubeedge-web-controller-app.yaml
---
apiVersion: rbac.authorization.k8s.io/v1 #修改
kind: Role
metadata:
name: kubeedge-counter
namespace: default
rules:
- apiGroups: ["devices.kubeedge.io"]
resources: ["devices"]
verbs: ["get", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1 #修改
kind: RoleBinding
metadata:
name: kubeedge-counter-rbac
namespace: default
subjects:
- kind: ServiceAccount
name: default
roleRef:
kind: Role
name: kubeedge-counter
apiGroup: rbac.authorization.k8s.io
#重新部署
kubectl apply -f .
验证
kubectl get pod
NAME READY STATUS RESTARTS AGE
kubeedge-counter-app-6f88f7cb5c-9pd5k 1/1 Running 0 2m15s
kubeedge-pi-counter-68c86dc747-rdvh9 1/1 Running 0 2m15s