【K8s生产环境】集群节点操作系统配置要求

OS版本:Ubuntu 18.04 LTS

确保每个节点上 MAC 地址和 product_uuid 的唯一性

  • 你可以使用命令 ip link 或 ifconfig -a 来获取网络接口的 MAC 地址
  • 可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令对 product_uuid 校验

禁用交换分区

sudo swapoff -a
sudo sed -i 's/.*swap.*/#&/' /etc/fstab

允许 iptables 检查桥接流量及系统调优

确保 br_netfilter 模块被加载。这一操作可以通过运行 lsmod | grep br_netfilter 来完成。若要显式加载该模块,可执行 sudo modprobe br_netfilter。

为了让你的 Linux 节点上的 iptables 能够正确地查看桥接流量,你需要确保在你的 sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1。例如:

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.core.somaxconn = 32768
net.ipv4.ip_local_port_range 1024 65000
EOF
sudo sysctl --system

配置Docker容器运行时(可选)

1.配置 Docker 守护程序,尤其是使用 systemd 来管理容器的 cgroup。

sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "data-root": "/mnt/docker-data",
  "storage-driver": "overlay2"
}
EOF

说明:对于运行 Linux 内核版本 4.0 或更高版本,或使用 3.10.0-51 及更高版本的 RHEL 或 CentOS 的系统,overlay2是首选的存储驱动程序。

2.重新启动 Docker 并在启动时启用:

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

启用IPVS必要模块(kube-proxy使用IPVS代理模式时)

# 安装IPVS管理工具
sudo apt-get install -y ipset ipvsadm
# 启用模块
sudo modprobe ip_vs
sudo modprobe ip_vs_rr
sudo modprobe ip_vs_wrr
sudo modprobe ip_vs_lc
sudo modprobe ip_vs_dh
sudo modprobe ip_vs_sh
sudo modprobe ip_vs_sed
sudo modprobe ip_vs_nq
sudo modprobe nf_conntrack
# 开机启动模块
cat <<EOF | sudo tee /etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_lc
ip_vs_dh
ip_vs_sh
ip_vs_sed
ip_vs_nq
nf_conntrack
EOF

安全配置

cat <<EOF | sudo tee /etc/security/limits.d/k8s.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft memlock  unlimited
* hard memlock  unlimited
EOF
posted @ 2021-08-10 08:50  Varden  阅读(1282)  评论(0编辑  收藏  举报