kubeEdge安装
提纲
1、kubeEdge和边缘计算
2、集群规划
3、docker部署
4、kubernetes部署
5、kubeEdge部署
1、KubeEdge和边缘计算
kubeEdge是一个开源的系统,可以将云端k8s集群中的容器化应用编排和管理扩展到边缘节点,实现云边协同。
KubeEdge分为云端节点cloudcore和边缘端节点edgecore,安装部署时需要在云端和边缘端分别部署对应的组件,云端和边缘端部署组件如下:
- 云端需要安装:
- docker
- kubernetes组件
- cloudcore
- 边缘端需要安装:
- docker
- edgecore
由于KubeEdge建立在kubernetes之上,使用kubernetes为联网、应用部署和云与边缘之间的元数据同步提供核心基础设施支持。因此需要安装kubernetes。
Kubernetes默认的容器运行时(Container Runtime)为Docker,因此需要安装Docker。
2、集群规划
3、docker部署
docker的部署在集群中的各个节点都要做。
第一步,添加国内镜像源,2节点都做
将以下内容写入:/etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
enabled=1
第二步,更新Yum源并安装docker,2节点都做
yum -y update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
第三步,设置hostname,2节点都做
给2个主机ke-master,ke-edge1设置主机名
hostname ke-master/ke-edge1
设置hosts文件
cat >> /etc/hosts << EOF
192.168.214.150 ke-cloud
192.168.214.151 ke-edge1
192.168.214.152 ke-edge2
EOF
第四步,其他设置,2节点都做
#关掉并禁止防火墙
systemctl stop firewalld & systemctl disable firewalld
# 关掉并禁止selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
getenforce
# 永久关闭swap分区
vim /etc/fstab
注释掉
/dev/mapper/centos-swap swap swap defaults 0 0 这一行即可
4、Kubernetes部署
第一步,安装kubeadm,kubelet,kubectl等命令
#安装kubeadm,2节点都做
yum -y install kubelet-1.22.2-0 kubeadm-1.22.2-0 kubectl-1.22.2-0
# docker加入开机启动,2节点都做
systemctl start docker && systemctl enable docker
# kubelet加入开机启动,2节点都做
systemctl enable kubelet
第二步,初始化k8s集群的主节点
#初始化k8s主节点,ke-master节点做,edge节点不需要
kubeadm init --kubernetes-version=1.22.2 \ #该参数指定k8s版本
--apiserver-advertise-address=192.168.214.150 \ #该参数是主节点IP
--image-repository registry.aliyuncs.com/google_containers \ #指定下载部署组件的镜像源
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16 #一些内网配置,可以直接用这个
成功后,会有如下截图
第三步,将worker节点加入到k8s集群中
#将其他的worker节点加入到k8s集群中
#复制上面最后那段kubeadm join的命令到其他worker机子上,可以实现将节点加入到k8s集群中,但是此时使用以下命令查看节点情况:
kubeadm join 10.14.70.158:6443 --token cf6je4.6qbhi1ort3vehmgt --discovery-token-ca-cert-hash sha256:1308be5b8f44fbf3210014eafc96d1bd4fe0f5b716300eddcef80b49e2168851
#设置环境变量
vi /etc/profile
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl get nodes
第四步,安装网络组件calico
上面截图中发现节点状态都是NotReady,这是因为网络插件还没配好,所以下一步就是下载网络插件,calico和fannel都可以,这里选择calico:
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
此时再看节点应该就是Ready了,不行就再刷新几下,每次刷新之间等待一会儿。
至此,k8s集群配置完成,下一步就是在现有集群上配置KubeEdge了。
5、kubeEdge部署
配置kubeEdge时,要配置2个组件,云端集群中配置cloudcore,边缘节点中配置edgecore
首先,下载kubeedege相关组件,所有节点都做:
# keadm,类似kubeadm的KE部署包
wget https://github.com/kubeedge/kubeedge/releases/download/v1.10.0/keadm-v1.10.0-linux-amd64.tar.gz
# 提前下载kubeedge压缩包和校验文件
wget https://github.com/kubeedge/kubeedge/releases/download/v1.10.0/kubeedge-v1.10.0-linux-amd64.tar.gz
wget https://github.com/kubeedge/kubeedge/releases/download/v1.10.0/checksum_kubeedge-v1.10.0-linux-amd64.tar.gz.txt
其次,配置云端节点ke-cloud,只在云端节点做
#解压keadm压缩包,并将其拷贝到集群主节点目录下(即/usr/bin)
tar -xvf keadm-v1.10.0-linux-amd64.tar.gz
cp keadm-v1.10.0-linux-amd64/keadm/keadm /usr/bin/
#下载好的kubeedge压缩包和校验文件,可以先把它们存在/etc/kubeedge目录下
mkdir /etc/kubeedge/
cp kubeedge-v1.10.0-linux-amd64.tar.gz /etc/kubeedge/
cp checksum_kubeedge-v1.10.0-linux-amd64.tar.gz.txt /etc/kubeedge/
#云节点进行边缘集群初始化
kubeadm init --kubernetes-version=1.22.2 --apiserver-advertise-address=10.14.70.158 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
#上述初始化命令执行成功后,查看cloudcore是否正确运行
ps -ef|grep cloudcore
#cloudcore开机自启动
cp /etc/kubeedge/cloudcore.service /etc/systemd/system/
systemctl daemon-reload
systemctl start cloudcore.service
systemctl enable cloudcore.service
#生成云节点的token,通过Token可以让其他边缘节点加入
keadm gettoken
第三,配置边缘节点
#边缘节点在下载好Keadm,kubeedge和check_sum之后,同样也要将其解压缩并复制到工作目录下:
#解压keadm压缩包,并将其拷贝到集群主节点目录下(即/usr/bin)
tar -xvf keadm-v1.10.0-linux-amd64.tar.gz
cp keadm-v1.10.0-linux-amd64/keadm/keadm /usr/bin/
#下载好的kubeedge压缩包和校验文件,可以先把它们存在/etc/kubeedge目录下
mkdir /etc/kubeedge/
cp kubeedge-v1.10.0-linux-amd64.tar.gz /etc/kubeedge/
cp checksum_kubeedge-v1.10.0-linux-amd64.tar.gz.txt /etc/kubeedge/
#启动边缘节点的edgeCore,并将边缘节点加入云端集群
keadm join --cloudcore-ipport=10.14.70.158:10000 --token cd68e2b0a5bfc623c72704aecc9f97d4cd75c982ed49daa2f6a3a5ae8f8ecf30.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDY2OTUxMTd9.qar6Q1i7LeTNTx4gKYcVh9tbF5yxuhidFRSG8USo1Sg --kubeedge-version=v1.10.0
#将云端节点的/etc/kubernetes/admin.conf scp到边缘节点的/etc/kubernetes/下,并设置环境变量
cd /etc/kubernetes/
scp admin.conf root@10.14.70.159:/etc/kubernetes/
vi /etc/profile
export KUBECONFIG=/etc/kubernetes/admin.conf
#边缘节点查看edgecore是否运行
ps -ef | grep edgecore
systemctl enable edgecore
systemctl start edgecore
#边缘节点查看集群状态
kubectl get nodes -o wide
第四,边缘节点运行nginx
#ngnix.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1 # 可根据需要进行调整
template:
metadata:
labels:
app: nginx
spec:
nodeName: ke-edge1 #调度到指定机器
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
# 启动
kubectl apply -f nginx.conf
#查看
kubectl get pods -o wide
参考资料
1、https://blog.csdn.net/weixin_45825909/article/details/128038232
2、https://www.runoob.com/docker/centos-docker-install.html
3、https://blog.csdn.net/qq_14910065/article/details/133843120,edge节点运行nginx
4、https://www.jianshu.com/p/6fa06b9bbf6a,kubectl命令出现错误【The connection to the server localhost:8080 was refused - did you specify的解决方法
5、https://zhuanlan.zhihu.com/p/598452325?utm_id=0,kubesphere上管理边缘节点,并且指定服务运行在边缘节点上
6、https://www.yii666.com/blog/68070.html,在kubeEdge节点上运行nginx的案例
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2023-01-31 加密pdf在不知道密码的情况下如何解密