云原生边缘计算KubeEdge安装配置(二)

1. K8S集群部署,可以参考如下博客

请安装k8s集群,centos安装k8s集群
请安装k8s集群,ubuntu安装k8s集群

请安装kubeedge cloudcore centos安装K8S

2.安装kubEedge

2.1 编辑kube-proxy使用ipvs代理

kubectl edit configmaps kube-proxy -n kube-system #修改kube-proxy
#大约在40多行37     ipvs:38       excludeCIDRs: null39       minSyncPeriod: 0s40       scheduler: ""41       strictARP: true  #这里由原来的false修改为true42       syncPeriod: 0s43       tcpFinTimeout: 0s44       tcpTimeout: 0s45       udpTimeout: 0s46     kind: KubeProxyConfiguration47     metricsBindAddress: ""48     mode: "ipvs"  #这里原来是空的修改为ipvs49     nodePortAddresses: null50     oomScoreAdj: null51     portRange: ""52     showHiddenMetricsForVersion: ""53     winkernel:54       enableDSR: false55       forwardHealthCheckVip: false56       networkName: ""57       rootHnsEndpointName: ""58       sourceVip: ""
kubectl rollout restart daemonset kube-proxy -n kube-system
kubectl get pods -n kube-system

2.2 基础服务提供,负载均衡器metallb

#无网络情况下,先上传kubeedge.tar 和 metallb-native.yaml文件
docker load -i kubeedge.tar  #导入镜像#有网络可以直接拉去镜像
docker pull quay.io/metallb/controller:v0.13.5
docker pull quay.io/metallb/speaker:v0.13.5
wget https://raw.githubusercontent.com/metallb/metallb/v0.13.5/config/manifests/metallb-native.yaml
kubectl apply -f metallb-native.yaml
kubectl get pods -n metallb-system
[root@k8s-master01 ~]# kubectl get pods -n metallb-system
NAME                         READY   STATUS    RESTARTS   AGE
controller-8d9cf599f-m4x27   1/1     Running   0          23s
speaker-zm7w4                1/1     Running   0          23s
speaker-zww5l                1/1     Running   0          23s
[root@k8s-master01 ~]# 

#具体参考官网地址:https://metallb.universe.tf/configuration/#layer-2-configuration

#创建IP地址资源池,原则是跟主机在同一个网段,没有使用的地址,根据自己项目的规模我合理预留了21个IP
cat > first-ippool.yaml << EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:name: first-poolnamespace: metallb-system
spec:addresses:- 192.168.186.200-192.168.186.220
EOF
kubectl apply -f first-ippool.yaml
kubectl get ipaddresspools -n metallb-system
[root@k8s-master01 ~]# kubectl get ipaddresspools -n metallb-system
NAME         AGE
first-pool   2m1s
[root@k8s-master01 ~]# 
#开启二层转发,实现k8s集群节点外访问
cat > l2forward.yaml << EOF
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:name: examplenamespace: metallb-system
EOFkubectl apply -f l2forward.yaml
#二层转发案例测试
cat > nginx.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: nginxname: nginximagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:type: LoadBalancerports:- port: 80targetPort: 80selector:app: nginx
EOFkubectl apply -f nginx.yaml
[root@k8s-master01 ~]# kubectl get pods,svc #svc的ip从地址池中分配的
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-5f5c64f949-bhpvf   1/1     Running   0          50sNAME                 TYPE           CLUSTER-IP     EXTERNAL-IP       PORT(S)        AGE
service/kubernetes   ClusterIP      10.96.0.1      <none>            443/TCP        5h43m
service/nginx-svc    LoadBalancer   10.99.41.146   192.168.186.200   80:30293/TCP   50s
[root@k8s-master01 ~]# 

测试通过

kubectl delete -f nginx.yaml  #删除无用的pod和svc

3. 对于kubeEdge概述

KubeEdge由云和边缘组成。它建立在Kubernetes之上,为联网应用部署和云与边缘之间的元数据同步提供核心基础设施支持。所以如果我们想要设置KubeEdge,我们需要设置Kubernetes集群(可以使用现有的集群),云端和边缘端在cloud side, 我们需要安装

Docker
Kubernetes cluster
cloudcore

在 edge side, 我们需要安装

Docker
MQTT (配置可以选用,不是一定需要)
edgecore

在这里插入图片描述

3.部署kubeedge cloudcore

3.1 获取keadm工具

wget https://github.com/kubeedge/kubeedge/releases/download/v1.10.1/keadm-v1.12.1-linux-amd64.tar.gztar -zxvf keadm-v1.12.1-linux-amd64.tar.gz
cp keadm-v1.12.1-linux-amd64/keadm/keadm  /usr/local/bin/
keadm version

3.2 部署cloudcore

#在master上部署
#设置云端  使用keadm初始化,安装cloudcore
docker pull kubeedge/cloudcore:v1.14.2  
docker pull  kubeedge/iptables-manager:v1.14.2keadm init --advertise-address=192.168.110.100 --kubeedge-version=1.12.1   #这是master的ip,互联网用这种形式keadm init --advertise-address=192.168.186.200 --set iptablesManager.mode="external" --profile version=v1.12.1 #这里的IP是负载均衡器metallb分配的IP#以上参数分别为master节点地址和要安装的KubeEdge版本。#keadm reset  #安装错误可以重置
keadm gettoken  #获取token
[root@k8s-master01 ~]# keadm init --advertise-address=192.168.186.200 --set iptablesManager.mode="external" --profile version=v1.14.2
Kubernetes version verification passed, KubeEdge installation will start...
CLOUDCORE started
=========CHART DETAILS=======
NAME: cloudcore
LAST DEPLOYED: Mon Oct  9 15:25:36 2023
NAMESPACE: kubeedge
STATUS: deployed
REVISION: 1
[root@k8s-master ~]# keadm gettoken
3b917d79963d290608f00b2c567808bbf37f99379efdb4a2848ddd2d2713cb52.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTY5NDc2NTl9.1DQ6GwR687bpyR_8q-Xf2HwFfLeUdZ2oqYrYkEyNEEo[root@k8s-master ~]# 
[root@k8s-master01 ~]# kubectl get ns
NAME                   STATUS   AGE
default                Active   58d
kube-node-lease        Active   58d
kube-public            Active   58d
kube-system            Active   58d
kubeedge               Active   8m44s  #在这个空间中中
kubernetes-dashboard   Active   58d
metallb-system         Active   57d
[root@k8s-master ~]# kubectl get pods,svc -n kubeedge
NAME                               READY   STATUS    RESTARTS   AGE
pod/cloud-iptables-manager-8kh6q   1/1     Running   0          109m
pod/cloudcore-5876c76687-tkkzx     1/1     Running   0          109mNAME                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                             AGE
service/cloudcore   ClusterIP   10.101.140.171   <none>        10000/TCP,10001/TCP,10002/TCP,10003/TCP,10004/TCP   109m
[root@k8s-master ~]# 
kubectl edit svc cloudcore -n kubeedge #修改大概在51行 49   selector:50     k8s-app: kubeedge51     kubeedge: cloudcore52   sessionAffinity: None53   type: LoadBalancer  #修改后的54 status:55   loadBalancer: {}
[root@k8s-master ~]# kubectl get pods,svc -n kubeedge
NAME                               READY   STATUS    RESTARTS   AGE
pod/cloud-iptables-manager-8kh6q   1/1     Running   0          110m
pod/cloudcore-5876c76687-tkkzx     1/1     Running   0          110mNAME                TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)                                                                           AGE
service/cloudcore   LoadBalancer   10.101.140.171   192.168.186.200   10000:31953/TCP,10001:32329/TCP,10002:31154/TCP,10003:30807/TCP,10004:31038/TCP   110m
[root@k8s-master ~]# 
[root@k8s-master kubernetes]# kubectl get pods -n kube-system -o wide #metrics-server不正常
NAME                                       READY   STATUS    RESTARTS   AGE     IP                NODE         NOMINATED NODE   READINESS GATES
calico-kube-controllers-67bb5696f5-sfhs6   1/1     Running   0          4h3m    10.244.235.195    k8s-master   <none>           <none>
calico-node-2w8jn                          1/1     Running   0          4h3m    192.168.186.128   k8s-master   <none>           <none>
calico-node-vt8g4                          1/1     Running   0          4h3m    192.168.186.129   k8s-node1    <none>           <none>
coredns-7f6cbbb7b8-q8z29                   1/1     Running   0          4h5m    10.244.235.193    k8s-master   <none>           <none>
coredns-7f6cbbb7b8-qc8d2                   1/1     Running   0          4h5m    10.244.235.194    k8s-master   <none>           <none>
etcd-k8s-master                            1/1     Running   0          4h5m    192.168.186.128   k8s-master   <none>           <none>
kube-apiserver-k8s-master                  1/1     Running   0          4h5m    192.168.186.128   k8s-master   <none>           <none>
kube-controller-manager-k8s-master         1/1     Running   0          4h5m    192.168.186.128   k8s-master   <none>           <none>
kube-proxy-2vt4s                           1/1     Running   0          3h52m   192.168.186.129   k8s-node1    <none>           <none>
kube-proxy-99x2t                           1/1     Running   0          3h52m   192.168.186.128   k8s-master   <none>           <none>
kube-scheduler-k8s-master                  1/1     Running   0          4h5m    192.168.186.128   k8s-master   <none>           <none>
metrics-server-5f85c44dcd-kpnpk            1/1     Running   0          4m4s    10.244.36.85      k8s-node1    <none>           <none>    #如果状态和READY不正确,就执行如下的语句
[root@k8s-master kubernetes]# 
kubectl patch deploy metrics-server -n kube-system --type='json' -p='[{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--kubelet-insecure-tls"}]'  #修改为不认证

4. 部署edgecore(边缘节点)

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES                  AGE     VERSION
k8s-master   Ready    control-plane,master   4h12m   v1.22.6
k8s-node1    Ready    <none>                 4h9m    v1.22.6
[root@k8s-master ~]# 

4.1 获取keadm工具

#注意边缘节点配置都很低,只需要运行业务容器
#边缘节点只需要安装docker就可以了
hostnamectl set-hostname edge-node1  && bashwget https://github.com/kubeedge/kubeedge/releases/download/v1.10.1/keadm-v1.12.1-linux-amd64.tar.gztar -zxvf keadm-v1.12.1-linux-amd64.tar.gz
cp keadm-v1.12.1-linux-amd64/keadm/keadm  /usr/local/bin/
keadm version
TOKEN=3b917d79963d290608f00b2c567808bbf37f99379efdb4a2848ddd2d2713cb52.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTY5NDc2NTl9.1DQ6GwR687bpyR_8q-Xf2HwFfLeUdZ2oqYrYkEyNEEo  #这串数字是在cloudcore执行keadm gettoken获取的SERVER=192.168.186.200:10000
keadm join --token=$TOKEN --cloudcore-ipport=$SERVER --kubeedge-version=1.12.1#如果添加失败了,请在edgecore中执行
#docker rm -f mqtt   && rm -fr /etc/kubeedge/
#keadm join --token=$TOKEN --cloudcore-ipport=$SERVER --kubeedge-version=1.12.1
[root@edgenode1 ~]# TOKEN=3b917d79963d290608f00b2c567808bbf37f99379efdb4a2848ddd2d2713cb52.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTY5NDc2NTl9.1DQ6GwR687bpyR_8q-Xf2HwFfLeUdZ2oqYrYkEyNEEo
[root@edgenode1 ~]# SERVER=192.168.186.200:10000
[root@edgenode1 ~]# keadm join --token=$TOKEN --cloudcore-ipport=$SERVER --kubeedge-version=1.12.1
I1009 13:40:18.319594    2217 command.go:845] 1. Check KubeEdge edgecore process status
I1009 13:40:18.480783    2217 command.go:845] 2. Check if the management directory is clean
I1009 13:40:18.480907    2217 join.go:100] 3. Create the necessary directories
I1009 13:40:18.484206    2217 join.go:176] 4. Pull Images
Pulling kubeedge/installation-package:v1.12.1 ...
Successfully pulled kubeedge/installation-package:v1.12.1
Pulling eclipse-mosquitto:1.6.15 ...
Successfully pulled eclipse-mosquitto:1.6.15
Pulling kubeedge/pause:3.1 ...
Successfully pulled kubeedge/pause:3.1
I1009 13:42:56.611776    2217 join.go:176] 5. Copy resources from the image to the management directory
I1009 13:42:59.996519    2217 join.go:176] 6. Start the default mqtt service
I1009 13:43:02.033426    2217 join.go:100] 7. Generate systemd service file
I1009 13:43:02.034038    2217 join.go:100] 8. Generate EdgeCore default configuration
I1009 13:43:02.034469    2217 join.go:230] The configuration does not exist or the parsing fails, and the default configuration is generated
W1009 13:43:02.051996    2217 validation.go:71] NodeIP is empty , use default ip which can connect to cloud.
I1009 13:43:02.055240    2217 join.go:100] 9. Run EdgeCore daemon
I1009 13:43:02.733562    2217 join.go:317] 
I1009 13:43:02.733581    2217 join.go:318] KubeEdge edgecore is running, For logs visit: journalctl -u edgecore.service -xe
[root@edgenode1 ~]# 

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

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

相关文章

tomcat整体架构

Tomcat介绍 Tomcat是Apache Software Foundation&#xff08;Apache软件基金会&#xff09;开发的一款开源的Java Servlet 容器。它是一种Web服务器&#xff0c;用于在服务器端运行Java Servlet和JavaServer Pages (JSP)技术。它可 以为Java Web应用程序提供运行环境&#x…

C++ | 仿函数

仿函数的用法 在C语言时期&#xff0c;如果想要实现回调函数或者是函数参数需要传入函数&#xff0c;通常是用的函数指针。而在C中&#xff0c;我们一般用仿函数来平替。 仿函数&#xff0c;又叫函数对象。虽然名字叫仿函数&#xff0c;但本质上就是一个重载了 operator() 的类…

车载通信架构 —— DDS协议介绍

车载通信架构 —— DDS协议介绍 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和…

Linux网络监控工具 - iftop

iftop 是一个基于 libpcap 库的网络流量监控工具。它通过监听指定网络接口上的数据包&#xff0c;并分析这些数据包的源地址、目标地址、源端口、目标端口、协议等信息&#xff0c;从而实时显示网络流量的相关统计信息。 安装 在大多数Linux发行版中&#xff0c;您可以使用包管…

计算机竞赛 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习行人重识别(person reid)系统 该项目…

配置文件生成器-秒杀SSM的xml整合

配置文件生成器-秒杀SSM的xml整合 思路&#xff1a; 通过简单的配置&#xff0c;直接生成对应配置文件。 maven坐标 <dependencies><!-- 配置文件生成 --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker<…

maven 初学

1. maven 安装 配置安装 路径 maven 下载位置: D:\software\apache-maven-3.8.6 默认仓库位置: C:\Users\star-dream\.m2\repository 【已更改】 本地仓库设置为&#xff1a;D:\software\apache-maven-3.8.6\.m2\repository 镜像已更改为阿里云中央镜像仓库 <mirrors>…

Kubernetes概述架构与工作流程简述

文章目录 Kubernetes概述Kubernetes优势Kubernetes 集群组件控制平面组件Node 组件 Kubernetes工作流程下期预告 Kubernetes概述 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;可促进声明式配置和自动化。 Kubernetes 拥…

简易版Pycharm(2023)+Conda开发环境配置教程

困 扰 不知道为什么&#xff0c;自从Pycharm更新了新的版本以后&#xff0c;在Pycharm中为项目工程配置Python解释器环境时&#xff0c;总是不能像以前那么方便。 比如&#xff0c;当前Conda中有十个不同的开发环境&#xff0c;每个环境一个名称&#xff0c;比如&#xff0c;p…

VB.NET vs. VB6.0:现代化编程语言 VS 经典老旧语言

目录 ​.NET背景&#xff1a; 特点: VB6.0背景&#xff1a; 特点: 两者之间的不同: 总结: 升华: .NET背景&#xff1a; VB.NET一种简单&#xff0c;现代&#xff0c;面向对象计算机编程语言&#xff0c;有微软开发&#xff0c;VB.NET是一种基于.NET Framework的面向对象…

golang gin——中间件编程以及jwt认证和跨域配置中间件案例

中间件编程jwt认证 在不改变原有方法的基础上&#xff0c;添加自己的业务逻辑。相当于grpc中的拦截器一样&#xff0c;在不改变grpc请求的同时&#xff0c;插入自己的业务。 简单例子 func Sum(a, b int) int {return a b }func LoggerMiddleware(in func(a, b int) int) f…

【C++设计模式之观察者模式:行为型】分析及示例

简介 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得当一个对象的状态发生变化时&#xff0c;所有依赖它的对象都能够自动收到通知并更新。 描述 观察者模式由两个核心件组成&#xff1…

来单提醒/客户催单 ----苍穹外卖day9

来单提醒 需求分析 代码开发 注意:前端请求的并不是8080端口;而是先请求Nginx,Nginx进行反向代理以后转发到8080端口 这段代码首先创建了一个orders类用于更新订单状态 并且在更新状态后使用websocket发送给后端提醒 将信息放在map后,使用json的string化方式传给一个接收对象,…

类 ChatGPT 模型存在的局限性

尽管类ChatGPT模型经过数月的迭代和完善&#xff0c;已经初步融入了部分领域以及人们的日常生活&#xff0c;但目前市面上的产品和相关技术仍然存在一些问题&#xff0c;以下列出一些局限性进行详细说明与成因分析&#xff1a; 1&#xff09;互联网上高质量、大规模、经过清洗…

【广州华锐互动】动物解剖学AR互动学习平台

增强现实&#xff08;AR&#xff09;是一种将虚拟信息叠加到现实世界中的技术。通过智能手机、平板电脑或AR眼镜等设备&#xff0c;AR技术可以创建出逼真的虚拟物体&#xff0c;这些物体可以与现实世界的环境相互交互。 AR技术在教育领域的应用非常广泛&#xff0c;包括历史、科…

postman测试文件上传接口教程

postman是一个很好的接口测试软件&#xff0c;有时候接口是Get请求方式的&#xff0c;肯定在浏览器都可以测了&#xff0c;不过对于比较规范的RestFul接口&#xff0c;限定了只能post请求的&#xff0c;那你只能通过工具来测了&#xff0c;浏览器只能支持get请求的接口&#xf…

CCF CSP认证 历年题目自练Day21

题目一 试题编号&#xff1a; 201909-1 试题名称&#xff1a; 小明种苹果 时间限制&#xff1a; 2.0s 内存限制&#xff1a; 512.0MB 题目分析&#xff08;个人理解&#xff09; 先看输入&#xff0c;第一行输入苹果的棵树n和每一次掉的苹果数m还是先如何存的问题&#xf…

ASP.NET Core 开发 Web API

2. Web Api 的创建与Http类型的介绍 2.1 ASP.Net Core Web API项目的创建 1.创建ASP.NET Core Web API项目 从“文件”菜单中选择“新建”“项目”。 在搜索框中输入“Web API”。 选择“ASP.NET Core Web API”模板&#xff0c;然后选择“下一步”。 在“配置新项目”对话框中…

[护网杯 2018]easy_tornado 解析

打开网页有三个链接&#xff0c;依次点开之后获得一个fllllllllllllag一个render和一个MD5加密格式 之后尝试去访问/fllllllllllllag 直接跳出报错界面。 但这个报错界面居然是可以改的 试着注入一下 看了师傅的wp发现好像没有&#xff0c;要从框架入手 框架就是标题的torna…

【框架风格】解释器模式

1、描述 解释器框架风格&#xff08;Interpreter Framework Style&#xff09;是一种软件架构风格&#xff0c;其核心思想是构建一个解释器&#xff08;Interpreter&#xff09;来解释并执行特定领域或问题领域的语言或规则。以下是解释器框架风格的一些特点&#xff1a; 1. 领…