基于 cri-dockerd 二进制部署 k8s-v1.26

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

提示:这里可以添加本文要记录的大概内容:

  • kubernetes 已经在 1.24 版本中删除了 docker-shim 这个组件,使得 docker 无法对接 1.24 以后版本的
    kubernetes PS:之前都是 kubernetes 团队维护 docker-shim 组件,因为一些历史原因,放弃了
    docker-shim 之前写过一篇 基于 containerd 二进制部署 k8s-v1.23.3,总体体验下来,觉得自己被
    docker 惯坏了 containerd 的上手很不习惯,原生的 ctr 命令不好用,build 镜像也依赖 buildkit 服务
    对于菜鸡的我来说,containerd 就好比手动挡的车,只有老司机才能驾驭,我更喜欢自动挡多一点
    这篇文章,都是使用了当前最新版本的组件来部署,仅供学习使用
    实际的生产也好,公司环境也好,还是要选择当前的稳定版本,直接使用最新版会过于激进
    另外,如果有需求部署 kubernetes 的话,在不喜欢 containerd 的前提下,可以直接使用 cri-dockerd ,这样在后期如果需要提升到 1.24 以上版本的 kubernetes 就可以减少很多烦心事
    虽然,不管是升级容器运行时版本还是升级 kubernetes 版本,都会很糟心,只不过,能少一个是一个 [手动狗头.jpg]

提示:以下是本篇文章正文内容,下面案例可供参考

kubernetes v1.26.3
etcd v3.5.7
cfssl v1.6.3
docker 23.0.1
cri-dockerd v0.3.1
cni v1.1.1
calico v3.25.0

大部分的组件都是通过 github 下载的,下面整合了下载链接,可以开始前先准备好二进制文件

# kubernetes 二进制文件
https://dl.k8s.io/v1.26.3/kubernetes-server-linux-amd64.tar.gz
# etcd 二进制文件
https://github.com/etcd-io/etcd/releases/download/v3.5.7/etcd-v3.5.7-linux-amd64.tar.gz
# cfssl 二进制文件
https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssl_1.6.3_linux_amd64
# cfssljson 二进制文件
https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssljson_1.6.3_linux_amd64
# docker 二进制文件
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/static/stable/x86_64/docker-23.0.1.tgz
# cri-dockerd 二进制文件
https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.amd64.tgz
IP 角色
192.168.11.147 master/worker
192.168.11.148 master/worker
192.168.11.149 master/worker

一般情况下,master 节点也会复用成 worker 节点,毕竟机器也挺贵的 如果有特殊要求,不希望 master
节点运行容器的话,这里需要注意一些场景 metrics-server 服务获取节点资源使用情况时,需要保证和 apiserver之间的网络可以互通
如果 master 节点不部署容器,理论上只需要部署网络插件来互通网络,实际上我没有尝试过,因为我穷,我都是 master 节点复用 worker 节点
我只尝试过 master 节点复用 worker 节点,但是 master节点不调度容器的场景,因为我的网络插件都是以容器的方式运行的

开始整活

挑选一个节点作为操作节点,我这边就按照顺序,选择了 192.168.11.147 这个节点来进行后面的操作

环境准备
创建干活的目录

这个目录,主要是建立一些模板文件,然后直接通过分发和 ssh 的方式来部署,减少频繁切换节点的操作 这里利用了 shell
变量的方式来操作的,如果终端退出过,需要重新定义 work_dir 这个变量,否则后面的其他操作会导致目录不存在的报错

work_dir='/data/k8s-work-dir'
mkdir -p ${work_dir}/{
   bin,images,pkg,tmp/{
   ssl,service}}

节点免密操作

静默生成 ssh 证书

ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa -q

分发 ssh 证书到所有节点,包含操作节点本身,下面的 ip 记得替换成自己的节点 ip

ip_head='192.168.11';for i in 147 148 149;do ssh-copy-id ${ip_head}.${i};done

关闭防火墙

下面的 ip 记得替换成自己的节点 ip

ip_head='192.168.11';for i in 147 148 149;do \
ssh ${ip_head}.${i} "systemctl disable firewalld"; \
ssh ${ip_head}.${i} "systemctl stop firewalld"; \
done

关闭 selinux

下面的 ip 记得替换成自己的节点 ip

ip_head='192.168.11';for i in 147 148 149;do \
ssh ${ip_head}.${i} "setenforce 0"; \
ssh ${ip_head}.${i} "sed -i 's/SELINUX=[a-z].*/SELINUX=disabled/g' /etc/selinux/config"; \
done

有返回 setenforce: SELinux is disabled 这样的内容,说明 selinux
已经被关闭过了,不需要理会,继续往下操作

关闭 swap 分区

下面的 ip 记得替换成自己的节点 ip

ip_head='192.168.11';for i in 147 148 149;do \
ssh ${ip_head}.${i} "swapoff -a"; \
ssh ${ip_head}.${i} "sed -i '/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值