KubeEdge EdgeMark 测试环境从零开始搭建
https://blog.csdn.net/u010549795/article/details/132557648
EdgeMark测试环境从零开始搭建
KubeEdge也提供了类似KubeMark的模拟大规模集群的工具,值得注意的是目前EdgeMark只能模拟edgecore,无法模拟edgemesh,所以如果是对网络方面的测试,还是建议老老实实装虚拟机
环境配置
使用virtualbox搭建模拟网络环境,虚拟机双网卡,网卡1使用nat转换上互联网,网卡2使用hostonly网络(192.168.56.0/24)组成局域网
软件配置,由于兼容性问题,使用kubernetes1.23,KubeEdge1.13.1
主机名 IP 操作系统
master-KubeEdge 192.168.56.2 Ubuntu20.04
master-K8s 192.168.56.3 Ubuntu20.04
master-K8s集群里面的pod要能直接访问master-KubeEdge,所以需要对网络进行一些配置(实际上不需要,可能是因为KubeEdge自带云边通信隧道可以穿透)
我们在master-KubeEdge集群里面使用flannel网络插件,而对于外部master-K8s集群,还是使用CNI,可以直接访问主机网络IP地址192.168.56.2
很神奇,没想明白,但是就是可以用
初始化系统配置
所有主机修改主机名
sudo hostnamectl set-hostname master
reboot
1
2
所有主机关闭防火墙
sudo systemctl stop ufw
sudo systemctl disable ufw
1
2
所有主机禁用swap
sudo vi /etc/fstab
# 注释swap那一行
sudo swapon -a # 启用所有swap
sudo swapoff -a # 禁用所有swap
sudo swapon -s # 查看swap状态
1
2
3
4
5
所有主机设置时间同步
sudo apt install -y ntpdate
sudo ntpdate time.windows.com
sudo timedatectl set-timezone Asia/Shanghai
1
2
3
所有节点添加hosts
# 添加hosts
sudo vi /etc/hosts
# 加入如下几行
185.199.108.133 raw.githubusercontent.com
1
2
3
4
启用ipv4转发
sudo vi /etc/sysctl.conf
# 注释下面行
/etc/sysctl.conf: net.ipv4.ip_forward = 1
sudo sysctl -p /etc/sysctl.conf
1
2
3
4
安装Docker
我们选择安装docker.io ubuntu的版本,省事
记住,需要在所有2台节点上都安装docker
sudo apt install docker.io
1
docker官方镜像仓库访问比较慢,可以使用dockerhub国内源加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://knjsrl1b.mirror.aliyuncs.com","https://docker.hub.com"]
}
EOF
# 阿里云镜像加速 https://knjsrl1b.mirror.aliyuncs.com
# 中科大镜像加速 https://docker.mirrors.ustc.edu.cn
# 云节点加入"exec-opts": ["native.cgroupdriver=systemd"],
# 边缘节点默认cgroupfs就行了,和kubeedge一致
sudo systemctl daemon-reload
sudo systemctl restart docker
1
2
3
4
5
6
7
8
9
10
11
12
主机安装Kubernetes
考虑到兼容性,我们选择kubernetes1.23.17进行安装
根据阿里云的教程,在2台主机上,使用阿里源安装kubelet,kubeadm和kubectl组件
sudo apt-get update && apt-get install -y apt-transport-https
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo vi /etc/apt/sources.list.d/kubernetes.list
# 输入以下内容:
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
sudo apt update
# 可先使用apt list kubelet -a 查看所有版本,再指定版本
sudo apt install -y kubelet=1.23.17-00 kubeadm=1.23.17-00 kubectl=1.23.17-00
```# EdgeMark测试环境搭建
KubeEdge也提供了类似KubeMark的模拟大规模集群的工具,值得注意的是目前EdgeMark只能模拟edgecorem,无法模拟edgemesh,所以如果是对网络方面的测试,还是建议老老实实装虚拟机
## 环境配置
使用virtualbox搭建模拟网络环境,虚拟机双网卡,网卡1使用nat转换上互联网,网卡2使用hostonly网络(192.168.56.0/24)组成局域网
软件配置,由于兼容性问题,使用kubernetes1.23,KubeEdge1.13.1
| 主机名 | IP | 操作系统 |
| --------------- | ------------ | ----------- |
| master-KubeEdge | 192.168.56.2 | Ubuntu20.04 |
| master-K8s | 192.168.56.3 | Ubuntu20.04 |
master-K8s集群里面的pod要能直接访问master-KubeEdge,所以需要对网络进行一些配置(实际上不需要,可能是因为KubeEdge自带云边通信隧道可以穿透)
我们在master-KubeEdge集群里面使用flannel网络插件,而对于外部master-K8s集群,还是使用CNI,可以直接访问主机网络IP地址192.168.56.2
**很神奇,没想明白,但是就是可以用**
## 初始化系统配置
所有主机修改主机名
```bash
sudo hostnamectl set-hostname master
reboot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
所有主机关闭防火墙
sudo systemctl stop ufw
sudo systemctl disable ufw
1
2
所有主机禁用swap
sudo vi /etc/fstab
# 注释swap那一行
sudo swapon -a # 启用所有swap
sudo swapoff -a # 禁用所有swap
sudo swapon -s # 查看swap状态
1
2
3
4
5
所有主机设置时间同步
sudo apt install -y ntpdate
sudo ntpdate time.windows.com
sudo timedatectl set-timezone Asia/Shanghai
1
2
3
所有节点添加hosts
# 添加hosts
sudo vi /etc/hosts
# 加入如下几行
185.199.108.133 raw.githubusercontent.com
1
2
3
4
启用ipv4转发
sudo vi /etc/sysctl.conf
# 注释下面行
/etc/sysctl.conf: net.ipv4.ip_forward = 1
sudo sysctl -p /etc/sysctl.conf
1
2
3
4
安装Docker
我们选择安装docker.io ubuntu的版本,省事
记住,需要在所有2台节点上都安装docker
sudo apt install docker.io
1
docker官方镜像仓库访问比较慢,可以使用dockerhub国内源加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://knjsrl1b.mirror.aliyuncs.com","https://docker.hub.com"]
}
EOF
# 阿里云镜像加速 https://knjsrl1b.mirror.aliyuncs.com
# 中科大镜像加速 https://docker.mirrors.ustc.edu.cn
# 云节点加入"exec-opts": ["native.cgroupdriver=systemd"],
# 边缘节点默认cgroupfs就行了,和kubeedge一致
sudo systemctl daemon-reload
sudo systemctl restart docker
1
2
3
4
5
6
7
8
9
10
11
12
主机安装Kubernetes
考虑到兼容性,我们选择kubernetes1.23.17进行安装
根据阿里云的教程,在2台主机上,使用阿里源安装kubelet,kubeadm和kubectl组件
sudo apt-get update && apt-get install -y apt-transport-https
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo vi /etc/apt/sources.list.d/kubernetes.list
# 输入以下内容:
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
sudo apt update
# 可先使用apt list kubelet -a 查看所有版本,再指定版本
sudo apt install -y kubelet=1.23.17-00 kubeadm=1.23.17-00 kubectl=1.23.17-00
1
2
3
4
5
6
7
8
在云master主机上使用kubeadm创建kubernetes集群,这里我们使用阿里云的镜像进行加速,这里kubeadm会安装和自己版本匹配的kubernetes
对master-KubeEdge,初始化如下:
sudo kubeadm init \
--apiserver-advertise-address=192.168.56.2 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
1
2
3
4
5
执行完毕会输出很多提示指令需要我们执行
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p HOME/.kube/config
sudo chown (id -g) HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf (id -u):HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.56.3:6443 --token aekzd4.fp0e0y3q67gwhp11 \
--discovery-token-ca-cert-hash sha256:0e2a61b06cee8ed5e4067b3b0d49adce92a04432b53a1935fb5d6daab8a1d700
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
我们按照提示在普通用户和root用户下都执行一次,这样kubectl就可以访问到本地的kube-api-server了
mkdir -p HOME/.kube/config
sudo chown (id -g) {BUILD_FROM} AS builder
ARG GO_LDFLAGS
COPY . /go/src/github.com/kubeedge/kubeedge
# 加上这一行
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
RUN apk --no-cache update && \
apk --no-cache upgrade && \
apk --no-cache add build-base linux-headers sqlite-dev binutils-gold && \
CGO_ENABLED=1 GO111MODULE=off go build -v -o /usr/local/bin/edgemark -ldflags="{GOLDFLAGS=-s -w -buildid=}(TOKEN)
- --name=$(NODE_NAME)
- --http-server=https://192.168.56.2:10002
- --websocket-server=192.168.56.2:10000
env:
- name: NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: TOKEN
valueFrom:
secretKeyRef:
name: tokensecret
key: tokendata
resources:
requests:
cpu: 20m
memory: 50M
securityContext:
privileged: true
tolerations:
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
参数 {{numreplicas}} 表示的是edgemark集群中hollow节点的数量
参数 {{server}} 是cloudcore暴露的地址,等待边缘节点join
参数 {{server}} , {{numreplicas}} , {{edgemark_image_registry}} and {{edgemark_image_tag}} 需要填充
你的真实集群要有足够的资源来运行 {{numreplicas}} 数量的 hollow-node pods
最后,用命令创建hollow-node pods就可以了
kubectl apply -f hollow-edge-node_template.yaml
1
可以看到pod都运行起来了
kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default hollow-edge-node-5599d47745-492q5 1/1 Running 0 9s
default hollow-edge-node-5599d47745-7gfkk 1/1 Running 0 9s
default hollow-edge-node-5599d47745-954cs 1/1 Running 0 9s
default hollow-edge-node-5599d47745-cdpx9 1/1 Running 0 9s
default hollow-edge-node-5599d47745-cw57s 1/1 Running 0 9s
default hollow-edge-node-5599d47745-kwkfr 1/1 Running 0 9s
default hollow-edge-node-5599d47745-mhlp8 1/1 Running 0 9s
default hollow-edge-node-5599d47745-sk7kh 1/1 Running 0 9s
default hollow-edge-node-5599d47745-ttj6m 1/1 Running 0 9s
default hollow-edge-node-5599d47745-vkw2f 1/1 Running 0 9s
1
2
3
4
5
6
7
8
9
10
11
12
然后在master-KubeEdge上就可以看到虚拟节点了
kubectl get node -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
hollow-edge-node-5599d47745-492q5 Ready agent,edge 10s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.39 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
hollow-edge-node-5599d47745-7gfkk Ready agent,edge 11s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.36 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
hollow-edge-node-5599d47745-954cs Ready agent,edge 11s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.37 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
hollow-edge-node-5599d47745-cdpx9 Ready agent,edge 10s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.42 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
hollow-edge-node-5599d47745-cw57s Ready agent,edge 12s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.34 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
hollow-edge-node-5599d47745-kwkfr Ready agent,edge 10s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.40 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
hollow-edge-node-5599d47745-mhlp8 Ready agent,edge 10s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.41 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
hollow-edge-node-5599d47745-sk7kh Ready agent,edge 11s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.35 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
hollow-edge-node-5599d47745-ttj6m Ready agent,edge 11s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.38 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
hollow-edge-node-5599d47745-vkw2f Ready agent,edge 10s v1.23.15-kubeedge-v1.13.1-dirty 10.244.0.43 <none> Debian GNU/Linux 7 (wheezy) 3.16.0-0.bpo.4-amd64 fakeRuntime://0.1.0
master Ready control-plane,master 25h v1.23.17 10.0.2.15 <none> Ubuntu 20.04.5 LTS 5.4.0-125-generic docker://20.10.25
1
2
3
4
5
6
7
8
9
10
11
12
13
大功告成!!
在云master主机上使用kubeadm创建kubernetes集群,这里我们使用阿里云的镜像进行加速,这里kubeadm会安装和自己版本匹配的kubernetes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通