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

2023-10-10 01:44

本文主要是介绍云原生边缘计算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-master01 ~]# 
[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 ~]# 
#注意边缘节点配置都很低,只需要运行业务容器
#边缘节点只需要安装docker就可以了
hostnamectl set-hostname edge-node1  && bash

这篇关于云原生边缘计算KubeEdge安装配置(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177047

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu