Linux部署kubeedge 1.4

news2024/11/19 6:32:44

文章目录

  • 一、机器信息
  • 二、环境准备(所有节点操作)
    • `2.1. 修改主机名`
    • `2.2. 开启路由转发`
    • `2.3.安装Docker(所有节点)`
    • `2.4.部署K8S集群(单机版,云端节点)`
  • `2.5.安装Mosquitto(只在边缘节点安装)`
  • 三、安装kubeedge 1.4
    • `3.1.配置Golang 环境(版本1.14.7)`
    • `3.2. 源码编译`
      • 编译云端
      • 编译边缘端
    • `3.3.创建设备模型和设备CRD`
    • `3.4.配置云端节点`
      • 3.4.1 通过systemd管理(推荐)
      • 3.4.2直接启动(便于调试)
    • `3.5.配置边缘端节点`
      • 3.5.1.云端节点操作
      • 3.5.2.边缘节点操作
      • 生成边缘节点的edgecore.yaml文件(cloud端操作)
      • 3.5.4.在边缘节点创建目录,传递edgecore.yaml文件
      • 修改edgecore.yaml文件(所有边缘节点)
      • 3.5.6.启动edgecore
        • 通过systemd管理(推荐)
        • 直接启动(便于调试)
    • `3.6.验证`
      • 3.6.1.在云端节点操作
      • 3.6.2.部署官方的 deployment


官方文档:https://docs.kubeedge.io/en/latest/
参考视频:https://www.bilibili.com/video/BV1LJ411D7t1?p=3
参考文章:https://blog.csdn.net/subfate/article/details/106463852

一、机器信息

我这共两台机器,192.168.1.10部署Master和cloudcore,192.168.1.11部署edgecore

二、环境准备(所有节点操作)

2.1. 修改主机名

根据IP地址修改,如hostnamectl set-hostname 192-168-1-10

2.2. 开启路由转发

sed -i 's/net.ipv4.ip_forward=.*/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sysctl -p

2.3.安装Docker(所有节点)

2.4.部署K8S集群(单机版,云端节点)

kubeadm部署K8s集群V1.19.0

注意:只需要部署Master相关组件

2.5.安装Mosquitto(只在边缘节点安装)

mosquitto镜像制作参考文章:https://anqixiang.blog.csdn.net/article/details/110451206

docker run -itd --restart always --name mosquitto -p 1883:1883 mosquitto:v1.0

三、安装kubeedge 1.4

3.1.配置Golang 环境(版本1.14.7)

tar xvf go1.14.7.linux-amd64.tar.gz -C /usr/local/bin/

vi /etc/profile #添加如下几行

#GO
export GO_HOME=/usr/local/bin/go
export PATH=$GO_HOME/bin:$PATH

source /etc/profile
go version

3.2. 源码编译

git config --global http.sslVerify false        #跳过SSL验证
cd /opt
git clone https://github.com/kubeedge/kubeedge.git
yum install gcc make -y

编译云端

cd /opt/kubeedge
make all WHAT=cloudcore

编译边缘端

make all WHAT=edgecore

生成的二进制位于_output/local/bin/目录下,把生成的二进制文件拷贝到/usr/local/bin/下

3.3.创建设备模型和设备CRD

cd /opt/kubeedge/build/crds/devices
kubectl create -f devices_v1alpha2_devicemodel.yaml
kubectl create -f devices_v1alpha2_device.yaml
cd /opt/kubeedge/build/crds/reliablesyncs
kubectl create -f cluster_objectsync_v1alpha1.yaml
kubectl create -f objectsync_v1alpha1.yaml

3.4.配置云端节点

mkdir -p /etc/kubeedge/config/
cloudcore --minconfig > /etc/kubeedge/config/cloudcore.yaml

cloudcore.yaml文件内容
在这里插入图片描述

3.4.1 通过systemd管理(推荐)

cp /data/kubeedge/build/tools/cloudcore.service /etc/systemd/system/cloudcore.service
vi /etc/systemd/system/cloudcore.service

修改启动命令为/usr/local/bin/cloudcore
在这里插入图片描述

systemctl daemon-reload
systemctl enable cloudcore
systemctl start cloudcore
journalctl -u cloudcore -f        #查看日志

3.4.2直接启动(便于调试)

nohup ./cloudcore > cloudcore.log 2>&1 & #启动cloudcore

3.5.配置边缘端节点

3.5.1.云端节点操作

scp /usr/local/bin/edgecore 192.168.1.11:/usr/local/bin/
scp /data/images/pause.tar 192.168.1.11:/data/

3.5.2.边缘节点操作

docker load -i /data/pause.tar
docker tag swr.cn-south-1.myhuaweicloud.com/anqixiang_k8s/pause:3.1 kubeedge/pause:3.1
mkdir -p /etc/kubeedge/{ca,certs,config}

生成边缘节点的edgecore.yaml文件(cloud端操作)

edgecore --minconfig > /etc/kubeedge/config/edgecore.yaml
sed -i 's|podSandboxImage: .*|podSandboxImage: kubeedge/pause:3.1|' /etc/kubeedge/config/edgecore.yaml
#修改token
token=$(kubectl get secret -nkubeedge tokensecret -o=jsonpath='{.data.tokendata}' | base64 -d)
sed -i  "s|token: .*|token: ${token}|g" /etc/kubeedge/config/edgecore.yaml

3.5.4.在边缘节点创建目录,传递edgecore.yaml文件

ssh 192.168.1.11 -t -t "mkdir -p /etc/kubeedge/{ca,certs,config}"
scp /etc/kubeedge/config/edgecore.yaml 192.168.1.11:/etc/kubeedge/config/

修改edgecore.yaml文件(所有边缘节点)

vi /etc/kubeedge/config/edgecore.yaml

hostnameOverride为当前节点的主机名
nodeIP为当前节点的物理IP地址

在这里插入图片描述
在这里插入图片描述

3.5.6.启动edgecore

通过systemd管理(推荐)

在云端节点操作

vi /data/kubeedge/build/tools/edgecore.service
for ip in ${NODEIP}; do scp /data/kubeedge/build/tools/edgecore.service $ip:/etc/systemd/system/; done
for ip in ${NODEIP}; do ssh $ip -t -t "systemctl daemon-reload && systemctl enable edgecore && systemctl start edgecore"; done
直接启动(便于调试)
nohup edgecore > /var/log/edgecore.log 2>&1 &		#启动edgecore

3.6.验证

3.6.1.在云端节点操作

kubectl get node

3.6.2.部署官方的 deployment

kubectl apply -f /opt/kubeedge/build/deployment.yaml
kubectl get pod

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

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

相关文章

数据库基础篇二

函数 约束 概述 概念:约束是作用于表字段上的规则,用于限制存储在表中的数据。目的:保证数据库中数据的正确、有效性和完整性。分类: 外键约束 外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性…

2023全国大学生软件测试大赛开发者测试练习题满分答案(PairingHeap2023)

2023全国大学生软件测试大赛开发者测试练习题满分答案(PairingHeap2023) 题目详情题解代码(直接全部复制到test类中即可) 提示:该题只需要分支覆盖得分即可,不需要变异得分 题目详情 题解代码(…

Kubernetes使用OkHttp客户端进行网络负载均衡

在一次内部Java服务审计中,我们发现一些请求没有在Kubernetes(K8s)网络上正确地实现负载均衡。导致我们深入研究的问题是HTTP 5xx错误率的急剧上升,由于CPU使用率非常高,垃圾收集事件的数量很多以及超时,但…

linux开发环境下出现Segmentation fault问题排查一

一、检测代码中是否有数组越界情况 更改以上数组为128*60后,正常。确认是数组溢出导致越界。 二、分析:一般情况下打印的字符刚好在50以内,但是在其它状态下测试,数据字符数据增加从而导致溢出 打印命令如下: sprin…

2.线性表——数据结构学习

零个或多个数据元素的有限序列。 有序 (每个元素有且只有一个前驱与后继) -> 一对一的关系 前驱 (第一个元素无前驱)后继(最后一个元素无后继) 有限 线性表元素个数:n (n ≥ \geq ≥ 0)&a…

D1s芯片启动流程(BROM System)分析

1、D1S芯片介绍 2、BROM介绍 (1)BROM(boot rom):存放启动代码的ROM,该ROM一般在芯片内部集成,是芯片上电执行的最开始代码; (2)BROM里存放的程序主要功能&…

【Java 进阶篇】JavaScript 介绍及其发展史

JavaScript是一门广泛应用于Web开发的编程语言。它是一种高级的、解释性的脚本语言,主要用于改善用户与Web页面的互动体验。本篇博客将为你详细介绍JavaScript的基础知识、历史背景和它在Web开发中的重要作用。我们还将讨论JavaScript的发展史,从它的起源…

9. 一个SpringBoot项目运行

新手如何运行一个SpringBoot项目 1.SpringBoot项目运行 新创建的SpringBoot项目如何运行 2.启动lombok注解 点击该按钮,启动lombok注解支持 3.展示说明

进阶JAVA篇-Object类与Objects类、包装类的常用API(一)

目录 API 1.0 API概念 2.0 Object类的常用API 2.1 Object 中的 tostring() 方法 表示返回对象的字符串表达形式 2.2 Object 中的 equals(Object o) 方法 ,判断两个对象的是否相等 2.2.1深入了解如何重写Object 中的 equals(Object o) 方法 2.2.2 对重写Object 中的…

html css实战之学成在线项目

html css实战之学成在线项目 项目链接:https://download.csdn.net/download/weixin_39451323/88416213 效果图:

4年测试经验,面试却突破不了20K,真是太卷了····

先说一个插曲:上个月我有同学在深圳被裁员了,和我一样都是软件测试,不过他是平安外包,所以整个组都撤了,他工资和我差不多都是14K。 现在IT互联网已经比较寒冬,特别是软件测试,裁员先裁测试&am…

【技术追踪】SAM(Segment Anything Model)代码解析与结构绘制之Prompt Encoder

论文:Segment Anything   代码:https://github.com/facebookresearch/segment-anything 上一篇:【技术追踪】SAM(Segment Anything Model)代码解析与结构绘制之Image Encoder 本篇示例依然采用上一篇的狗狗图像运行代…

深度学习笔记之优化算法(八)Adam算法的简单认识

深度学习笔记之优化算法——Adam算法的简单认识 引言回顾:基于Nesterov动量的RMSProp算法Adam算法的简单认识一阶矩、二阶矩修正偏差的功能Adam的算法过程描述Adam示例代码 引言 上一节介绍了基于 Nesterov \text{Nesterov} Nesterov动量与 RMSProp \text{RMSProp}…

文字与视频结合效果

效果展示 CSS 知识点 mix-blend-mode 属性的运用 实现整体页面布局 <section class"sec"><video autoplay muted loop><source src"./video.mp4" type"video/mp4" /></video><h2>Run</h2><!-- 用于切…

【Java 进阶篇】JavaScript 与 HTML 的结合方式

JavaScript是一种广泛应用于Web开发中的脚本语言&#xff0c;它与HTML&#xff08;Hypertext Markup Language&#xff09;结合使用&#xff0c;使开发人员能够创建交互式和动态的网页。在这篇博客中&#xff0c;我们将深入探讨JavaScript与HTML的结合方式&#xff0c;包括如何…

Web知识:markupsafe.escape() 函数的作用

1、markupsafe.escape() 函数是 MarkupSafe 库中的一个函数&#xff0c;它的作用是对字符串进行 HTML 转义&#xff0c;以防止在 HTML 文档中引起意外的解析结果或安全漏洞。 2、在 Web 开发中&#xff0c;如果用户提供的数据直接插入到 HTML 页面中&#xff0c;而没有经过转义…

SpringBoot调用存储过程(入参,返参)(亲测有效!!!)

存储过程和函数是有区别的&#xff01;&#xff01;&#xff01; 创建函数&#xff0c;只是演示&#xff0c;以下函数不完整&#xff01;&#xff01;&#xff01;(只是看P_xxx参数) CREATE OR REPLACE PROCEDURE SP_TICKET_CHECKE_ONLINE_TEST (p_transcode IN OUT VA…

Java反射获取抽象类方法属性问题讲解

Java反射获取抽象类方法属性问题讲解 结论一、案例准备二、测试方法&#xff1a;使用反射获取抽象类私有方法和私有属性具体操作&#xff08;获取私有方法&#xff09;具体操作&#xff08;获取私有属性&#xff09; 结论 Java 通过反射可以获得抽象类的任何修饰符&#xff08…

Vue2 Watch的语法

Watch语法 一、监听普通数据类型&#xff08;1&#xff09;把要监听的msg值看作方法名&#xff0c;来进行监听。&#xff08;2&#xff09;把要监听的msg值看作对象&#xff0c;利用hanler方法来进行监听 二、监听对象&#xff1a;&#xff08;1&#xff09;监听对象需要用到深…

LeetCode【300】最长递增子序列

题目&#xff1a; 思路&#xff1a; 通常来说&#xff0c;子序列不要求连续&#xff0c;而子数组或子字符串必须连续&#xff1b;对于子序列问题&#xff0c;第一种动态规划方法是&#xff0c;定义 dp 数组&#xff0c;其中 dp[i] 表示以 i 结尾的子序列的性质。在处理好每个…