KubeEdge 是一个开源的系统,可将本机容器化应用编排和管理扩展到边缘端设备。 它基于Kubernetes构建,为网络和应用程序提供核心基础架构支持,并在云端和边缘端部署应用,同步元数据。KubeEdge 还支持 MQTT 协议,允许开发人员编写客户逻辑,并在边缘端启用设备通信的资源约束。KubeEdge 包含云端和边缘端两部分。 云端主要通过cloudcore启动,边缘端通过edgecore启动,两边都需要有完整的docker环境,要能支持docker运行。
kubernetes安装kubeadm reset kubeadm init --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config kubectl apply -f kube-flannel.yml云端安装
下载kubeedge安装文件到/etc/kubeedge文件夹底下,包含(根据处理器架构做对应的选择): 下载kubeedge安装文件到/etc/kubeedge文件夹底下,包含(根据处理器架构做对应的选择):
certgen.sh
checksum_kubeedge-v1.8.2-linux-amd64.tar.gz.txt
kubeedge-v1.8.2-linux-amd64.tar.gz
keadm-v1.8.2-linux-amd64.tar.gz
edgemesh.tgz crds
cloudcore.service
helm
安装keadm
解压keadm,chmod +x keadm,cp keadm /usr/bin/
初始化cloudcore 生成stream证书export CLOUDCOREIPS="192.168.50.148"
复制kubeedge生成证书的certgen.sh文件,
chmod +x certgen.sh
/etc/kubeedge/certgen.sh stream 或者 bash -x ./certgen.sh genCertAndKey stream
初始化cloudcoresudo keadm init --kubeedge-version=1.8.2 --kube-config=/root/.kube/config --advertise-address="192.168.50.148"
添加servicesudo cp cloudcore.service /etc/systemd/system/
sudo keadm gettoken
修改edgecore配置文件
$ vim /etc/kubeedge/config/cloudcore.yaml modules: .. cloudStream: enable: true streamPort: 10003 .. dynamicController: enable: true ..edgemesh安装(需要安装helm)
helm install edgemesh --set server.nodeName=all-in-one --set server.publicIP=192.168.50.148 https://raw.githubusercontent.com/kubeedge/edgemesh/main/build/helm/edgemesh.tgz
ps -ef|grep cloudcore,杀掉进程然后sudo service cloudcore start重新启动
安装边缘端edgecore 下载安装文件同云端下载内容,根据处理器架构做对应修改,这里省略不详细展开
修改hostname(可选)sudo hostnamectl set-hostname
vim /etc/hosts文件中第一行的127.0.0.1解析到的hostname
安装mqtt(mosquitto)mqtt只需要在边缘端安装,ubuntu系统直接使用apt-get,如下:
apt-get install mosquitto // 安装加入集群
sudo keadm join --cloudcore-ipport=192.168.50.148:10000 --kubeedge-version=1.8.2 --token=31d060c239c5afda79093d79b4013846285ddbe1821523efbf5dffd0796623c3.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzgzNDc1ODV9.jqRQlNjxGb_7f5JJSedQRf9TBZO4wzijf3eH50rzfTM --edgenode-name=jetsonnx-4g --labels workspaceId=200100,companyId=200,edgeType=infer
修改边缘端配置文件:
$ vim /etc/kubeedge/config/edgecore.yaml modules: .. edgeStream: enable: true handshakeTimeout: 30 .. edgeMesh: enable: false .. metaManager: metaServer: enable: true .. sudo systemctl restart edgecore
这里节点重启后要加入集群会出现edgemesh-agent一直处于pending状态中,需要再云端删掉对应的pod后重新生成pod才能成功部署到边缘端,后续需要优化。
实在还是失败可以尝试删除 kubectl delete objectsync --all
查看edgemesh是否安装成功在边缘端: curl 127.0.0.1:10550/api/v1/services
在云端: kubectl get nodes -o wide && kubectl get pods -o wide -A
查看容器状态,都是running就表示运行成功了
日志查看云端日志位置: tail -f /var/log/kubeedge/cloudcore.log
边缘端日志位置: journalctl -u edgecore.service -b -f
服务部署测试nginx-test.yml
apiVersion: apps/v1 kind: Deployment metadata: labels: k8s-app: kubeedge-demo-app name: kubeedge-demo-nginx namespace: default spec: selector: matchLabels: k8s-app: kubeedge-demo-app template: metadata: labels: k8s-app: kubeedge-demo-app spec: #nodeName: davinci-mini nodeName: jetsonnano2g-desktop hostNetwork: true containers: - name: kubeedge-nginx-main image: nginx:1.21.3 # restartPolicy: Always ports: - containerPort: 80 env: - name: MY_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: MY_POD_IP valueFrom: fieldRef: fieldPath: status.podIP --- kind: Service apiVersion: v1 metadata: name: nginx-srv namespace: default labels: k8s-app: kubeedge-demo-nginx spec: ports: - name: demo-http-80 protocol: TCP port: 80 targetPort: 80 nodePort: 31513 selector: k8s-app: kubeedge-demo-app clusterIP: 10.96.0.5 # clusterIPs: # - 10.96.0.4 type: NodePort sessionAffinity: None externalTrafficPolicy: Cluster
kubectl apply -f nginx-test.yaml创建应用和服务
在边缘端即可通过servicename.namespace:port访问对应的服务,egg: curl nginx-srv.default
参考kubeedge安装: Deploying using Keadm | KubeEdge
edgemesh安装: 快速上手 | EdgeMesh
kubeedge官方文档:Deploying with binary | KubeEdge
kubeedge代码仓库: GitHub - kubeedge/kubeedge: Kubernetes Native Edge Computing framework (project under CNCF) kubeedge部署样例: https://github.com.cnpmjs.org/kubeedge/examples
kubeedge设备控制文档: Device Manager | KubeEdge
垃圾CSDN markdown都支持不好!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)