在树莓派上基于openeuler和isulad部署Kubeedge

一、软硬件需求

硬件:

树莓派4B一台

HDMI连接线一根(后续用于树莓派连接显示屏):

显示屏一台、鼠标一个、键盘一个(皆接入树莓派用于后续操作)

软件:

SD卡格式化工具:SD Card Formatter  

镜像:

openEuler 22.03 LTS SP4 和 openEuler-22.03-LTS-SP4-raspi-aarch64.img

烧录工具:

Win32DiskImager
 

SSH客户端:

Xshell

二、树莓派的初始化

1、烧录镜像

2、启动系统并连接WiFi

        烧录好之后将SD卡或者U盘插入到树莓派,将显示屏、鼠标就、键盘接入树莓派,并给树莓派插入电源。

        开启笔记本电脑的移动热点,方便后续查看树莓派的ip(非必要步骤,但建议):

        安装了openeuler操作系统的树莓派默认用户名为:root,密码为:openeuler,接下来连接WiFi。

        查看WiFi的SSID:

nmcli dev wifi

        连接WiFi:

nmcli dev wifi connect huang password xxxxxxx

3、SSH连接树莓派

4、虚拟机安装操作系统时需要知道的(踩了好久的坑)

        master节点我是使用虚拟机在笔记本上部署的,每次在边缘节点加入集群的时候都会发现边缘节点加入不了集群,检查发现是ping不通master节点而master节点是可以ping通边缘节点的。经过查阅资料和多次实践,发现我们在新建虚拟机的时候网络连接需要采用桥接网络
 

三、部署k8s(默认在云侧操作)

1、准备工作

需要用到的组件版本

组件版本
OSopenEuler 22.03 LTS SP4
Kubernetes1.20.2-16
iSulad2.1.2
KubeEdgev1.8.0

节点规划

节点名位置组件
cloud.kubeedge云侧(cloud)k8s(master)、isulad、cloudcore
edge.kubeedge边缘侧(edge)isulad、edgecore

建议:我们可以提前使用hostnamectl set-hostname命令来修改节点名

云侧:

hostnamectl set-hostname cloud.kubeedge

边缘侧:

hostnamectl set-hostname edge.kubeedge


前往/etc/hosts添加主机(云侧和边缘侧):

vi /etc/hosts

安装一些所需要的工具(云侧和边缘侧)

边缘侧得先下载yum工具才能使用下面的命令:

yum install -y socat conntrack-tools tar ntpdate patch

安装iSulad(云侧和边缘侧)

yum install -y iSulad
systemctl start isulad

2、部署k8s

下载kubeedge-tools 工具包(这里云侧和边缘侧都进行):

wget -O kubeedge-tools.zip https://gitee.com/Poorunga/kubeedge-tools/repository/archive/master.zip
unzip kubeedge-tools.zip

#进入 kubeedge-tools 工具包目录(我们后续所有操作基于此目录)
cd kubeedge-tools-master

初始化云侧环境:

./setup-cloud.sh

修改iSulad配置文件:

将registry-mirrors项添加镜像库"hub.oepkgs.net""https://docker.1ms.run",并将pod-sandbox-image改为

"pod-sandbox-image": "registry.aliyuncs.com/google_containers/pause:3.2",如下:

"registry-mirrors": [
        "hub.oepkgs.net",
        "https://docker.1ms.run"
    ],
"pod-sandbox-image": "registry.aliyuncs.com/google_containers/pause:3.2"

 然后使用下面命令重启isulad:

systemctl restart isulad

接着查看isulad的运行状态(isulad的正常运行非常重要影响后续能否部署成功):

systemctl status isulad

可能会出现的错误:

说明我们缺失了目录,因此需要手动创建:

sudo mkdir -p /var/lib/isulad/engines

sudo chown -R root:root /var/lib/isulad/engines
sudo chmod 755 /var/lib/isulad/engines


k8s集群初始化(apiserver-advertise-address=云侧IP请根据自己的ip进行更改

kubeadm init --apiserver-advertise-address=192.168.xx.xx --kubernetes-version v1.20.15 --pod-network-cidr=10.244.0.0/16 --upload-certs --cri-socket=/var/run/isulad.sock --image-repository=registry.aliyuncs.com/google_containers

成功效果图(记得保存好最下面这两行指令):

接下来将指定文件复制到指定目录:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3、安装网络插件

./install-flannel-cloud.sh

查看是否安装完成:

# 查看节点状态(Ready 即正常)
kubectl get nodes
NAME             STATUS   ROLES                  AGE   VERSION
cloud.kubeedge   Ready    control-plane,master   12m   v1.20.2
# 查看所有 k8s 组件运行状态(Running 即正常)
$ kubectl get pods -n kube-system
NAME                                     READY   STATUS    RESTARTS   AGE
coredns-74ff55c5b-4ptkh                  1/1     Running   0          15m
coredns-74ff55c5b-zqx5n                  1/1     Running   0          15m
etcd-cloud.kubeedge                      1/1     Running   0          15m
kube-apiserver-cloud.kubeedge            1/1     Running   0          15m
kube-controller-manager-cloud.kubeedge   1/1     Running   0          15m
kube-flannel-cloud-ds-lvh4n              1/1     Running   0          13m
kube-proxy-2tcnn                         1/1     Running   0          15m
kube-scheduler-cloud.kubeedge            1/1     Running   0          15m

四、部署cloudcore和edgecore

1、云侧部署cloudcore

初始化:

keadm init --advertise-address="云侧IP" --kubeedge-version=1.8.0

调整cloudcore配置:

./patch-cloud.sh

检查是否正常部署

# active (running)即正常
systemctl status cloudcore | grep running

Active: active (running) since Fri 2023-05-20 10:54:30 CST; 5min ago(显示这行即为正常)

2、边缘侧部署edgecore

2.1、准备工作

禁用selinux

setenforce 0

开启相应转发机制:

cat >> /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
EOF

生效规则:

modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

关闭系统swap:

swapoff -a

前往/boot/cmdline.txt修改启动参数:

vi /boot/cmdline.txt

在最后面添加

cgroup_enable=memory cgroup_memory=1 swapaccount=1

重启:

reboot


2.2、初始化边缘侧环境

提前拉取镜像:

isula  pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubeedge/pause:3.1
isula tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubeedge/pause:3.1  docker.io/kubeedge/pause:3.1

初始化:

./setup-edge.sh

检查isulad的日志情况(isulad的正常运行非常重要影响后续能否部署成功):

systemctl status isulad

 可能会出现的错误:

这里是因为缺少了目录,手动创建就好了。

sudo mkdir -p /var/lib/isulad/engines
sudo chown -R root:root /var/lib/isulad
sudo chmod -R 750 /var/lib/isulad
sudo systemctl daemon-reload
sudo systemctl restart isulad

再次检查isulad的日志:

journalctl -u isulad -f

完美解决:

 2.3、加入k8s集群

由于树莓派的openeuler操作系统是不自带yum工具的,我们得先下载yum工具。

dnf install yum

安装k8s工具:

yum install kubernetes-master kubernetes-kubeadm kubernetes-client kubernetes-kubelet

加入集群(这里的指令是之前保存的指令后面再加上--cri-socket=unix:///var/run/isulad.sock):

kubeadm join 192.168.xx.xx:6443 --token qg05h9.fjiwa9fqcj01u3te     --discovery-token-ca-cert-hash sha256:b03c4e0f32ecc8e795cfd1a84069438c06366f46abc0030083895d29e5d96e2b --cri-socket=unix:///var/run/isulad.sock

成功效果图:

2.4、加入kubeedge集群

先在云端获取token:

keadm gettoken

将刚刚得到的token替换到命令里:

keadm join --cloudcore-ipport=云侧IP:10000 --kubeedge-version=1.8.0 --token=96058ab80ffbeb87fe58a79bfb19ea13f9a5a6c3076a17c00f80f01b406b4f7c.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NDY0NDg4NzF9.1mJegWB7SUVjgf-OvAqILgbZXeMHR9eOzMxpNFc42SI

成功效果图: 

 调整 edgecore 配置 :

./patch-edge.sh

 检查边缘节点是否加入集群成功(在云侧执行):

kubectl get nodes

自此整个kubeedge的部署皆已完成!

五、测试部署

1、创建一个简单的Pod(在云侧)

在云端创建一个简单的测试Pod让其在边缘节点运行:

kubectl apply -f yamls/nginx-deployment.yaml

2、检查是否在边缘侧运行(Running即为正常):

$ kubectl get pod -owide | grep nginx
nginx-deployment-84b99f4bf-jb6sz   1/1     Running   0          30s   10.244.1.2   edge.kubeedge   <none>           <none>

附件:

参考文档:

1.KubeEdge部署指南 | openEuler文档 | openEuler社区 | v22.03_LTS_SP4

2.KubeEdge部署指南 | openEuler文档 | openEuler社区 | v21.09

3.安装指导-1 | openEuler文档 | openEuler社区 | v22.03_LTS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值