• kubeedge v1.17.0部署教程



    前言

    本文主要介绍kubeedge v1.17.0的安装过程

    主要环境如下表

    应用版本
    centos7.0
    k8s1.28.2
    kubeedge1.17.0
    docker24.0.8
    centos7.0

    一、安装k8s平台

    本文主要参考
    centos7 部署k8s 1.28.2
    K8s集群搭建教程

    根据上面的过程部署好k8s平台
    注意 k8s版本不一样 部署的要求不一样
    如:k8s 1.24以后版本需要装cri-docker等工具
    docker安装需要配置阿里云容器镜像加速服务

    二、部署kubeedge

    1.部署MetalLB(可选)

    是支持LoadBalancer的负载均衡器,能够帮助我们映射一个ip地址,直接访问pod的服务

    1. 修改kube-proxy
      将对应的位置修改为如图所示的
    kubectl edit configmap -n kube-system kube-proxy
    

    在这里插入图片描述

    1. k8s部署MetalLB
      这里部署的版本为0.13.5
    kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.5/config/manifests/metallb-native.yaml
    
    1. 配置MetalLB
      新建两个文件
    # advertise.yaml
    apiVersion: metallb.io/v1beta1
    kind: L2Advertisement
    metadata:
      name: l2adver
      namespace: metallb-system
    spec:
      ipAddressPools: # 如果不配置则会通告所有的IP池地址
        - ip-pool
    
    # ip-pool.yaml
    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      name: ip-pool
      namespace: metallb-system
    spec:
      addresses:
        - 192.168.184.120-192.168.184.140 # 根据虚拟机的ip地址来配置 这些ip地址可以分配给k8s中的服务
    
    kubectl apply -f advertise.yaml
    kubectl apply -f ip-pool.yaml
    

    2.cloud

    1. 下载keadm
      进入github搜索kubeedge,下载对应版本
      1.17.0下载地址
      根据需要部署的平台下载对应的版本
      在这里插入图片描述
    2. 解压keadm 并 移动到 /usr/local/bin下 (移动到这个目录下可以再任何目录下执行keadm命令)
    tar -zxvf keadm-v1.17.0-linux-amd64.tar.gz
    mv  keadm-v1.17.0-linux-amd64/keadm/keadm /usr/local/bin 
    
    1. 初始化cloudcore
    # 192.168.184.120 ip-pool中没有被分配的ip地址
    keadm init --advertise-address=192.168.184.120 --set iptablesHanager.mode="external"
    

    执行成功结果
    在这里插入图片描述

    1. 修改cloudcore的svc
      修改服务的暴露方式,让外部可以连接
      也可以使用NodePort,但是在初始化edgecore时就需要修改对应的ip映射了,上面初始化advertise-address也需要修改
    kubectl edit svc cloudcore -n kubeedge 
    

    在这里插入图片描述
    在这里插入图片描述
    5. 打标签

    因为边缘计算的硬件条件都不好,这里我们需要打上标签,让一些应用不扩展到edge节点上去

    这里有三个应用需要打 kube-system kube-flannel metallb-system
    将下面命令中的两个位置替换即可

    kubectl get daemonset -n kube-system |grep -v NAME |awk '{print $1}' | xargs -n 1 kubectl patch daemonset -n kube-system --type='json' -p='[{"op": "replace","path": "/spec/template/spec/affinity","value":{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"node-role.kubernetes.io/edge","operator":"DoesNotExist"}]}]}}}}]'
    

    3.edge

    1. cloud获取token
    keadm gettoken
    
    1. edge端加入
      设置token和server方便输入命令
      在这里插入图片描述
    echo $SERVER   # 可以查看对应的
    #加入到cloudcore中
    keadm join --remote-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cloudcore-ipport=$SERVER --token=$TOKEN --kubeedge-version=1.17.0 --with-mqtt
    

    成功截图如下
    在这里插入图片描述
    在这里插入图片描述
    注意
    在这里插入图片描述

    1. docker和cri-docker的安装

    2. cni网络插件一定要记得安装
      在这里插入图片描述
      下载该文件,上传

    source install.sh  # 将脚本文件放入环境
    install_cni_plugins # 执行安装cni命令
    

    如果下载速度慢,可以在有条件的情况下载好
    注释掉 wget
    在这里插入图片描述
    再上传 后执行该方法即可

    建议: 这个子网范围 我觉得应该改成k8s再 init 设置的子网范围
    在这里插入图片描述

    4. 部署nginx到edge端

    nginx部署的yaml文件
    vi nginx-deployment.yaml

    #nginx-deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
     name: nginx-metallb
    spec:
     replicas: 1 
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         nodeName: k8s-edge  # 边缘端的名字 kubectl get node里面的
         hostNetwork: true   # 使用主机网络  不使用主机网络,在其它主机无法进行访问   是因为两个cni网络不是同一个吗?
         containers:
           - name: nginx
             image: nginx:latest
             ports:
               - containerPort: 80
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
     name: nginx-service
    spec:
     selector:
       app: nginx
     ports:
       - name: http 
         port: 80
         targetPort: 80
     type: LoadBalancer
    

    在这里插入图片描述


    总结

    kubeedge 不同版本的部署方法会有不同的地方,k8s也是有需要注意的地方
    看官方文档一定要仔细,我edge端没有安装cni网络插件,导致一直无法成功连接
    nginx部署的时候要使用主机网络,其它主机才可以连接,两个cni网络是不同的吗,k8s集群一个,这个edge端又一个?
    之前看得文档和视频对应的版本都比较老了,edge端不需要安装cni插件也可直接连接成功

    参考

    centos7 部署k8s 1.28.2
    K8s集群搭建教程
    kubeedge部署 写的挺详细的
    kubeedge v1.17官方文档 官方文档一定要看仔细!!!
    b站 kubeedge部署教程

  • 相关阅读:
    聊一聊DTM子事务屏障功能之SQL Server版
    Go 接口-契约介绍
    JSP快速入门
    List 去重的几种方法
    景联文科技:2023人工智能数据标注行业现状分析?
    jenkies构建springboot
    Mac 使用 scp 上传或下载文件/文件夹
    学生HTML个人网页作业作品 使用HTML+CSS+JavaScript个人介绍博客网站 web前端课程设计 web前端课程设计代码 web课程设计
    Python爬虫之Js逆向案例(13)-某乎最新x-zse-96的rpc方案后续
    JavaEE--线程基础(中)
  • 原文地址:https://blog.csdn.net/xc979906570/article/details/139481230