Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)
Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)
文章目录
- Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)
- 一.环境准备
- 1.服务器准备
- 2.环境配置
- 3.设置主机名
- 4.修改国内镜像源地址
- 5.配置时间同步
- 6.配置内核转发及网桥过滤
- 二.容器运行时Containerd安装(所有节点)
- 1.apt源安装
- 2.二进制安装文件方法
- 3.配置Containerd镜像加速等
- **注意**:
- 三.K8S集群部署
- 1.集群软件的apt源准备
- 2.K8S集群软件的安装
- 3.K8S集群初始化
- 4.K8S集群网络插件Calico部署
- 四.部署应用测试集群是否安装成功
一.环境准备
1.服务器准备
服务器信息(此处为同一运营商的服务器,并且处于同一网络组中)如本地搭建的服务器则需要保证在同一内网中,且最好关闭防火墙。
角色 | 主机名称 | IP | Kubernetes版本 |
---|---|---|---|
master | k8s-master1 | 192.168.0.2 | v1.28.2 |
node1 | k8s-node1 | 192.168.0.3 | v1.28.2 |
node2 | k8s-node2 | 192.168.0.4 | v1.28.2 |
为什么要用Containerd?
1.Docker Engine 没有实现 CRI, 而这是容器运行时在 Kubernetes 中工作所需要的。 为此,必须安装一个额外的服务 cri-dockerd。 cri-dockerd 是一个基于传统的内置 Docker 引擎支持的项目, 它在 1.24 版本从 kubelet 中移除。2.不直接兼容 CRI:Docker 使用自己的运行时逻辑,与 Kubernetes的 CRI 不完全兼容。
3.性能和复杂性:Docker 包含许多 Kubernetes 不需要的额外功能(如镜像构建、CLI 工具),相比专注的运行时(如 CRI-O 或 Containerd)更重。
4.Containerd 是一个通用容器运行时,是 Docker 的核心组件之一,后来独立成为一个开源项目。它同样支持 Kubernetes,通过 CRI 插件(cri-Containerd)与 Kubernetes 集成.且被被广泛应用于生产环境(如 AWS EKS、Google GKE)
2.环境配置
确保每个节点上的MAC
地址和product_uuid
的唯一性,因为某些虚拟机的地址可能会重复。
#查看MAC地址命令
ip link
#校验product_uuid
sudo cat /sys/class/dmi/id/product_uuid
如图,eth0
网卡下的,link/ether
后面的就是Mac地址。
此处输出的就是product_uuid
3.设置主机名
根据机器的规划,分布设置三台主机名为k8s-master1、k8s-node1和k8s-node2。
#修改配置文件方式,
vi /etc/hostname
##文件内容为:k8s-master1或k8s-node1#命令行方式,临时修改
# 设置 master 主机名
hostnamectl set-hostname k8s-master1 && bash
# 设置 worker 主机名
hostnamectl set-hostname k8s-node1 && bash
hostnamectl set-hostname k8s-node2 && bash
4.修改国内镜像源地址
改为华为的镜像源为例子
-
备份镜像源文件
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
-
修改sources.list文件,将http://archive.ubuntu.com和http://security.ubuntu.com替换成http://repo.huaweicloud.com
sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.lis
5.配置时间同步
采用ntpdate
命令进行时间校对,设置Crontab定时任务进行定时校对。
#安装工具
sudo apt install ntpdate
#配置Crontab定时任务
crontab -e
#添加如下内容: 0 */1 * * * ntpdate time1.aliyun.com
6.配置内核转发及网桥过滤
- 添加配置文件
cat << EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
-
加载模块
modprobe overlay modprobe br_netfilter
-
添加网桥过滤及内核转发配置文件
cat <<EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF#然后执行 sysctl -p /etc/sysctl.d/k8s.conf
如果上述配置执行之后,执行
sysctl net.ipv4.ip_forward
输出和下图不一致。则需手动执行sysctl -w net.ipv4.ip_forward=1
-
安装Ipset及ipvsadm
sudo apt -y install ipset ipvsadm
-
配置ipvsadm模块,添加需要添加的模块
cat << EOF | tee /etc/modules-load.d/ipvs.conf ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack EOF
-
加载模块脚本
cat << EOF | tee ipvs.sh > /dev/null &&