一、软件环境
ubuntu | 22.04 |
docker | 5:20.10.14~3-0~ubuntu-jammy |
kubernetes | 1.23.5-00 |
二、安装docker
2.1 安装阿里云证书,并配置阿里云的docker源
#准备工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
#安装阿里云gpg证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add
# 在指定目录下新建docker.list文件,添加阿里云镜像源
cd /etc/apt/sources.list.d
sudo touch docker.list
sudo chmod 666 docker.list
sudo echo "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" > docker.list
2.2 安装docker
# 更新软件源
sudo apt-get update && sudo apt-get upgrade
#查看版本号
sudo apt-cache madison docker-ce
#安装指定版本
sudo apt-get install docker-ce=5:20.10.14~3-0~ubuntu-jammy docker-ce-cli=5:20.10.14~3-0~ubuntu-jammy containerd.io
#配置docker,kubernetes默认设置cgroup驱动(cgroupdriver)为"systemd",而docker服务的cgroup驱动默认为"cgroupfs",建议将其修改为"systemd",与kubernetes保持一致
#修改daemon.json,在其后添加一行"exec-opts":["native.cgroupdriver=systemd"]
sudo vim /etc/docker/daemon.json
{
"exec-opts":["native.cgroupdriver=systemd"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
三、kubernetes集群搭建
3.1 关闭swap分区
sudo vim /etc/fstab
#注释掉 /swapfile 所在行,然后重启计算机即可永久关闭swap
3.2 安装kubeadm、kubectl和kubelet
#更新apt源
sudo apt-get update
#使apt支持ssl传输
sudo apt-get install -y apt-transport-https
#下载gpg密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
#添加apt源
sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
#查看可安装版本
sudo apt-cache madison kubectl
#安装指定版本
sudo apt-get install kubelet=1.23.5-00 kubeadm=1.23.5-00 kubectl=1.23.5-00
#阻止自动更新
sudo apt-mark hold kubelet kubeadm kubectl
3.3 配置master节点
#查看集群使用的容器镜像
kubeadm config images list
#拉取所需镜像
sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
#初始化
#配置项说明:
#--apiserver-advertise-address k8s 中服务apiserver的部署地址,如果不填写,默认是本机
#--image-repository 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉 k8s 的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像
#--pod-network-cidr k8s采用的节点网络,该参数指定了为pod节点分配的虚拟ip网段
#--kubernetes-version: 这个是用来指定你要部署的 k8s 版本的,一般不用填,不过如果初始化过程中出现了因为版本不对导致的安装错误的话,可以用这个参数手动指定
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.23.5 --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.209.127
#初始化
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
#查看集群状态
kubectl get cs
#以上步骤安装完后,机器搭建起来了,但状态还是NotReady状态,master机器需要安装网络插件Calico
#下面是一个网上别人整理好的资源清单,之间运行k8s会在docker中拉起相应的服务
kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml
#再次查看集群节点,状态变为Ready
kubectl get nodes
#查看集群状态
kubectl get cs
3.3.1若master一直处于NotReady状态查看日志出现 failed to find plugin “flannel” in path [/opt/cni/bin]
需要下载CNI插件:CNI plugins v0.8.6
github下载地址:Release CNI plugins v0.8.6 · containernetworking/plugins · GitHub
#下载到/home目录解压
tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz
#复制flannel到/opt/cni/bin/
cp flannel /opt/cni/bin/
#查看节点状态
kubectl get node