一、机器准备
系统 |
IP |
主机名 |
Linux |
10.5.16.11 |
k8s-master |
Linux |
10.5.16.12 |
k8s-node1 |
Linux |
10.5.16.13 |
k8s-node2 |
最低配置:CPU核心不低于2个,RAM不低于2G。
查看主机名:
hostnamectl
修改主机名:
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
说明: v1.24 之前的 Kubernetes 版本直接集成了 Docker Engine 的一个组件,名为 dockershim。 这种特殊的直接整合不再是 Kubernetes 的一部分,自 1.24 版起,Dockershim 已从 Kubernetes 项目中移除。阅读 Dockershim 移除的常见问题了解更多详情。你需要在集群内每个节点上安装一个 容器运行时 以使 Pod 可以运行在上面。
Kubernetes 中几个常见的容器运行时有:
本文将以1.28.2版本为例,进行介绍。
二、环境配置(所有节点操作)
配置hosts映射
cat >> /etc/hosts << EOF
10.5.16.11 k8s-master
10.5.16.12 k8s-node1
10.5.16.13 k8s-node2
EOF
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭交换分区
为了保证 kubelet 正常工作,必须禁用交换分区。
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
转发 IPv4 并让 iptables 看到桥接流
为了让 Linux 节点的 iptables 能够正确查看桥接流量,请确认 sysctl 配置中的 net.bridge.bridge-nf-call-iptables 设置为 1。
#转发 IPv4 并让 iptables 看到桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 通过运行以下指令确认 br_netfilter 和 overlay 模块被加载
lsmod | grep br_netfilter
lsmod | grep overlay
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo 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 参数而不重新启动
sudo sysctl --system
三、安装容器运行时(所有节点操作)
3.1、安装containerd
先检查机器是否有安装containerd
# 查看containerd版本
ctr version
# 查看containerd服务状态
systemctl status containerd.service
如果机器没有安装,则下载containerd包 首先访问GitHub: Let’s build from here · GitHub