k8s+kubeedge+sedna安装全套流程+避坑指南+解决办法 (二)

举报
清如许 发表于 2023/04/26 18:12:39 2023/04/26
【摘要】 k8s+kubeedge+sedna安装全套流程+避坑指南+解决办法(二) 五、Sedna安装以下都是在k8s-master云节点中进行!!!sedna安装官方文档:https://github.com/kubeedge/sedna/blob/main/docs/setup/install.md这个文档看似挺简单,实则坑多着呢,我们一一来看。看要求条件:kubectl、kubernetes、...

k8s+kubeedge+sedna安装全套流程+避坑指南+解决办法(二)

五、Sedna安装

以下都是在k8s-master云节点中进行!!!

sedna安装官方文档:https://github.com/kubeedge/sedna/blob/main/docs/setup/install.md
这个文档看似挺简单,实则坑多着呢,我们一一来看。

看要求条件:
在这里插入图片描述
kubectlkubernetesKubeEdge我们都已安装完成,这里文档还提出并且还需要EdgeMesh在运行,所以先安装EdgeMesh

5.1 前置准备

EdgeMesh安装官方文档:https://edgemesh.netlify.app/zh/guide/#%E4%BE%9D%E8%B5%96%E7%8E%AF%E5%A2%83

根据官方文档描述:

  • 步骤1: 去除 K8s master 节点的污点
 kubectl taint nodes --all node-role.kubernetes.io/master-

如果 K8s master 节点上没有部署需要被代理的应用,上面的步骤也可以不执行。

  • 步骤2: 给 Kubernetes API 服务添加过滤标签
kubectl label services kubernetes service.edgemesh.kubeedge.io/service-proxy-name=""
  • 步骤3: 启用 KubeEdge 的边缘 Kube-API 端点服务
    请参考文档 边缘 Kube-API 端点 以启用此服务。边缘 Kube-API 端点

5.1.1 配置边缘 Kube-API 端点

步骤1: 在云端,开启 dynamicController 模块,配置完成后,需要重启 cloudcore

vim /etc/kubeedge/config/cloudcore.yaml
modules:
  ...
  dynamicController:
    enable: true
...

步骤2: 在边缘节点,打开 metaServer 模块(如果你的 KubeEdge < 1.8.0,还需关闭旧版 edgeMesh 模块),配置完成后,需要重启 edgecore

vim /etc/kubeedge/config/edgecore.yaml
modules:
  ...
  edgeMesh:
    enable: false
  ...
  metaManager:
    metaServer:
      enable: true
...

步骤3: 在边缘节点,配置 clusterDNS 和 clusterDomain,配置完成后,需要重启 edgecore

vim /etc/kubeedge/config/edgecore.yaml
modules:
  ...
  edged:
    ...
    tailoredKubeletConfig:
      ...
      clusterDNS:
      - 169.254.96.16
      clusterDomain: cluster.local

提示
步骤3的配置是为了边缘应用能够访问到 EdgeMesh 的 DNS 服务,与边缘 Kube-API 端点本身无关,但为了配置的流畅性,还是放在这里说明。
clusterDNS 设置的值 ‘169.254.96.16’ 来自于 commonConfig 中 bridgeDeviceIP 的默认值,正常情况下无需修改,非得修改请保持两者一致。

步骤4: 最后,在边缘节点,测试边缘 Kube-API 端点功能是否正常

curl 127.0.0.1:10550/api/v1/services
{"apiVersion":"v1","items":[{"apiVersion":"v1","kind":"Service","metadata":{"creat.......

注意
如果返回值是空列表,或者响应时长很久(接近 10s)才拿到返回值,说明你的配置可能有误,请仔细检查。

完成上述步骤之后,KubeEdge 的边缘 Kube-API 端点功能就已经开启了,接着继续部署 EdgeMesh 即可。

5.2 安装EdgeMesh

有两种方式安装,一种是Helm 安装,另一种是手动安装,这种会出问题。 推荐使用手动安装,安装方式如下:

  • 步骤1: 获取 EdgeMesh
git clone https://github.com/kubeedge/edgemesh.git
cd edgemesh
  • 步骤2: 安装 CRDs
 kubectl apply -f build/crds/istio/
customresourcedefinition.apiextensions.k8s.io/destinationrules.networking.istio.io created
customresourcedefinition.apiextensions.k8s.io/gateways.networking.istio.io created
customresourcedefinition.apiextensions.k8s.io/virtualservices.networking.istio.io created
  • 步骤3: 部署 edgemesh-agent
kubectl apply -f build/agent/resources/
serviceaccount/edgemesh-agent created
clusterrole.rbac.authorization.k8s.io/edgemesh-agent created
clusterrolebinding.rbac.authorization.k8s.io/edgemesh-agent created
configmap/edgemesh-agent-cfg created
configmap/edgemesh-agent-psk created
daemonset.apps/edgemesh-agent created

提示
请根据你的 K8s 集群设置 build/agent/resources/04-configmap.yaml 的 relayNodes,并重新生成 PSK 密码。

这里有个提示,我们要修改build/agent/resources/04-configmap.yaml这个文件,使用以下命令:

cd build/agent/resources
vim 04-configmap.yaml

改成如下图所示:
在这里插入图片描述
注意最下面的psk设置,重新另起一个终端,使用以下命令生成psk

openssl rand -base64 32

然后填上去保存,然后重新运行步骤3的部署。

  • 步骤4: 检验部署结果
kubectl get all -n kubeedge -o wide

安装成功如下图所示:
在这里插入图片描述

5.3 云边协同通信测试

如图所示,为验证我们edgemesh是否安装完成,通信是否正常,最好测试一下通信效果。
在这里插入图片描述
跨边云通信 ⭐
处于 edgezone 的 busybox-edge 应用能够访问云上的 tcp-echo-cloud 应用,处于 cloudzone 的 busybox-cloud 应用能够访问边缘的 tcp-echo-edge 应用

测试步骤:

在k8s-master(172.23.70.235)上执行以下命令:

kubectl apply -f examples/cloudzone.yaml
namespace/cloudzone created
deployment.apps/tcp-echo-cloud created
service/tcp-echo-cloud-svc created
deployment.apps/busybox-sleep-cloud created

在kubeedge(172.23.70.34)边缘节点上执行以下命令:

kubectl apply -f examples/edgezone.yaml
namespace/edgezone created
deployment.apps/tcp-echo-edge created
service/tcp-echo-edge-svc created
deployment.apps/busybox-sleep-edge created

这里如果边缘节点没有安装kubectl的话,可能执行失败,

报错提示:cannot stat ‘/etc/kubernetes/admin.conf’: No such file or directory

解决方式:
从k8s-master节点把etc/kubernetes/admin.conf拷贝过来,复制到kubeedge节点。

在k8s-master执行复制文件命令:

scp /etc/kubernetes/admin.conf root@172.23.70.34:/etc/kubernetes/admin.conf

输入密码就能即可。
然后在node节点执行:

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

source ~/.bash_profile

再次验证:

kubectl get pods

如果还不行,那就在node节点再安装以下kubectl,执行如下:

## 配置kubernetes源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF


# 执行安装
yum -y install --nogpgcheck kubelet-1.23.8 kubeadm-1.23.8 kubectl-1.23.8

# 检查kubectl version
kubectl version

5.3.1 云访问边测试

#执行命令:
 BUSYBOX_POD=$(kubectl get all -n cloudzone | grep pod/busybox | awk '{print $1}')
 kubectl -n cloudzone exec $BUSYBOX_POD -c busybox -i -t -- sh
 telnet tcp-echo-edge-svc.edgezone 2701
Welcome, you are connected to node ke-edge1.
Running on Pod tcp-echo-edge.
In namespace edgezone.
With IP address 172.17.0.2.
Service default.
Hello Edge, I am Cloud.
Hello Edge, I am Cloud.

如图所示:
在这里插入图片描述

5.3.2 边访问云测试

$ BUSYBOX_CID=$(docker ps | grep k8s_busybox_busybox-sleep-edge | awk '{print $1}')
$ docker exec -it $BUSYBOX_CID sh
$ telnet tcp-echo-cloud-svc.cloudzone 2701
Welcome, you are connected to node k8s-master.
Running on Pod tcp-echo-cloud.
In namespace cloudzone.
With IP address 10.244.0.8.
Service default.
Hello Cloud, I am Edge.
Hello Cloud, I am Edge.

如图所示:
在这里插入图片描述
如果都通,说明没问题,可以继续安装Sedna了,否则,请逐个排查。常见问题及解决办法:全网最全EdgeMesh Q&A手册:https://zhuanlan.zhihu.com/p/585749690

5.4 Sedna安装

官网一键化安装seda(不建议,会出错)

# 不建议使用这种方式安装
curl https://raw.githubusercontent.com/kubeedge/sedna/main/scripts/installation/install.sh | SEDNA_ACTION=create bash -
  • 本地安装

下载install.sh文件

wget https://raw.githubusercontent.com/kubeedge/sedna/main/scripts/installation/install.sh

相关的修改

#改名字
mv install.sh offline-install.sh

#修改文件中的一下内容(sh的语法)
1.第28行:TMP_DIR='opt/sedna'
2.第34行:删除  trap "rm -rf '%TMP_DIR'" EXIT
3.第415行:删除  prepare

下载sedna的官网github:https://github.com/kubeedge/sedna/tree/main/build

git clone https://github.com/kubeedge/sedna.git

#将build和文件夹里的内容一块复制到sedna文件夹下:
cd build/ /opt/sedna/

然后,进入/opt/sedna目录,安装sedna:

#直接进入之前准备好的文件目录运行
SEDNA_ACTION=create bash - offline-install.sh

检查sedna安装状态:

kubectl get pod -n sedna


如果都为running,则安装成功,如此,就可以愉快的玩增量学习、联邦学习案例了。

六、参考资料

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。