【kubeEdge】离线部署

news2024/12/22 12:03:05

部署 kubeEdge

在线部署

在线方式部署直接执行以下命令,会联网下载需要的安装文件执行安装

$ keadm init --advertise-address={ip} --kubeedge-version={version} --kube-config={config_path},

离线部署

离线准备工作

所有下载操作均在可以联网的机子上进行,然后复制到需要安装的部署机

从 kubeEdge 的官方 git 仓库的 https://github.com/kubeedge/kubeedge/releases 中获取合适的版本的 keadm 和 kubeedge 包,以及校验包

在云端和边端主机上,都执行下面的步骤:

  • 将 keadm 压缩包中的可执行文件 keadm 复制到 ​​/usr/local/bin​​ 下 tar -xvf
  • 将 kubeedge 压缩包(cloudcore和edgecore的二进制文件)放置到 ​​/etc/kubeedge​​ 目录下
  • 将 checksum 放置到 ​​/etc/kubeedge​​ 目录下
  • 选择合适的版本,从 https://github.com/kubeedge/kubeedge 下载源码
云端 cloudcore
  1. 复制所需物料到云端主机
  1.   将源码中 ​​/build/crds​​​ 中的所有内容拷贝到云端部署机的 ​​/etc/kubeedge/crds​​ 目录
  2.   将源码中 ​​/build/tools/cloudcore.service​​​ 文件放置到云端部署机的 ​​/etc/kubeedge​​ 目录
  1. 使用下面的命令初始化 cloudcore
keadm init --advertise-address={ip} --kubeedge-versinotallow={version} --kube-cnotallow={config_path}
  1. ip 换成 cloudcore 所在的主机 ip
  2. version 换成自己的安装的版本,因为 keadm 默认版本不一定和我们需要的一样。
  3. config 路径指向 kubernetes 的配置路径,默认是​​/root/.kube/config​​,也可设置为 /etc/kubernetes/admin.conf
  4.   如果出现下面的内容,初始化成功
Kubernetes version verification passed, KubeEdge installation will start... 
KubeEdge cloudcore is running, For logs visit: /var/log/kubeedge/cloudcore.log 
CloudCore started
  1. 修改 flannel-ds 和 kube-proxy 的配置
  1.   通过kubectl edit ds -n kube-system kube-flannel-ds修改flannel配置:
  2.   通过kubectl edit ds -n kube-system kube-proxy修改kube-proxy配置:
  1. 云端配置文件 cloudcore.yaml
  1.   /etc/kubeedge/config/cloudcore.yaml
边端 edgecore
  1. 安装 MQTT 服务
  1.   在边缘节点还需要安装 MQTT 服务,需要以下的 deb 包和依赖:
  2.   下载 mosquitto 服务端和客户端以及依赖包
$ apt install mosquitto     
$ apt install mosquitto-clients
# 连配置卸载:apt autopurge  mosquitto
  1.   安装 apt 增强工具,并下载依赖包
# 创建目录
$ mkdir mosquitto
# apt 增强工具
$ apt install aptitude 
# 清理缓存空间
$ aptitude clean
# 只下载依赖且不安装
$ aptitude --download-only install mosquitto
# 将依赖deb从缓存拷贝置创建当前目录
$ mv /var/cache/apt/archives/*.deb ./
  1.   执行安装
$ dpkg -i ./mosquitto/*.deb
  1. 配置 MQTT 服务
  1.   添加配置文件
  2.   在​​/etc/mosquitto/conf.d​​​目录下,添加配置文件​​myconfig.conf​​ 配置文件:
sudo vi /etc/mosquitto/conf.d/myconfig.conf
  1.   粘入下面这些配置
#添加 broker 监听端口(很重要,否则只能本机访问)
listener 1883
#-------------------------------------------
# 如果关闭匿名访问,客户端必须使用用户名密码
allow_anonymous true

#指定 用户名-密码 文件
password_file /etc/mosquitto/pwfile.txt
#--------------------------------------------
  1. 添加账户密码
sudo mosquitto_passwd -c /etc/mosquitto/pwfile.txt <<用户名>>
  1. 启动mosquitto查看运行状态
sudo service mosquitto start
sudo service mosquitto status
  1. 在云端运行 keadm gettoken 将返回 token 令牌,该令牌将在加入边缘节点时使用。
  2. 复制所需物料到边端主机
  1.   将源码中 ​​./build/tools/edgecore.service​​​ 文件复制到边端主机的 ​​/etc/kubeedge​​ 目录
  2.   通过下面的命令让边端纳入云端管理
$ keadm join --cloudcore-ipport={ip}:{port} --kubeedge-version={version} --token={token}
  1.   可以通过 journalctl -u edgecore.service -f 查看 edgecore 的日志,或在云端 kubectl get nodes 查看是否能看到我们刚加入的 edge 节点(systemcl status)
  1. 检查服务状态
service edgecore status
  1. 导入pause镜像
  1.   在能联网的机子上拉取 kubeedge/pause:3.1 镜像,使用 docker save -o kubeedge_pause_3.1.tar kubeedge/pause:3.1 命令打包,在边缘节点上,使用 docker load -i kubeedge_pause_3.1.tar 命令导入镜像
  1. 配置边端配置文件 edgecore.yaml
  1.   /etc/kubeedge/config/edgecore.yaml

edge Pod 实验

如果想要将应用调度到edge端,需要给edge端打上标签后,在应用的yaml文件中进行指定。

kubectl label nodes edge name=edge

根据k8s的这个规则,可以将节点通过 label 的方式进行分组,比如将某几个节点都打上标签为 name=edge,当调度应用到 edge 节点时,会找到 label 为 edge 的所有节点,根据设置的副本数,将应用启动起来,如果设置的副本数超过了设置 edge 标签的节点数,则多出的将会显示 pending 状态,从而无法启动。

编辑应用的 yaml 文件,添加 nodeSelector,下面给出一个例子 nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector: ##添加的配置
        name: "edge" ##打的标签是什么,这里就写什么
      containers:
      - name: nginx
        image: nginx:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          hostPort: 80

通过 kubectl get pod -o wide 查看,可看到该pod成功被部署到edge01节点上。

在边缘节点上查看容器 docker ps

启用 kubectl logs 功能

如果不开启此功能,在云端无法通过 kubectl logs 查看边端 pods 的日志

开启云端的 cloudStream 和边端的 edgeStream(websocketde 的另外一个通道10003),通过该通道传递数据

云端支持 Metrics-server

需要复用 kubectl logs 中的 cloudStream 和 edgeStream 的通道

重置部署

清除 keadm init 或 keadm join 造成的影响均可使用 keadm reset,这个操作会删除 /etc/kubeedge 下的文件,如有需要请提前备份。重置操作不会清理 /etc/mosquitto

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1602538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年在Vim中开发vue2+java

neovim 0.5刚出来的时代&#xff0c;那时刚有lua插件我很狂热。每天沉迷于打造自己的IDE之中。写过一堆相关的博客&#xff0c;也录过一些视频教程。后来发现neovim的接口和插件更新的很快&#xff0c;导致配置文件要不定期的修改&#xff0c;才能保证新版本的插件的适配。我也…

近端安全互联样例使用指导

样例介绍 本样例基于rk3568开发板&#xff0c;通过封装openharmony安全子系统deviceauth组件提供的能力&#xff0c;实现了一组可用于设备间快速建立可信认证和连接的接口&#xff0c;通过预先定义关系网&#xff0c;在设备初始化阶段完成端端设备间的认证&#xff0c;构建安全…

探索设计模式的魅力:融合AI大模型与函数式编程、开启智能编程新纪元

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索AI大模型与函数式编程模式融合之旅✨ 在编程世界的广阔疆域里&#xff0c;两大…

mamba->jamba

1 mamba解决什么问题 Transformer的问题&#xff0c;其计算复杂度与序列长度的平方成正比&#xff0c;导致在处理长序列时效率低下。 Transformer 的注意力创建一个矩阵&#xff0c;将每个 token 与之前的每个 token 进行比较。矩阵中的权重由 token 对之间的相关性决定。 长度…

B树(B-tree)

B树(B-tree) B树(B-tree)是一种自平衡的多路查找树&#xff0c;主要用于磁盘或其他直接存取的辅助存储设备 B树能够保持数据有序&#xff0c;并允许在对数时间内完成查找、插入及删除等操作 这种数据结构常被应用在数据库和文件系统的实现上 B树的特点包括&#xff1a; B树为…

EelasticSearch是什么?及EelasticSearch的安装

一、概述 Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。它专为云计算环境设计&#xff0c;提供了一个分布式的、高可用的实时分析和搜索平台。Elasticsearch 可以处理大量数据&#xff0c;并且具备横向扩展能力&#xff0c;能够通过增加更多的…

如何获取手机root权限?

获取手机的 root 权限通常是指在 Android 设备上获取超级用户权限&#xff0c;这样用户就可以访问和修改系统文件、安装定制的 ROM、管理应用权限等。然而&#xff0c;需要注意的是&#xff0c;获取 root 权限可能会导致手机失去保修、安全性降低以及使系统变得不稳定。在获取 …

大话设计模式之单例模式

单例模式是一种创建型设计模式&#xff0c;它确保类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。 单例模式通常在以下情况下使用&#xff1a; 当一个类只能有一个实例&#xff0c;并且客户端需要访问该实例时。当该唯一实例需要被公开访问&#xff0c;以便在…

基于8B/10BGT收发器的PHY层设计(1)

一、PHY层简介 PHY层&#xff08;Physical Layer&#xff09;是OSI模型中最低的一层&#xff0c;也是最基本的一层&#xff0c;PHY是物理接口收发器&#xff0c;它实现物理层。包括MII/GMII&#xff08;介质独立接口&#xff09;子层、PCS&#xff08;物理编码子层&#xff09…

c++的学习之路:24、 二叉搜索树概念

摘要 本章主要是讲一下二叉搜索树的实现 目录 摘要 一、二叉搜索树概念 二、 二叉搜索树操作 1、二叉搜索树的查找 2、二叉搜索树的插入 3、二叉搜索树的删除 三、二叉搜索树的实现 1、插入 2、中序遍历 3、删除 4、查找 四、二叉搜索树的递归实现 1、插入 2、删…

Java的maven项目导入本地jar包的三种方式

一、使用本地jar包 在项目中创建一个lib文件夹&#xff0c;将想要使用的本地jar包放进去 然后直接在pom.xml中添加下列依赖&#xff08;项目协作推荐&#xff09; <dependency><groupId>com.fpl</groupId><artifactId>spring</artifactId><…

牛客NC197 跳跃游戏(一)【中等 动态规划 Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/23407eccb76447038d7c0f568370c1bd 思路 答案说的merge区间就是每个A[i]的地方能跳到的最远坐标是A[i] [i]&#xff0c; 有一个maxReach&#xff0c;遍历一遍A[i], 不断刷新MaxReach, 如果某个i 位置比maxReac…

你觉得职场能力重要还是情商重要?

职场能力和情商都是职业成功的关键因素&#xff0c;它们在不同的情境和角色中扮演着不同的作用。很难简单地说哪一个更重要&#xff0c;因为它们通常是相辅相成的。 职场能力包括专业技能、知识水平、解决问题的能力、工作效率、创新思维等。这些能力是完成工作任务、达成职业目…

通讯录的实现(顺序表)

前言&#xff1a;上篇文章我们讲解的顺序表以及顺序表的具体实现过程&#xff0c;那么我们的顺序表在实际应用中又有什么作用呢&#xff1f;今天我们就基于顺序表来实现一下通讯录。 目录 一.准备工作 二.通讯录的实现 1.通讯录的初始化 2.插入联系人 3.删除联系人 4.…

一篇文章详细介绍Stable Diffusion模型原理及实现过程(附常用模型网站、下载方式)

目录 前言 何为Stable Diffusion模型&#xff1f; Stable Diffusion工作原理&#xff1a; Stable Diffusion模型的应用场景 Stable Diffusion免费使用网站 stability.ai: 本地部署 Stable Diffusion方法&#xff1a; StableDiffusion中文网 博主介绍&#xff1a;✌专注于前后端…

任务管理与守护进程

1.前台进程与后台进程 1.1守护进程 在上一章中&#xff0c;我们实现了一个Tcp服务器&#xff0c;但是这个服务器还存在一些问题&#xff0c;例如&#xff0c;我们将云服务器&#xff08;xshell&#xff09;关闭之后&#xff0c;服务器就无法使用了。 但是真正的服务器肯定不…

Stable Diffusion WebUI 控制网络 ControlNet 插件实现精准控图-详细教程

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 本文主要介绍 Stable Diffusion WebUI 一个比较重要的插件 ControlNet&#xff08;控制网络&#xff09;&#xff0c;主…

第46篇:随机存取存储器(RAM)模块<五>

Q&#xff1a;本期我们使用Quartus软件的IP Catalog工具创建双端口RAM。 A&#xff1a;前期创建的RAM存储模块只有一个端口&#xff0c;同时为读/写操作提供地址。我们将再创建一个具有两个地址输入端口的RAM模块&#xff0c;分别为读操作和写操作提供地址。选择Basic Functio…

Ubuntu:VSCode中编译运行C++代码

版本&#xff1a;Ubuntu22.04.1 LTS 目录 1 安装VSCode并汉化 2 检查Ubuntu是否已经安装了 GCC 3 在VScode中安装C/C扩展 4 在VSCode中进行C/C配置 1 安装VSCode并汉化 安装VSCode&#xff08;参考之前博客Ubuntu&#xff1a;安装VSCode_ubuntu vscode-CSDN博客&#xff…

两数相加(链表)

2. 两数相加 - 力扣&#xff08;LeetCode&#xff09; 题解 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。…