用cri-o取代docker快速搭建kubernetes集群

用cri-o取代docker快速搭建kubernetes集群

解决方案goocz2024-12-30 1:44:4030A+A-

kubernetes自1.24起已经移除了Dockershim,不再直接使用Docker作为其容器运行时,但可以使用containerd、cri-o等运行时。相比containerd,cri-o更为轻量化,且同docker/containerd一样实现了OCI规范,docker创建的镜像同样可以用于cri-o。以下就使用cri-o作为kubernetes的容器运行时,来快速创建集群。


1. 环境准备

主要就是对操作系统进行一些设置,本次使用Ubuntu Server 22.04。

# 关闭防火墙、selinux(略)
# 关闭swap,临时关闭,重启失效。验证:free -m
sudo swapoff -a
# 关闭swap,永久生效;将包含有swap的行注释掉,通常是最后一行
sudo vi /etc/fstab
# 加载模块。要开机自启动可以通过rc.local完成
sudo modprobe br_netfilter
#网络参数配置,增加一行:net.ipv4.ip_forward=1
sudo vi /etc/sysctl.conf
sudo sysctl --system



2. 安装cri-o

cri-o的版本号已经和kubernetes保持同步,当前kubernetes版本为1.26.1,取前两段即为1.26。

export OS=xUbuntu_22.04
export VERSION=1.26
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/Release.key | sudo apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key add -
sudo apt update
sudo apt install cri-o cri-o-runc

sudo vi /etc/crio/crio.conf
# 修改pause镜像的地址,从阿里云下载,找到pause_image=行,去掉注释(行首的#号)
pause_image = "registry.aliyuncs.com/google_containers/pause:3.6"

sudo vi /etc/containers/registries.conf
# 配置容器镜像的国内仓库,加快镜像拉取速度,在末尾添加如下内容
[[registry]]
prefix = "docker.io"
location = "docker.nju.edu.cn"

# 启动crio,否则后面kubeadm拉取镜像、加入集群都会失败
sudo systemctl enable crio&&sudo systemctl start crio


3. 安装kubernetes


sudo apt install -y apt-transport-https ca-certificates curl
# 因无法访问谷歌,从阿里云下载Google Cloud 公开签名秘钥
sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg
# 添加 Kubernetes apt 仓库:
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://mirror.nju.edu.cn/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl


4. 配置集群


# 先导出默认配置,适当修改,尤其是API服务器的IP和镜像仓库地址必须修改
kubeadm config print init-defaults > k8sconfig.yaml
# 编辑镜像仓库等配置,具体修改见下图
vi k8sconfig.yaml。
# 创建集群之前,可以先拉取所需的镜像(可选步骤)
sudo kubeadm config images pull --config k8sconfig.yaml
# 创建集群。其中lb.k8s.local是自定义域名,通过hosts文件实现。
sudo kubeadm init --config k8sconfig.yaml

完成后会有提示如何将别的节点作为master/worker加入集群,记得先修改hosts文件

最后就是安装CNI插件了,例如flannel(略)。

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5