k8s基础系统环境,适用于手动安装
0. 基础环境,适用于手动安装
虽然发行版不同,但是管理方式大多一致,以下未标注发行版,则为通用命令。
Centos镜像:清华源 根据官方指路,使用的2207,默认2009
Rocky镜像:科大源
Debian镜像:清华源
Ubuntu镜像:清华源
1. 配置静态IP
在系统安装时,可引导配置 net.ifnames=0 biosdevname=0
使用旧的命名方式,网卡名为 eth0;其次,静态IP也可以在安装的时候直接配置。
RHEL 系
该命令来源是NetworkManager,从7.x已经预置,9.x默认
nmcli c modify eth0 \
ipv4.addresses 192.168.80.100/24 \
ipv4.gateway 192.168.80.254 \
ipv4.dns 223.5.5.5 \
ipv4.method manual
nmcli c up eth0
# ifdown eth0 ; ifup eth0
Debian系
没有通用的命令,或者自行安装工具,如NetworkManager、netplan
Debian
# vi /etc/network/interfaces
iface eth0 inet static
address 172.16.99.52
netmask 255.255.255.0
gateway 172.16.99.254
重启网络服务生效
Ubuntu
# vi /etc/netplan/00-installer-config.yaml ;如果没得文件,可以用 netplan generate 生成
network:
ethernets:
ens18:
dhcp4: no
addresses: [172.16.99.53/24]
gateway4: 172.16.99.254
nameservers:
addresses: [223.5.5.5]
version: 2
加载服务 netplan apply
2. 修改主机名
虚拟机安装,考虑制作为模板,可后期再做此操作
hostnamectl set-hostname k8single
3. 修改 hosts 文件
当前一张网卡,一个主机IP;如果多网卡,此处配置集群使用IP网段;可使用vim编辑,将规划地址一次性写入
echo -e "$(hostname -I) $(hostname)" >> /etc/hosts
4. 配置时间同步
# 举个例子,自行替换,或者手动编辑
sed -i 's/0.centos.pool.ntp.org/ntp.aliyun.com/g' /etc/chrony.conf
sed -i 's|.*centos.pool.ntp.org iburst||' /etc/chrony.conf
# 重启服务
systemctl restart chronyd
# 设置时区
timedatectl set-timezone Asia/Shanghai
timedatectl set-ntp true
timedatectl set-local-rtc 0
chronyc -a makestep
5. 【可选】配置系统镜像源
RHEL系
红帽系因为默认有 fastmirrors 的加持,所以不配置并不太影响使用;目前阿里云有限速,建议使用其他厂商或者院校的镜像源。Debian系建议配置~
cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo
yum clean all
yum makecache
Debian系
Debian12
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
Ubuntu22
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
6. 红帽系,关闭selinux;Debian默认没有该功能
setenforce 0
sed -ri 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
7.【可选】关闭防火墙
直接关闭防火墙比较省事,在有安全组和物理安全设备的情况下,系统防火墙可关闭;或者放通需要的 IP 段
# 红帽系
systemctl disable --now firewalld
# Ubuntu
systemctl disable --now ufw
8. 关闭swap
kubelet 自 v1.22 起已开始支持交换分区。自 v1.28 起,仅针对 cgroup v2 支持交换分区; kubelet 的 NodeSwap 特性门控处于 Beta 阶段,但默认被禁用。
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a && sysctl -w vm.swappiness=0
9. 内核升级
centos 7
目前使用的主流发行版,内核版本均较高,仅 centos 7 需要升级。Ubuntu 20.04+ 内核已经在 5.4
yum install -y yum-utils deltarpm
yum-config-manager --enable centos-kernel
yum update -y
# 重启,清理旧内核信息
reboot
# package-cleanup --oldkernels 清理旧内核,不会清理原始内核,即初始安装内核无法删除
yum remove -y $(rpm -qa|grep kernel | grep -v $(uname -r))
10. 安装常用软件包
RHEL系
yum install -y conntrack ipvsadm ipset jq psmisc iptables curl sysstat libseccomp wget telnet vim net-tools git
Debian系
apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates wget vim git
11. 系统优化
-
文件句柄优化
ulimit -SHn 65535 cat <<EOF >> /etc/security/limits.conf * soft nofile 655360 * hard nofile 131072 * soft nproc 655350 * hard nproc 655350 * soft memlock unlimited * hard memlock unlimited EOF
-
内核优化
cat > /etc/sysctl.d/k8s.conf <<EOF net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 fs.may_detach_mounts = 1 vm.overcommit_memory=1 vm.panic_on_oom=0 fs.inotify.max_user_watches=89100 fs.inotify.max_user_instances=8192 fs.file-max=52706963 fs.nr_open=52706963 net.ipv6.conf.all.disable_ipv6=1 net.netfilter.nf_conntrack_max=2310720 net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl =15 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_max_orphans = 327680 net.ipv4.tcp_orphan_retries = 3 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.ip_conntrack_max = 65536 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_timestamps = 0 net.core.somaxconn = 16384 EOF
-
ipvs 配置 【可后期从iptables切换到ipvs时再配置】
cat > /etc/modules-load.d/ipvs.conf <<EOF ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp ip_vs_sh nf_conntrack ip_tables ip_set xt_set ipt_set ipt_rpfilter ipt_REJECT ipip EOF
-
containerd 配置
cat > /etc/modules-load.d/containerd.conf <<EOF overlay br_netfilter EOF
-
校验
# 加载 sysctl --system # 检查,可以重启后再检查一次 lsmod | grep -e ip_vs -e nf_conntrack # 如果报错,手动加载测试 #modprobe br_netfilter #modprobe ip_conntrack systemctl enable --now systemd-modules-load.service
本文来自博客园,作者:虫祇,转载请注明原文链接:https://www.cnblogs.com/chongxs/p/18098992/k8s-basic-environment