在Debian上部署K8S需要哪些前期准备
Debian上部署K8s的前期准备
在Debian系统上部署Kubernetes(K8s)集群前,需完成硬件、系统、网络、软件及配置等多方面的准备工作,确保集群能稳定运行。
一、硬件要求
根据节点角色不同,硬件配置需满足以下最低要求(建议配置以满足生产环境需求):
- Master节点:至少2核CPU、4GB内存、20GB可用硬盘空间;
- Worker节点:至少4核CPU、8GB内存、40GB可用硬盘空间;
- 网络:所有节点需处于同一网络环境,支持相互通信(可通过公网或内网实现)。
二、系统版本要求
- 推荐使用Debian稳定版(如Debian 12 “Bookworm”),避免使用测试版(Testing)或不稳定版(Unstable),以确保系统稳定性和Kubernetes兼容性;
- 系统需为最小化安装(减少不必要的软件包,降低安全风险);
- 确保系统已更新至最新版本(
sudo apt update & & sudo apt upgrade -y
)。
三、系统配置准备
1. 关闭Swap分区
Kubernetes 1.8及以上版本要求禁用Swap分区,否则kubelet无法正常启动。执行以下命令:
sudo swapoff -a # 临时关闭Swap
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久注释Swap行(需root权限)
需重启节点使配置生效。
2. 设置主机名与hosts文件
- 在每个节点上使用
hostnamectl
设置唯一主机名(如k8s-master
、k8s-node1
):sudo hostnamectl set-hostname < 节点主机名>
- 在所有节点的
/etc/hosts
文件中添加节点IP与主机名的映射(替换为实际IP):
示例(主节点IP为192.168.1.100,工作节点为192.168.1.101):echo "< 节点IP> < 节点主机名> " | sudo tee -a /etc/hosts
此配置便于节点间通过主机名通信。192.168.1.100 k8s-master 192.168.1.101 k8s-node1
3. 配置网络接口
为节点配置静态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
)。
4. 配置防火墙规则
若系统启用了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
或其他防火墙工具,需相应调整规则。
四、软件依赖准备
1. 安装Containerd容器运行时
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 # 启动并设置开机自启
2. 配置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 # 应用配置
3. 添加Kubernetes APT仓库
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
4. 安装Kubernetes核心工具
安装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
- 禁用SELinux(若系统启用):SELinux可能会干扰Kubernetes的容器运行,建议禁用(仅适用于Debian,默认未启用):
sudo setenforce 0 # 临时禁用 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久禁用
- 备份重要数据:部署前备份节点上的重要数据(如
/etc
、/var
目录),防止误操作导致数据丢失。
完成以上前期准备后,即可使用kubeadm init
初始化Master节点,并通过kubeadm join
将Worker节点加入集群。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 在Debian上部署K8S需要哪些前期准备
本文地址: https://pptw.com/jishu/727136.html