debian

在Debian上部署K8S需要哪些前期准备

小樊
54
2025-10-14 18:45:15
栏目: 智能运维

Debian上部署K8s的前期准备

在Debian系统上部署Kubernetes(K8s)集群前,需完成硬件、系统、网络、软件及配置等多方面的准备工作,确保集群能稳定运行。

一、硬件要求

根据节点角色不同,硬件配置需满足以下最低要求(建议配置以满足生产环境需求):

二、系统版本要求

三、系统配置准备

1. 关闭Swap分区

Kubernetes 1.8及以上版本要求禁用Swap分区,否则kubelet无法正常启动。执行以下命令:

sudo swapoff -a  # 临时关闭Swap
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab  # 永久注释Swap行(需root权限)

需重启节点使配置生效。

2. 设置主机名与hosts文件
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仓库,需添加后才能安装kubeletkubeadmkubectl

# 添加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核心工具

安装kubeletkubeadmkubectl(Kubernetes集群部署与管理工具),并锁定版本(避免自动升级导致兼容性问题):

sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本

五、其他注意事项

完成以上前期准备后,即可使用kubeadm init初始化Master节点,并通过kubeadm join将Worker节点加入集群。

0
看了该问题的人还看了