领航计划(二)- 正题-部署安装KubeEdge
前言部分
- 今天的主题是部署安装KubeEdge,这将会是入门的重要门槛,因为实在是安装总是会出现一些不经意的错误,下面是经过几次验证的安装步骤,很多都支持了一些简单的shell脚本的安装解决了一定了安装失败的问题,希望可以帮助到你
KubeEdge 部署环境
- 在云端方面,我们需要:Kubernetes 集群
- Kubernetes:在CPU:2G,运行内存2G以上(建议可以的话还是运行内存在4G以上,CPU4G)
- 在边缘,我们需要:
容器运行时,现在我们支持:
- Docker
- Containerd
- Cri-o
- Virtlet
- MQTT服务器(可选)
- 建议公网开放端口:9443、10252、10251、5353、20006、2701、9376、12345、2379、2380、6443、10000-10004
- 出现无法访问,第一时间考虑是否未开放相应端口号
1. 安装Docker
Docker
- 一键shell脚本安装:安装实例中Docker版本19.03.5
验证Docker
配置Docker
-
配置Docker
-
- 修改
exec-opts
-
- 添加Docker镜像
"registry-mirrors": ["https://dockerproxy.com" ]
-
一键脚本
2. 安装K8S集群
一键Shell脚本安装
部署启动K8S集群
- 需要指定kubernetes-version和–apiserver-advertise-address
- apiserver-advertise-address:服务器内网地址
安装提示完成安装K8S
部署flannel网络插件
- 问题描述:当你不部署容器网络的时候,可能会出
coredns
一直处于pengding 模式
- 适用情况:执行
kubectl describe po <peoblem podid> -n <peoblem podid>
之后描述内容:warning 缺少一个xx 文件的
其他问题
有master污点,无法调度
- 使用
kubectl describe po <po> -n <namespace>
,查看描述类似kubectl taint nodes k8s-master1 node-role.kubernetes.io/master=:NoSchedule node/k8s-master1 tainted
- 解决:允许调度到master
kubectl taint nodes --all node-role.kubernetes.io/master-
3. 安装KubeEdge
一键Shell脚本安装云端
- 环境:下载KubeEgev.12.1版本
- –advertise-address 公网ip
- 出现cloudcore install过慢:
- 事先拉取docker镜像
- exmaple:
docker pull kubeedge/cloudcore:v1.12.1
kubeedge\keadm
weget可能受到网络限制,下载过慢可以手动下载,放入服务器并且注释wget
- 建议先修改好hostname:hostnamectl set-hostname <newhostname>:
hostnamectl set-hostname cloud-01
验证安装
keadm version
kubectl get pod -n kubeedge
:有二个podcloudcore....
and cloud-iptables-manager...
后面是我们在启动cloudcore的时候指定了iptablesManager.mode="external"
边缘节点安装
- 边缘节点可能加入过慢:
- 事先拉取docker 镜像,版本之间不互通,这边是kubeEdge 是v1.12.1版本下的的版本对应关系
- example:
docker pull eclipse-mosquitto:1.6.15
and kubeedge/installation-package
- 建议先修改好hostname:hostnamectl set-hostname <newhostname>:
hostnamectl set-hostname edge-01
-
- 回到第一步安装Docker
-
- 安装keadm 命令:
-
- 获取云端token:在云端节点执行
keadm gettoken
-
- join 云端:
keadm join --token=$TOKEN --cloudcore-ipport=$SERVER --kubeedge-version=1.12.1
- TOKEN:云端获取的token
- SERVER:云端节点的公网ip:10000 端口,一般kubeedge使用10000
-
- 在加入的时候,可以在云端使用
kubectl get nodes -A -w
,在边缘启动成功之后,需要等待一会云端的k8s 才会显示加入节点,看到节点处于ready模式