系统环境:

ubuntu 22.04

K8s  1.26.7

kubeedge 1.15

        在部署k8s之前,请先完成虚拟机的初始化与网络环境配置,如果是升级集群请先使用reset重置集群。本文参考以下链接:

https://juejin.cn/post/7208910021970952252

master 节点安装

1.安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2.修改containerd配置

1.生成配置文件

containerd config default > /etc/containerd/config.toml

2.修改配置

vim  /etc/containerd/config.toml
#修改61行附近的镜像源地址
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
#修改125行附近的运行参数
SystemdCgroup = true

3.重启containerd

systemctl restart containerd
3.安装K8s

1.安装kubeadm等

 sudo apt update
 sudo apt install -y kubelet=1.26.7-00 kubeadm=1.26.7-00 kubectl=1.26.7-00
 sudo apt-mark hold kubelet kubeadm kubectl

2.创建集群配置文件

vim kubeadm.yaml

######################


apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.3.100    #修改为自己的ip
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/containerd/containerd.sock
  imagePullPolicy: IfNotPresent
  name: master
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.26.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16
scheduler: {}

4.创建集群

sudo kubeadm init —config kubeadm.yaml

5.配置参数

 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config
4.安装CNI插件

下载cni-plugins-linux-amd64-v1.3.0安装包并解压


tar zxvf cni-plugins-linux-amd64-v1.3.0.tgz -C /opt/cni/bin

kubeege云节点部署

1.从官网下载kubeedge与keadm安装包并解压
tar -xvf keadm-v1.15.0-linux-amd64.tar.gz
cp keadm-v1.15.0-linux-amd64/keadm/keadm /usr/bin/
2.将kubeedge安装包放在对应文件夹下
sudo mkdir /etc/kubeedge/
sudo cp kubeedge-v1.15.0-linux-amd64.tar.gz /etc/kubeedge/
sudo cp checksum_kubeedge-v1.15.0-linux-amd64.tar.gz.txt /etc/kubeedge/
3.使用keadm安装kubeedge的云端组件cloudcore
sudo keadm init --advertise-address=192.168.3.100 --kubeedge-version=1.15.0
$ mkdir -p /etc/cni/net.d
$ cat >/etc/cni/net.d/10-mynet.conf <<EOF
{
	"cniVersion": "1.0.0",
	"name": "mynet",
	"type": "bridge",
	"bridge": "cni0",
	"isGateway": true,
	"ipMasq": true,
	"ipam": {
		"type": "host-local",
		"subnet": "10.224.0.0/16",
		"routes": [
			{ "dst": "0.0.0.0/0" }
		]
	}
}
EOF

重启containerd,在终端输入 ip a 确认有“cni0”这个网络

edge节点加入

1.安装containerd并修改配置
sudo apt-get install containerd.io
containerd config default > /etc/containerd/config.toml
#修改61行附近的镜像源地址
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

edge节点为了与kubeedge的edged匹配,不需要修改systemd

2.部署keadm,虚拟机使用amd64,树莓派使用arm
tar -xvf keadm-v1.10.0-linux-amd64.tar.gz
sudo cp keadm-v1.10.0-linux-amd64/keadm/keadm /usr/bin/



tar -xvf keadm-v1.10.0-linux-arm64.tar.gz
sudo cp keadm-v1.10.0-linux-arm64/keadm/keadm /usr/bin/
3.部署CNI插件

下载cni-plugins-linux-amd64-v1.3.0安装包并解压


tar zxvf cni-plugins-linux-amd64-v1.3.0.tgz -C /opt/cni/bin

配置CNI插件

$ mkdir -p /etc/cni/net.d
$ cat >/etc/cni/net.d/10-mynet.conf <<EOF
{
	"cniVersion": "1.0.0",
	"name": "mynet",
	"type": "bridge",
	"bridge": "cni0",
	"isGateway": true,
	"ipMasq": true,
	"ipam": {
		"type": "host-local",
		"subnet": "10.224.0.0/16",
		"routes": [
			{ "dst": "0.0.0.0/0" }
		]
	}
}
EOF
重启containerd,在终端输入 ip a 确认有“cni0”这个网络,确认地址与master节点相同。
4.加入集群

在云端使用keadm gettoken获得token

sudo keadm join --cloudcore-ipport=192.168.3.100:10000 --token=《》

常见问题

1.显示sandbox name is reserved

在edge节点加入失败后,containerd不会自动清除创建失败的容器,导致容器名被占用

ctr -n k8s.io c ls   #查看容器
ctr -n k8s.io c rm ID       #清除容器

清除后集群需要一段时间响应,如果仍然显示占用可以重启containerd

2. bridge not found

没有部署cni-plugins-linux-amd64-v1.3.0

3.cni init failed

边缘节点的cni插件初始化版本不对,请根据自己的cni版本调整

4.卡在edgecore run,或者启动后马上挂掉

kube-proxy与edgecore不兼容 ,kill kube-proxy进程并在云端修改配置。参考kubeedge官方文档。

5.failed to find plugin flannel in path

(在1.0.0版本后CNI Plugins中没有flannel)

下载后通过xftp 上传到Linux /home目录解压

tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz
 复制 flannel 到 /opt/cni/bin/

 cp flannel /opt/cni/bin/

chmod 755  flannel   #可执行权限

注意   在执行了上述操作后,可能导致cni0和flannel 网段不匹配,需要删除cni0并重新部署具体可以查看下方链接。

https://blog.csdn.net/0210/article/details/129403727

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐