在Debian系统上部署Kubernetes(K8s)集群前,需完成硬件、系统、网络、软件及配置等多方面的准备工作,确保集群能稳定运行。
根据节点角色不同,硬件配置需满足以下最低要求(建议配置以满足生产环境需求):
sudo apt update && sudo apt upgrade -y)。Kubernetes 1.8及以上版本要求禁用Swap分区,否则kubelet无法正常启动。执行以下命令:
sudo swapoff -a # 临时关闭Swap
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久注释Swap行(需root权限)
需重启节点使配置生效。
hostnamectl设置唯一主机名(如k8s-master、k8s-node1):sudo hostnamectl set-hostname <节点主机名>
/etc/hosts文件中添加节点IP与主机名的映射(替换为实际IP):echo "<节点IP> <节点主机名>" | sudo tee -a /etc/hosts
示例(主节点IP为192.168.1.100,工作节点为192.168.1.101):192.168.1.100 k8s-master
192.168.1.101 k8s-node1
此配置便于节点间通过主机名通信。为节点配置静态IP地址(避免DHCP动态分配导致IP变化),编辑/etc/network/interfaces(Debian传统网络配置文件)或使用netplan(较新版本),示例如下:
auto eth0
iface eth0 inet static
address 192.168.1.100 # 替换为实际IP
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4 # 配置DNS
配置完成后重启网络服务(sudo systemctl restart networking)。
若系统启用了ufw防火墙,需允许Kubernetes关键端口通过(主节点需开放所有端口,工作节点需开放对应端口):
# 主节点(API Server、kubelet等)
sudo ufw allow 6443/tcp # kube-apiserver端口
sudo ufw allow 2379/tcp # etcd客户端端口
sudo ufw allow 2380/tcp # etcd peer端口
sudo ufw allow 10250/tcp # kubelet端口
sudo ufw allow 10251/tcp # kube-scheduler端口
sudo ufw allow 10252/tcp # kube-controller-manager端口
sudo ufw allow 10255/tcp # kubelet只读端口
# 工作节点(kubelet、Pod网络等)
sudo ufw allow 10250/tcp # kubelet端口
sudo ufw allow 30000:32767/tcp # Pod暴露的服务端口范围
sudo ufw reload # 重新加载防火墙规则
注意:若使用iptables或其他防火墙工具,需相应调整规则。
Kubernetes 1.24及以上版本不再支持Docker作为默认容器运行时,推荐使用containerd(更轻量、更符合OCI标准)。安装步骤如下:
# 添加containerd官方源
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/containerd.list
sudo apt update
# 安装containerd
sudo apt install -y containerd
sudo systemctl enable --now containerd # 启动并设置开机自启
为确保containerd正常工作,需加载必要的内核模块并设置sysctl参数:
# 创建内核模块加载文件
echo "overlay br_netfilter" | sudo tee /etc/modules-load.d/containerd.conf
sudo modprobe overlay # 加载overlay模块
sudo modprobe br_netfilter # 加载bridge-netfilter模块
# 配置sysctl参数(优化网络栈)
echo "net.bridge.bridge-nf-call-iptables = 1" | sudo tee /etc/sysctl.d/99-kubernetes.conf
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-kubernetes.conf
sudo sysctl --system # 应用配置
Kubernetes官方提供了Debian的APT仓库,需添加后才能安装kubelet、kubeadm、kubectl:
# 添加Kubernetes GPG密钥
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# 添加Kubernetes源
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 更新软件包列表
sudo apt update
安装kubelet、kubeadm、kubectl(Kubernetes集群部署与管理工具),并锁定版本(避免自动升级导致兼容性问题):
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本
Asia/Shanghai),避免时间同步问题(影响日志、证书验证等):sudo timedatectl set-timezone Asia/Shanghai
sudo setenforce 0 # 临时禁用
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久禁用
/etc、/var目录),防止误操作导致数据丢失。完成以上前期准备后,即可使用kubeadm init初始化Master节点,并通过kubeadm join将Worker节点加入集群。