892 字
4 分钟
KubeEdge 边缘计算学习手册
1. KubeEdge 云端部署
1.1 环境准备
- 云端:k8s-allinone 镜像,hostname 为
master - 边端:hostname 为
kubeedge-node
# 云端和边端都配置 /etc/hosts172.129.20.14 master172.129.20.21 kubeedge-node1.2 配置 YUM 仓库和 Docker
# 云端tar -zxvf kubernetes_kubeedge_allinone.tar.gz -C /opt/mv /etc/yum.repos.d/* /media/cat > /etc/yum.repos.d/local.repo <<EOF[docker]name=dockerbaseurl=file:///opt/yumgpgcheck=0enabled=1EOF
# 搭建 FTP 给边端用yum -y install vsftpdecho "anon_root=/opt" >> /etc/vsftpd/vsftpd.confsystemctl enable vsftpd --nowDocker daemon.json(云端和边端相同):
{ "log-driver": "json-file", "log-opts": { "max-size": "200m", "max-file": "5" }, "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 655360, "Soft": 655360 }, "nproc": { "Name": "nproc", "Hard": 655360, "Soft": 655360 } }, "live-restore": true, "oom-score-adjust": -1000, "max-concurrent-downloads": 10, "max-concurrent-uploads": 10, "insecure-registries": ["0.0.0.0/0"]}systemctl daemon-reload && systemctl restart docker1.3 部署 Harbor
cd /opt/mv docker-compose-Linux-x86_64 /usr/bin/docker-composetar -zxvf harbor-offline-installer-v2.5.0.tgzcd harbor && cp harbor.yml.tmpl harbor.ymlvi harbor.yml # hostname: 云端IP./install.shdocker login -u admin -p Harbor12345 master
# 创建 k8s 命名空间(公开)cd /opt/k8simage/ && sh load.sh && sh push.sh1.4 配置 Pod 亲和性
# 修改 flannel,排除边端节点kubectl edit daemonset -n kube-system kube-flannel-ds# 在 containers 前添加 nodeAffinity,排除 node-role.kubernetes.io/edge
# 修改 kube-proxy,同上kubectl edit daemonset -n kube-system kube-proxy1.5 初始化云端
cd /opt/kubeedge/mv keadm /usr/bin/mkdir /etc/kubeedgetar -zxf kubeedge-1.11.1.tar.gzcp -rf kubeedge-1.11.1/build/tools/* /etc/kubeedge/cp -rf kubeedge-1.11.1/build/crds/ /etc/kubeedge/tar -zxf kubeedge-v1.11.1-linux-amd64.tar.gzcp -rf * /etc/kubeedge/
# 初始化(advertise-address 为 master IP)keadm deprecated init --kubeedge-version=1.11.1 --advertise-address=172.129.20.14netstat -ntpl | grep cloudcore# tcp6 :::10000 LISTEN cloudcore# tcp6 :::10002 LISTEN cloudcore2. KubeEdge 边端部署
# 从云端复制工具和配置scp /usr/bin/keadm root@kubeedge-node:/usr/local/bin/scp -r /etc/kubeedge/* root@kubeedge-node:/etc/kubeedge/
# 获取 tokenkeadm gettoken
# 边端加入集群keadm deprecated join --cloudcore-ipport=172.129.20.14:10000 \ --kubeedge-version=1.11.1 --token=<token值>
# 遇到 yum 报错时rm -rf /etc/yum.repos.d/epel*
systemctl status edgecore
# 云端验证kubectl get nodes3. 云端监控服务配置
export CLOUDCOREIPS="172.129.20.14"cd /etc/kubeedge/./certgen.sh stream
# 修改 cloudcore.yamlvi /etc/kubeedge/config/cloudcore.yaml# cloudStream.enable: true# cloudStream.streamPort: 10003# router.enable: true# router.port: 9443
# 修改边端 edgecore.yamlvi /etc/kubeedge/config/edgecore.yaml# edgeStream.enable: true# serviceBus.enable: true
# 重启云端kill -9 $(netstat -lntup | grep cloudcore | awk 'NR==1 {print $7}' | cut -d '/' -f 1)cp -rfv cloudcore.service /usr/lib/systemd/system/systemctl start cloudcore.servicenetstat -lntup | grep 10003
# 重启边端systemctl restart edgecore.service
# 验证kubectl top nodes4. 云端 Python 环境搭建
tar -zxvf gcc-repo.tar.gzcat > /etc/yum.repos.d/gcc.repo <<EOF[gcc]name=gccbaseurl=file:///root/gcc-repogpgcheck=0enabled=1EOF
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel \ readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel gcc
tar -zxvf volume_packages.tar.gztar -zxvf Python-3.7.3.tar.gzmkdir /usr/local/python3cd Python-3.7.3/./configure --prefix=/usr/local/python3make && make installyes | mv volume_packages/site-packages/* /usr/local/python3/lib/python3.7/site-packages/
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3pip3 list5. 边端 MongoDB 数据库
tar -zxvf mongoRepo.tar.gz -C /opt/cat > /etc/yum.repos.d/mongo.repo <<EOF[mongo]name=mongoenabled=1gpgcheck=0baseurl=file:///opt/mongoRepoEOF
yum -y install mongodb*
# 修改绑定地址vi /etc/mongod.conf# bindIp: 0.0.0.0
systemctl restart mongod && systemctl enable mongodnetstat -lntup | grep 27017
# 创建数据库mongo> use edgesql> db.createCollection("users")> db.createCollection("ai_data")> db.createCollection("ai_model")> show collections6. 边端 Nginx 前端部署
yum install -y nginxrm -rf /usr/share/nginx/html/*mv ydy_cloudapp_front_dist/index.html /usr/share/nginx/html/mv ydy_cloudapp_front_dist/static/ /usr/share/nginx/html/Nginx 反向代理配置:
server { listen 80; server_name localhost; root /usr/share/nginx/html;
location ~ ^/cloudedge/(.*) { proxy_pass http://masterIP:30850/cloudedge/$1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type'; add_header 'Access-Control-Allow-Credentials' 'true'; }}nginx -tsystemctl restart nginx && systemctl enable nginx7. 云端 FastAPI 微服务
# 用户服务(端口 8046)cd /root/ydy_cloudapp_backend_framework/fastapi_user/python3 main.py &# 修改 manager_user.py 中 MongoDBUrl 为边端 IP
# 云服务(端口 8070)cd /root/ydy_cloudapp_backend_framework/fastapi_cloud/python3 main.py &
# 边缘管理服务(端口 8045)cd /root/ydy_cloudapp_backend_framework/fastapi_cloud_edge/python3 main.py &
# AI PCB 检测服务(端口 8055)cd /root/ydy_cloudapp_backend_framework/fastapi_ai_pcb/vi pcb_detect_service.py # 注释 from pcb_detect import detect_imagepython3 main.py &
# 网关服务(端口 30850)cd /root/ydy_cloudapp_backend_framework/fastapi_gateway/fastapi_gateway_service/python3 main.py &访问地址:
- 用户服务:
http://云端IP:8046/docs - 云服务:
http://云端IP:8070/docs - 边缘管理:
http://云端IP:8045/docs - AI 服务:
http://云端IP:8055/docs - 网关服务:
http://云端IP:30850/docs
Windows HOSTS 映射:
172.129.20.14 localedge最终访问:http://边端IP/index.html(test/123456)
8. 竞赛真题精选
8.1 云端部署 KubeEdge cloudcore
keadm deprecated init --kubeedge-version=1.11.1 --advertise-address=172.129.20.16netstat -lntup | grep cloudcore8.2 边端加入集群
keadm gettokenkeadm deprecated join --cloudcore-ipport=172.129.20.33:10000 \ --kubeedge-version=1.11.1 --token=<token>8.3 边缘应用部署
# 安装 jq、Mariadb(密码 123456)# 构建前后端镜像和 AI 镜像# 编写 platform_deployment.yaml 部署到 ec-dashboard 命名空间# 暴露端口 30080# 通过平台部署 AI 应用(名称 analyzer) KubeEdge 边缘计算学习手册
https://blog.xeu.asia/posts/kubeedge-guide/