kubernetes安装时的系统优化设置

你想要了解在安装 Kubernetes(K8s)前对 Linux 系统进行的关键优化设置,这些设置是保障 K8s 集群稳定运行的核心前提,我会按基础系统配置、内核参数优化、容器运行时依赖、安全与权限配置四个维度,给出可直接执行的操作步骤和解释。

核心前提说明

以下优化适用于 CentOS 7/8、RHEL 7/8、Ubuntu 20.04/22.04 等主流发行版,所有操作建议以 root 用户执行,且需在所有集群节点(master/worker) 上完成。


一、基础系统配置(必做)

1. 关闭防火墙(或按需放行端口)

K8s 节点间需要大量端口通信,生产环境建议按需放行端口,测试环境可直接关闭:

# CentOS/RHEL
systemctl stop firewalld
systemctl disable firewalld

# Ubuntu/Debian
systemctl stop ufw
systemctl disable ufw

2. 关闭 SELinux

SELinux 会限制容器对系统资源的访问,需临时关闭并永久禁用:

# 临时关闭
setenforce 0

# 永久关闭(重启生效)
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

3. 关闭 Swap 交换分区

K8s 要求关闭 Swap(避免性能损耗和调度异常):

# 临时关闭
swapoff -a

# 永久关闭(注释swap分区行,重启生效)
sed -i '/swap/s/^/#/' /etc/fstab

4. 禁用无用服务

关闭 postfix 等无关服务,减少资源占用:

systemctl stop postfix
systemctl disable postfix

5. 配置主机名与 hosts(关键)

确保各节点主机名唯一,并配置 hosts 解析(避免 DNS 依赖):

# 1. 设置主机名(示例:master节点)
hostnamectl set-hostname k8s-master

# 2. 配置/etc/hosts(所有节点)
cat >> /etc/hosts << EOF
192.168.1.100 k8s-master
192.168.1.101 k8s-worker01
192.168.1.102 k8s-worker02
EOF

二、内核参数优化(针对 K8s 网络/容器)

1. 配置内核转发与网桥参数

创建内核参数配置文件,开启网络转发和网桥支持(K8s 网络必备):

cat > /etc/sysctl.d/k8s.conf << EOF
# 开启IPv4转发
net.ipv4.ip_forward = 1
# 关闭IPv6(可选,若不需要IPv6)
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# 网桥参数(解决calico/flannel网络问题)
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
# 优化端口范围(避免端口耗尽)
net.ipv4.ip_local_port_range = 1024 65535
EOF

# 加载配置
sysctl --system

2. 加载必要内核模块

确保 overlay、br_netfilter 等容器/网络模块加载:

cat > /etc/modules-load.d/k8s.conf << EOF
overlay
br_netfilter
EOF

# 立即加载模块
modprobe overlay
modprobe br_netfilter

# 验证模块加载
lsmod | grep -E 'overlay|br_netfilter'

三、容器运行时依赖优化

1. 配置系统资源限制(针对容器)

调整系统最大文件打开数、进程数等限制(避免容器运行时报错):

cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF

# 生效配置(无需重启)
ulimit -n 65535
ulimit -u 65535

2. 配置时区与时间同步

K8s 集群节点时间必须一致,否则证书、调度会出问题:

# 设置时区为上海
timedatectl set-timezone Asia/Shanghai

# 安装并启动chrony(时间同步服务)
# CentOS
yum install -y chrony
# Ubuntu
apt install -y chrony

systemctl start chronyd
systemctl enable chronyd

# 验证时间同步
chronyc sources

四、安全与权限优化(可选但推荐)

1. 禁用 root 远程登录(生产环境)

sed -i 's/^PermitRootLogin yes$/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd

2. 配置 K8s 相关目录权限

确保容器运行时、K8s 数据目录权限正确:

# 针对containerd(示例)
mkdir -p /etc/containerd
chmod 700 /etc/containerd

# 针对K8s数据目录
mkdir -p /var/lib/kubelet
chmod 700 /var/lib/kubelet

五、验证优化效果

执行以下命令,确认所有配置生效:

# 1. 验证Swap关闭
swapon --show  # 无输出则正确

# 2. 验证SELinux关闭
getenforce  # 输出Disabled或Permissive则正确

# 3. 验证内核转发
sysctl net.ipv4.ip_forward  # 输出net.ipv4.ip_forward = 1则正确

# 4. 验证文件限制
ulimit -n  # 输出65535则正确

总结

  1. 核心基础优化:关闭防火墙/SELinux/Swap、配置主机名/hosts是K8s安装的必做项,缺一不可;
  2. 内核与网络优化:开启IP转发、加载网桥模块、调整内核参数是保障K8s网络(Calico/Flannel)正常运行的关键;
  3. 资源与时间优化:调整文件打开数、配置时间同步,可避免容器运行时资源不足、时间不一致导致的各类异常。
posted @ 2026-03-06 11:47  wuyingchun1987  阅读(2)  评论(0)    收藏  举报