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. 系统优化

  1. 文件句柄优化

    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
    
  2. 内核优化

    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
    
  3. 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
    
  4. containerd 配置

    cat > /etc/modules-load.d/containerd.conf <<EOF
    overlay
    br_netfilter
    EOF
    
  5. 校验

    # 加载
    sysctl --system
    # 检查,可以重启后再检查一次
    lsmod | grep -e ip_vs -e nf_conntrack
    # 如果报错,手动加载测试
    #modprobe br_netfilter
    #modprobe ip_conntrack
    
    systemctl enable --now systemd-modules-load.service
    

posted @ 2024-03-27 13:54  虫祇  阅读(64)  评论(0编辑  收藏  举报