1. Docker安装
1.1 安装docker
参考1
1.2 安装cri-dockerd
参考2
cri-dockerd-0.3.4-3.el7.x86-64.rpm快速下载地址
下载解压后
cd cri-dockerd
sudo alien -i cri-dockerd-0.3.4-3.el7.x86_64.rpm
设置自启动
sudo systemctl enable cri-docker.socket cri-docker
启动
sudo systemctl start cri-docker.socket cri-docker
查看cri-dockerd状态
sudo systemctl status cri-docker.socket
2. cloud节点配置Kubernetes
参考https://www.dandelioncloud.cn/article/details/1588409652935380994、https://blog.csdn.net/qq_53014769/article/details/127809159、https://blog.csdn.net/zt15732625878/article/details/124366267
- 关闭swap
swapoff -a
# free命令,swap行全为0说明没有swap分区
free -m
# 修改配置文件,把swap相关的注释掉
sudo vi /etc/fstab
# 把下面第一行中原来的1改成0,然后注掉第二行(前面加'#')
UUID=d23c2ed6-0135-42b6-8713-45712158e67d / ext4 errors=remount-ro 0 0
# /swapfile none swap sw 0 0
- 关闭防火墙
sudo ufw disable
sudo ufw status
2.1 ip配置
-
将虚拟机网络适配器设为NAT模式
-
在虚拟网络编辑器的NAT设置中查看VMnet8网关地址,IP应设为同一网段下的地址
-
也可以打开物理机cmd,输入ipconfig查看其以太网适配器VMnet8的IP地址
-
安装net-tools
apt install net-tools
- 看一下自己网卡的名称
ip a
ifconfig #两个都可以
- Ubuntu18的网络配置写在/etc/netplan/01-network-manager-all.yaml或者类似名称的yaml文件里,每个服务器均可能不同所以先ls /etc/netplan看一下文件名称
- 源文件备份
cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak
- 将配置写入文件
sudo vim /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
ethernets:
ens33: #改成自己的网卡名称
dhcp4: no #关闭动态分配
addresses: [192.168.148.11/24] ##这里修改成自己所需的IP地址
gateway4: 192.168.148.2 ##根据虚拟网络编辑器设置网关
nameservers:
addresses: [114.114.114.114,8.8.8.8]#DNS服务器地址
#optional:true
version: 2
- 应用这些修改
netplan apply
- 修改hostname和host
vim /etc/hostname
cloud-master
vim /etc/hosts
192.168.148.11 cloud-master
2.2 kubernetes安装配置
- 添加信任APT证书
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
- 配置k8s源仓库
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" >>/etc/apt/sources.list.d/kubernetes.list
- 更新源并安装kubelet、kubeadm、kubectl
sudo apt-get update && sudo apt-get install -y kubeadm kubectl kubelet
sudo apt-get install kubeadm=1.22.2-00 kubectl=1.22.2-00 kubelet=1.22.2-00
- 设置开机启并启动kubelet,一定要关闭swap否则不会成功
systemctl enable kubelet && systemctl start kubelet
- 配置k8s环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address=192.168.148.11 --node-name=cloud-master --kubernetes-version=v1.22.2 --cri-socket unix:///var/run/cri-dockerd.sock --ignore-preflight-errors=all
kubeadm init 命令中的参数解释:
--node-name=k8s-master:
指定k8s集群中Master节点的名称,和上面/etc/hosts配置中名称一致。
--image-repository
=registry.aliyuncs.com/google_containers: 指定容器镜像的仓库地址。
--cri-socket
=unix:///var/run/cri-dockerd.sock: 指定容器运行时的 CRI(Container Runtime Interface)套接字路径(Docker 的配置文件路径通常是 /etc/docker/daemon.json,CRI 套接字路径通常不会在 Docker 的配置文件中直接指定。Kubernetes一般会使用默认的 Docker 套接字路径 /var/run/docker.sock)。
--apiserver-advertise-address
: 指定Kubernetes API Server的地址,即Master节点的IP地址。和上面/etc/hosts配置中的IP一致
--pod-network-cidr=10.244.0.0/16
: 指定 Pod 网络的 CIDR(Classless Inter-Domain Routing)地址范围。默认使用这个即可。
--service-cidr=10.96.0.0/12
: 指定服务网络的 CIDR 地址范围(需要选择一个未被使用的 CIDR 地址范围),一般默认使用这个即可。
--kubernetes-version
: 指定Kubenetes版本,如果不指定该参数,会从google网站下载最新的版本信息。
#To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 查看集群状态
此时kubectl get nodes发现节点状态notready,这是因为还没安装网络插件
- 安装flannel(CNI)
参考
#下载flannel插件的yaml文件
cd ~ && mkdir flannel && cd flannel
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#启动
kubectl apply -f ~/flannel/kube-flannel.yml
- 云端
- Golang环境搭建
wget https://studygolang.com/dl/golang/go1.12.14.linux-amd64.tar.gz
tar -zxvf go1.14.4.linux-amd64.tar.gz -C /usr/local
添加环境变量vim ~/.bashrc
,在~/.bashrc文件末尾添加:
export GOROOT=/usr/local/go
export GOPATH=/home/zora/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
保存后记得执行 source ~/.bashrc
- 安装keadm
在这里插入代码片
- 下载源代码并编译
mkdir -p /home/zora/gopath && cd /home/zora/gopath
mkdir -p src pkg bin
git clone https://gitee.com/ly10208/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge
cd $GOPATH/src/github.com/kubeedge/kubeedge
make all WHAT=keadm
- 部署cloudcore
#通过Keadm安装CloudCore
cp $GOPATH/src/github.com/kubeedge/kubeedge/build/tools/cloudcore.service /etc/systemd/system/cloudcore.service #设置自启动
#cp $GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin/cloudcore /etc/kubeedge/cloudcore
systemctl daemon-reload
systemctl enable cloudcore
systemctl start cloudcore
#查看运行情况
systemctl status cloudcore
- KubeEdge installation
keadm init --advertise-address=192.168.148.11
报错timed out waiting for the condition:删除master节点污点参考1参考2
kubectl get all -nkubeedge #检查运行状态及获取cloudcore的pod名称
kubectl describe pod cloudcore-6fffcc974f-q85sn -nkubeedge #查看pod描述信息,最后一行是存在的问题
kubectl describe nodes cloud-master | grep Taints #查看污点信息
kubectl taint nodes --all node-role.kubernetes.io/master- #删除master节点污点
- 检查节点状态,都是ready,cloudcore有两行就对啦
ps -ef | grep cloudcore
kubectl get all -n kubeedge
kubectl get deployment -n kubeedge
- 得到token边缘端会用到
keadm gettoken