Atlantis
GitHub Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

1.2 系统配置

K3s本身是一个包含所有依赖的二进制文件,对RHEL/CentOS/Fedora和Debian/Ubuntu这两大家族的支持比较完善,我以使用 Debian 为主,以下的配置对其他系统也适用。

  1. 关闭 SELinux:可以使用 sestatus 命令检查,若命令不存在或者显示为 disabled 则表示SELinux已关闭。
  2. 配置防火墙:K3s 的 kube-proxy 组件需要操作 iptables 来开放端口、配置 SNAT、DNAT 等,如果不熟悉 iptables/ufw/firewalld,最好先关闭防火墙。
    1. 对于普通 VPS,通常不具备 VPC 网络,控制台也缺少在底层配置安全组的功能,建议使用命令行工具,入向只开放80、443以及 ssh 端口。
    2. 对于ECS、轻量应用服务器这种专业云厂家提供的虚机,可以关闭掉系统内的防火墙设置,将网络入向控制配置在安全组中,同样只建议开放80、443以及 ssh 端口。
  3. 修改 ssh 登录配置:ssh是最容易遭受攻击的服务,避开 K3s 默认的 NodePort 端口范围(30000~32767),选择一个 22 以外端口,再配置为只允许使用密钥登录,基本可以规避 ssh 安全问题。
  4. 调整系统最大文件描述符数量: Linux 系统最大文件描述符数量默认是 4096,单进程的上限默认是 1024,无脑配置一个 1 百万的上限可以解决 99% 的描述符问题。
  5. 调整内核参数:
    1. 调整文件描述符上限
    2. 开启 IPv4 转发,若需要使用 IPv6 则一并开启
    3. TCP优化,若需要在集群中部署一些网络工具,建议调整

我习惯将修改系统文件描述符的配置存放在 /etc/security/limits.d/optimize.conf,内容如下:

* soft     nproc          1048576
* hard     nproc          1048576
* soft     nofile         1048576
* hard     nofile         1048576
root soft     nproc          1048576
root hard     nproc          1048576
root soft     nofile         1048576
root hard     nofile         1048576

内核参数调整则习惯放在 /etc/sysctl.d/optimize.conf,内容如下:

# forward
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

# tcp optimization
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 16384
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 8192
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 87380 67108864
net.ipv4.tcp_mtu_probing = 1

# bbr
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_fastopen = 3

# file descriptor
fs.inotify.max_user_watches=524288
fs.file-max = 1048576
Linux系统会根据文件名字典序来应用配置,使用文件存放配置参数时,注意检查同文件夹下 99 开头的配置文件,里面可能有一些默认参数会覆盖我们配置。