我这里是在之前安装了kubesphere的集群上进行操作的

配置master节点

控制台->平台管理->集群管理->自定义CRD,搜索​​clusterconfiguration​​,查看详情,在资源列表中,点击 ​​ks-installer​​ 右侧的图标,然后选择编辑配置文件。

将​​kubeedge.enabled​​的​​false​​改为​​true​

kubeedge:
enabled: true # 将“false”更改为“true”。


将​​kubeedge.cloudCore.cloudHub.advertiseAddress​​ 的值设置为集群的公共 IP 地址或边缘节点可以访问的 IP 地址。完成后,点击右下角的更新保存配置。

  kubeedge:
cloudCore:
cloudHub:
advertiseAddress:
- 192.168.80.10


查看安装过程

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f


安装完成后,web页面上控制台->平台管理->集群管理->节点管理目录下,会出现边缘节点

配置边缘节点

边缘节点安装Docker-ce 19.03,​​镜像加速地址​​去自己的阿里云帐号申请

yum install docker-ce-19.03.15-3.el7  docker-ce-cli-19.03.15-3.el7 -y
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=cgroupfs"],
"registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
systemctl enable docker && systemctl restart docker


配置 EdgeMesh

编辑 ​​/etc/nsswitch.conf​

vi /etc/nsswitch.conf


修改hosts

hosts:          dns files mdns4_minimal [NOTFOUND=return]


运行以下命令启用 IP 转发:

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf


检查验证

[root@edgenode-01 ~]# sysctl -p | grep ip_forward
net.ipv4.ip_forward = 1


添加边缘节点

在控制台->平台管理->集群管理->节点管理->边缘节点,点击添加节点,设置边缘节点的节点名称并输入其内网 IP 地址,添加污点一定要打勾,方便后续调度,点击验证生成命令

arch=$(uname -m); curl -LO https://kubeedge.pek3b.qingstor.com/bin/v1.6.2/$arch/keadm-v1.6.2-linux-$arch.tar.gz  && tar xvf keadm-v1.6.2-linux-$arch.tar.gz && chmod +x keadm && ./keadm join --kubeedge-version=1.6.2 --region=zh --cloudcore-ipport=192.168.80.10:10000 --quicport 10001 --certport 10002 --tunnelport 10004 --edgenode-name edgenode-vwuk --edgenode-ip 192.168.80.25 --token 805ca3c73ce17f447764d13c8bf95a73a683aa63674f760020e4da2c37a58667.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzAxMjI4NzR9.VVLBlOiSeVssi5gHmiHRf6xocjjjLJjLSyz6dOcNl2A --with-edge-taint


如果使用的是云服务器搭建,那么添加防火墙和端口转发规则,需要将外网端口映射到相应的内网 IP 地址(主节点)和端口以及创建防火墙规则以允许流量进入这些端口(​​10000​​ 至 ​​10004​​)。添加完,直接将命令复制到边缘节点进行执行。

KubeSphere安装KubeEdge_KubeEdge

因为我用的是内网搭建,所以需要将命令里的端口都改为(​​30000​​ 至 ​​30004​​),改完后执行

arch=$(uname -m); curl -LO https://kubeedge.pek3b.qingstor.com/bin/v1.6.2/$arch/keadm-v1.6.2-linux-$arch.tar.gz  && tar xvf keadm-v1.6.2-linux-$arch.tar.gz && chmod +x keadm && ./keadm join --kubeedge-version=1.6.2 --region=zh --cloudcore-ipport=192.168.80.10:30000 --quicport 30001 --certport 30002 --tunnelport 30004 --edgenode-name edgenode-vwuk --edgenode-ip 192.168.80.25 --token 805ca3c73ce17f447764d13c8bf95a73a683aa63674f760020e4da2c37a58667.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzAxMjI4NzR9.VVLBlOiSeVssi5gHmiHRf6xocjjjLJjLSyz6dOcNl2A --with-edge-taint


成功执行,显示如下

[Run as service] service file already exisits in /etc/kubeedge//edgecore.service, skip download
kubeedge-v1.6.2-linux-amd64/
kubeedge-v1.6.2-linux-amd64/edge/
kubeedge-v1.6.2-linux-amd64/edge/edgecore
kubeedge-v1.6.2-linux-amd64/cloud/
kubeedge-v1.6.2-linux-amd64/cloud/csidriver/
kubeedge-v1.6.2-linux-amd64/cloud/csidriver/csidriver
kubeedge-v1.6.2-linux-amd64/cloud/admission/
kubeedge-v1.6.2-linux-amd64/cloud/admission/admission
kubeedge-v1.6.2-linux-amd64/cloud/cloudcore/
kubeedge-v1.6.2-linux-amd64/cloud/cloudcore/cloudcore
kubeedge-v1.6.2-linux-amd64/version

KubeEdge edgecore is running, For logs visit: journalctl -u edgecore.service -b


此时,刷新边缘节点页面,会显示新添加的边缘节点,若没有出现,查看日志找错误信息

journalctl -u edgecore.service -f


移除边缘节点

边缘节点上执行

./keadm reset
yum remove mosquitto
rm -rf /var/lib/kubeedge /var/lib/edged /etc/kubeedge/ca /etc/kubeedge/certs


然后去master节点,移除边缘节点

kubectl delete node <edgenode-name>


在边缘节点运行pod

在master编写pod的yaml,因为边缘节点上有污点​​node-role.kubernetes.io/edge​​,所以需要设置pod的容忍度

apiVersion: v1
kind: Pod
metadata:
name: nginx-edge
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
hostPort: 80
tolerations:
- key: "node-role.kubernetes.io/edge"
operator: "Exists"
effect: "NoSchedule"


部署

kubectl apply -y nginx-edge.yaml


可以看到,pod已经被调度到边缘节点edgenode-jkfy上

[root@k8s-master01 yaml]# kubectl get pod nginx-edge -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-edge 1/1 Running 0 12m 172.17.0.2 edgenode-jkfy <none> <none>


每个人都有潜在的能量,只是很容易被习惯所掩盖,被时间所迷离,被惰性所消磨~