在 KubeSphere 上部署最新版的 KubeEdge
准备
-
一个 k8s 集群,使用 kubesphere 安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
centos ./kk create config --with-kubernetes v1.26.0 --with-kubesphere ./kk create cluster -f config-sample.yaml 低版本的k8s: ./kk create cluster --with-kubernetes v1.22.12 --with-kubesphere v3.4.1 ubuntu 20.04 all in one 部署 ./kk create cluster --with-kubernetes v1.26.0 --with-kubesphere v3.4.1 --container-manager containerd 多节点 高可用部署 ./kk create config --with-kubesphere 3.4.1 --with-kubernetes v1.26.0 ./kk create cluster -f config-sample.yaml
-
一个 边缘节点 可以访问集群,contained 版本 >=1.6 ,如果是 docker 记得安装 CRI-dockerd.
可选:卸载 docker 安装contained
如果之前安装了 docker ,使用下面命令卸载
|
|
使用Keadm进行部署
Keadm 是一款用于安装 KubeEdge 的工具。 Keadm 不负责 K8s 的安装和运行,在使用它之前,请先准备好一个 K8s 集群。
KubeEdge 对 Kubernetes 的版本兼容性,更多详细信息您可以参考 kubernetes-兼容性 来了解,以此来确定安装哪个版本的 Kubernetes 以及 KubeEdge。
使用限制
keadm
目前支持 Ubuntu 和 CentOS OS。- 需要超级用户权限(或 root 权限)才能运行。
设置云端(KubeEdge 主节点)
keadm init
默认情况下边缘节点需要访问 cloudcore 中 10000
,10002
端口。 若要确保边缘节点可以成功地与集群通信,您需要创建防火墙规则以允许流量进入这些端口(10000 至 10004)。
重要提示:
- 必须正确配置 kubeconfig 或 master 中的至少一个,以便可以将其用于验证 k8s 集群的版本和其他信息。
- 请确保边缘节点可以使用云节点的本地 IP 连接云节点,或者需要使用
--advertise-address
标记指定云节点的公共 IP 。 --advertise-address
(仅从 1.3 版本开始可用)是云端公开的地址(将添加到 CloudCore 证书的 SAN 中),默认值为本地 IP。keadm init
将会使用二进制方式部署 cloudcore 为一个系统服务,如果您想实现容器化部署,可以参考keadm beta init
。
安装 CloudCore
|
|
检查 cloudcore 是否安装成功
|
|
卸载 CloudCore
|
|
设置太空端
安装最新版 containerd
|
|
安装 CNI 插件
|
|
重启 containerd
|
|
可选:安装 cri-dockerd(运行时为 docker )
-
下载 release 包
-
下载 cri-docker.service 和 cri-docker.socket
https://github.com/Mirantis/cri-dockerd/tree/master/packaging/systemd
|
|
-
重启 docker
1
systemctl restart docker
安装 EdgeCore
根据前面的准备步骤,安装 CNI CRI-dockerd
-
纳管 边缘节点
containerd
1
keadm join --cloudcore-ipport=10.108.96.24:10000 --token=c96621fc3d5280337aced5dcb63be7382eeedd764fbdd21c892ec8b47053f394.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDU2NzczNzJ9.G3aEpFxi_0HMsa6aDcefDeItCkaFri1rFWU3IIqDVmo --kubeedge-version=1.15.1 --runtimetype=remote --with-mqtt=false
docker
1
keadm join --cloudcore-ipport=10.108.96.24:10000 --token=8cc6fc16618f8fc7b98a0221683b26d36a9b571c9257aac544574bb9dc014f74.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTE2OTY4MTR9.EgxPs9Z5MFHSUxCwM9rvyY9XjWXBHKxZmezi7pzyOIo --kubeedge-version=1.15.1 --with-mqtt=false --remote-runtime-endpoint=unix:///var/run/cri-dockerd.sock
-
查看状态
|
|
部署应用到边缘节点
部署 redis
|
|
部署 nginx
|
|
去掉 daemonset 部署在边缘节点上
- 给 master 节点打标签
kubectl label nodes tjmaster master=true
- 编辑daemonset
kubectl edit daemonset calico-node -n kube-system
kubectl edit daemonset kube-proxy -n kube-system::
kubectl edit daemonset nodelocaldns -n kube-system
- 增加一个标签 master: “true”,没有标签就都加上。
查看太空端服务日志
1.开启日志
2.重启 edgecore
service edgecore restart
问题汇总
常见问题:
-
CNI 网络问题,安装CNI插件,后重启。
ctr -n k8s.io t ls
, 如果有残留的task,请执行ctr -n k8s.io t kill {task id}
清理ctr -n k8s.io c ls
, 如果有残留的容器,请执行ctr -n k8s.io c rm {container id}
清理- 执行
systemctl restart containerd.service
重启containerd
-
Cgroup driver
删掉这行
-
netstat -anpt |grep 10002 查看 cloudcore 是否能部署在这上面
-
注意 边缘节点的node id 和 cloud 节点名字不能重复
-
can’t mount rootfs的问题
修改 containerd 的配置
-
220 上部署 containerd 问题比较多,换成 docker 需要安装 cri-dockerd。使用 cri-dockerd 的时候,keadm join 的时候 记得加上参数 –remote-runtime-endpoint=unix:///var/run/cri-dockerd.sock
更多问题可以访问kubeedge FAQ