该文章参考官方文档:Start Developing KubeEdge、Setup from Source Code(链接已更新为最新)

KubeEdge,一个开源的边缘计算框架,分为 Cloud 端(云端)和 Edge 端(边缘节点端),大致上就是通过云端对各边缘端的节点进行管理。

虽是基于 Kubernetes(简称 K8S),但两者本质上并不太一样,只不过操作方式上 KubeEdge 很好的支持了 K8S API,因此命令行操作方式上很相似。

该方向技术还比较新,且更迭较快,网上的教程大多不太完整,官方文档对我这初学者来说也还未能详尽。又涉及了 Docker、Kubernetes、Mosquitto 等技术,并且遇到了很大一个问题:网络!(可能很多地方奇怪的报错都是因为网络不通,并不是真的有问题!)因此对搭建中遇到的问题,和整体流程做一下记录。

刚开始我选用了官方文档中提到的 一键安装 的方式,但过程并不顺利,中途出现了较多的报错,且 无法获取详细的报错指示,因此还是放弃了,改用正常(且复杂)的手动源码安装方式(参考文章开头的链接)。下文我会列出各部分环境配置的大致情况、坑以及所用到的参考文章,亲测有效(但随着 KubeEdge 的不断更新、不同的环境可能还是会遇到很多不同的问题,可以留言讨论)。

KubeEdge 版本:v1.1.0-beta.0.2

在云端(Cloud side)

1. ubuntu 16.04

选用了 Linux ubuntu 16.04 虚拟机,从网易源下的,因为之前接触较少,所以碰到了一些小问题,啰嗦一下。先后分别配置了

  • 完整版 vim
  • root 身份登录
  • 虚拟机防火墙
  • ssh 远程登录
  • 网络相关,这部分有些繁琐

该部分不详细展开了,有需要的小伙伴可以联系我呀。

2. Docker 18.06.0+

参考:Docs,入门到实践

一个很方便且强大的平台,很多集群管理相关的技术好像都基于此,在命令行中通过 docker 命令与 docker daemon(守护进程,或者说 docker 后台服务器)交流,来完成一系列的操作。

我主要参考了 Ubuntu 安装 Docker CE 这篇文章,完成了 Docker 的环境配置。

注:如果 Docker 内的网络出现了什么问题,可以 systemctl restart docker 重启来试一下。

3. Kubernetes 1.14.1

  1. 学习 Kubernetes 基础,因为它的 kubectl 操作会在 KubeEdge 中频繁使用,所以需要先对这种集群管理的方式有个初步了解(我是第一次接触这方面哈)
  2. 需要安装 Kubernetes 相关的 kubeadm 和 kubectl,这部分我直接阅读了 这篇官方文档,注意不要忽略文档中 「Before you begin」 这一部分,这儿涉及了一些可能会在之后导致很隐蔽错误的地方,我遇到了一些问题并查到了一些资料来补充:
  • 禁用swap
  • 修改主机名
  • 其他参考
  • k8s.gcr.io 无法访问的问题

3. 用 kubeadm 在云端创建集群,我参考了 这篇官方文档,但我开始阅读这篇文章的时候被它有所误导,正确的顺序应该是先 kubeadm init,再安装网络插件(我选用了 Calico 插件)。对于 kubeadm init,我查到了这篇资料:

  • kubeadm init 转为国内源

4. Go

这里的 Go 不是 「开始」 的意思啊哈,是 Golang 环境,具体为:

  1. 下载:linux-amd64.tar.gz
  2. 解压:tar -C /usr/local -xzf go1.12.9.linux-amd64.tar.gz
  3. /etc/profile 中添加环境变量,可参考 这篇文章export PATH=$PATH:/usr/local/go/binexport GOPATH=$HOME/go
  4. 刷新系统环境变量 source /etc/profile

5. KubeEdge 的云端核心模块

我参考了 官方文章 中 「Setup cloud side」一直到 「Setup edge side」 部分的之前,一步步照着做便可。
其中遇到了一些问题:

  • coreDNS 模块状态未正常 runnning
  • ~/cmd/config/controller.yaml 中 kubeconfig 默认的路径 ~/.kube/config 虽然文件确实存在,但前台运行 ./cloudcore 时会报错找不到该文件(有时后台运行不易发现报错,应改为前台运行测试),因此将该文件复制至 /usr/local/kubeedge/config,并相应的修改了 yaml,因此不报错了

以上云端基本配置完成了,在文档中 「Deploy the edge node」 部分最后我们执行了 kubectl apply -f kubectl apply -f ~/cmd/yaml/node.json 命令(需要预先启动 cloudcore),如果正常运行的话,我们的云端已经在等待边缘节点的加入了。

在边缘端(edge side)

1. ubuntu

同上文云端的 ubuntu 配置

2. Docker

同上文云端的 docker 配置

3. Mosquitto

参考:MQTT man page,What is MQTT and how does it work with WebSphere MQ?,github

简单来说,这是对 MQTT 协议的一个开源实现,用来使 KubeEdge 的边缘节点与具体的设备通信,并非用于云端和边缘端两者之间的通信。

安装也不复杂:

  1. 添加 apt-get 源:add-apt-repository ppa:mosquitto-dev/mosquitto-ppaapt-get update
  2. 安装:apt-get install mosquitto

4. KubeEdge 的边缘核心模块

仍然,看着 这篇文档 的 「Setup edge side」 部分照着做便可。

顺着文档,配置完 KubeEdge 的云端模块和边缘端模块,便来到了 「Deploy Application on cloud side」 部分,文档中 kubectl apply -f deployment.yaml 命令是便是在边缘节点成功连接云端节点之后,向边缘节点发布一个 deployment(即一个任务或者说是作业),让边缘端节点来执行。这过程中我也遇到了一些问题:

  • 通过 kubectl get pods 发现边缘端某 pod 持续处于 ContainerCreating 状态时,可能是边缘端在执行 deployment 时确实发生了问题,一个问题可能是文档中已经提到的 Note: Currently, for edge node, we must use hostPort in the Pod container spec so that the pod comes up normally, or the pod will be always in ContainerCreating status. The hostPort must be equal to containerPort and can not be 0.,其他一些问题可能是:
  • Failed to get host IP: failed to get network interface:可能是默认的配置文件中的网络设置的 network interface 并非 ubuntu 中实际的网络接口的名字,应该根据自己机器的情况进行修改 edge.yaml 中默认的 netword interface
  • 报告端口占用,可能是之前占用此端口的 docker container 没有被清理掉,可以看 这篇 。

More: 基于 KubeEdge 的 Spark 部署

可以看下一篇文章:基于 KubeEdge 的 Spark 部署(以及 BigDL)

边学,边试,边记,

KubeEdge 的配置过程确实很复杂,从直接上手安装,到反过头来看官方文档学基础,再到重新安装,看了很多,摸索了挺久,才能完整的配置完成,上文的介绍可能没有面面俱到,不过如果有小伙伴遇到什么问题,可以多交流呀~

crypto安装_KubeEdge 完整安装 amp; 部署小指南相关推荐

  1. docker安装gamit_Gamit-Globk完整安装攻略

    GAMIT/GLOBK 果然是相当的不好装,不过今天貌似搞定了.网上的资料不多,谈及奇怪 问题的情况的文章更少,因此想起写这篇文章. 1. 操作系统 其实我一直就不明白, 一个科学计算的程序干嘛用那么 ...

  2. Linux 安装Oracle11g完整安装图文教程另附基本操作 (分享)

    一.修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件 输入命令:vi /etc/security/lim ...

  3. Docker 安装 命令 数据卷 应用部署 网络优化 Dockerfile 服务编排Compose 私有仓库

    Docker 1. 初识docker 1.1 Docker是什么 了解Docker的前生LXC LXC与docker的关系 Docker 的特点 1.2 为什么使用Docker Docker的优势 缺 ...

  4. 【Ubuntu】虚拟机VirtualBox安装win7完整步骤

    在Ubuntu16.04中使用VirtualBox安装win7,亲测可以完美使用; 完整步骤参见如下链接: 1.VirtualBox安装步骤:http://www.xitongcheng.com/ji ...

  5. IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版]

    IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版] IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin ...

  6. 学习笔记Hadoop(四)—— Hadoop集群的安装与部署(1)—— 虚拟机安装、java安装

    一.虚拟机安装 1.1.了解一下概念 操作系统 操作系统(operation system,简称OS)是管理计算机硬件与软件资源的计算机程序.操作系统需要处理如管理与配置内存.决定系统资源供需的优先次 ...

  7. 安装kube-prometheus项目:k8s部署prometheus、监控k8s核心组件、添加告警(微信、钉钉、企业微信)、进行数据持久化

    概述 很多地方提到Prometheus Operator是kubernetes集群监控的终极解决方案,但是目前Prometheus Operator已经不包含完整功能,完整的解决方案已经变为kube- ...

  8. docker $PWD路径_Docker安装Jenkins+Shell脚本自动化部署项目

    本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料 Sentinel+Nacos 是 ...

  9. 大数据基础系列 4:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤及易错点分析

    文章目录 前言 一.创建 Ubuntu 用户 二.安装 Java 2.1.查看本地 Java 版本 2.2.验证 Java 在本地的配置情况 三.安装 ssh 服务 3.1.安装 openssh-se ...

最新文章

  1. 使用node.js构建命令行工具
  2. 正则 去除字符串中的特殊字符
  3. 【Android 逆向】IDA 安装 ( 使用 IDA 分析 so 动态库 )
  4. 生成docker镜像
  5. iOS7应用开发4、Foundation框架
  6. 有时便去寻找思维以外的精神
  7. Floyed(floyd)算法详解
  8. php下标排序,php二维数组指定下标排序
  9. 影响科学圈的“十大名码”!
  10. postman导出Collections后再导入时,打开内容为空
  11. elementary os java,吐槽ELEMENTARY OS系统/ELEMENTARY OS系列文章汇总
  12. Unity Keyword
  13. Processing学习笔记
  14. spring cache注解@Cacheable参数key赋值
  15. word文档多级列表设置
  16. GoogleMap+renderDoc获取地图3D模型
  17. 有创业团队想打造不一样的大数据平台
  18. 高版本的SQLServer2016 还原到低版本的SQL Server2012
  19. 国内开源网店的那些事
  20. 【offer 收割计划】这几道常见的面试题,你会几道

热门文章

  1. 携程二季度净利润降55% 促销被指“玩烟幕弹”
  2. 《Python编程从入门到实践》学习笔记3:列表
  3. python--复习之路的目录
  4. 腾讯99公益日︱深圳市慈善会:那些无力的故事,都拥有了力量
  5. 一条sql导致数据库整体性能下降的诊断和解决的全过程
  6. 安卓中事件绑定的写法
  7. 线程及同步的性能 – 线程池/ ThreadPoolExecutors/ ForkJoinPool
  8. JavaScript字符串数组拼接的性能测试及优化方法
  9. 在64-bit机器上运行32-big的应用程序,需要安装ia32-libs库
  10. 综合布线系统设计遵循的标准和条件