【二进制部署k8s-1.29.4】一、安装前软件准备及系统初始化

文章目录

简介

本章节主要讲解在安装部署k8s-1.29.4环境之前的一些软件、环境调优的准备工作,本篇采用k8s二进制安装的方式进行部署,该环境是根据在用的一个30节点左右的k8s集群部署流程进行文章整理。

一.资源及软件准备

1.1.机器资源信息

资源说明:列出其中一部分IP和资源,集群规模大概在30个节点左右,单台机的配置大概是24核192G,2T的盘。

角色 ip 主机名
master 10.16.120.81 pc-k8s-master-vm120-81
master 10.16.120.82 pc-k8s-master-vm120-82
master 10.16.120.83 pc-k8s-master-vm120-83
worker 10.16.120.84 pc-k8s-master-vm120-84
worker 10.16.120.85 pc-k8s-master-vm120-85
1.2.软件列表

软件版本说明,可以根据软件版本及指引提前将软件进行下载准备,将以下用到的软件下载在一个统一的目录下,并上传到master节点上去。

软件 版本 说明 备注
系统 unbutu-22.4 内核:5.15 https://www.kernel.org/
kubernetes v1.29.4 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md
etcd v3.5.13 https://github.com/etcd-io/etcd/releases
containerd v1.7.16 下载cri版的cri-containerd-1.7.16-linux-amd64.tar.gz https://github.com/containerd/containerd/releases/
cilium v1.15.4 https://github.com/cilium/cilium
ingress v1.10.1 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.1/deploy/static/provider/cloud/deploy.yaml
coredns v1.11.2 coredns v1.11.2
metallb v0.14.5 https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml
cfssl v1.6.1 https://github.com/cloudflare/cfssl
helm v3.14.4 https://github.com/helm/helm/releases/latest
1.2.网络规划

软件说明:

名称 网段 备注
apiserver-vip 10.16.120.80
service网段 10.1.0.0/16
pod网段 10.2.0.0/16
coredns的service IP 10.1.0.2
1.2.安装路径

软件说明:

名称 路径 备注
kubernetes /opt/kubernetes/{conf,bin,ssl,logs}
etcd /opt/etcd/{conf,bin,ssl,logs}
containerd /etc/containerd/config.toml

二.系统初始化环境

2.1.内核升级

内核升级说明:

复制代码
当前内核:5.15.0-107-generic    
升级内核:6.6.30-060630.202405021537
cilium要求内核 Kernel >= 5.15

下载ubuntu-mainline-kernel脚本更新
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh

第一步:sudo ubuntu-mainline-kernel.sh -r 查看可用内核版本。
第二步:选择一个版本 :sudo ubuntu-mainline-kernel.sh -i v6.2.0
第三步:执行:sudo apt --fix-broken install
第四步:sudo reboot
第五步:查看当前系统内核:dpkg --list|egrep "linux-image|linux-header"
第六部:删除旧内核:sudo apt-get purge linux-image-5.4.0-42-generic

更新包:
第一步:检查系统更新 $ sudo apt update
第二步:列出需要更新的软件包 $ sudo apt list --upgradable
第三步:更新 $ sudo apt upgrade -y
第四部:sudo apt --fix-broken install
2.2.软件安装

软件安装说明:

sudo apt-get install wget vim net-tools jq telnet lvm2 git tar curl nfs-kernel-server chrony ipvsadm ipset sysstat conntrack -y

2.2.系统初始化

1.禁用防火墙

复制代码
ufw disable
sudo ufw status

2.关闭swap

复制代码
swapoff -a 
sed -ri 's/.*swap.*/#&/' /etc/fstab

3.设置时间同步,检查时区、设置成24小时制

复制代码
timedatectl status
timedatectl set-timezone Asia/Shanghai

执行timedatectl status结果如下:
Local time: Thu 2024-05-09 18:30:02 CST
           Universal time: Thu 2024-05-09 10:30:02 UTC
                 RTC time: Thu 2024-05-09 10:30:02
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

4.修改dns,一行一条命令

复制代码
echo "`date +%Y-%m-%dT%H:%M:%S` change dns"
sed -i 's#192.168.11.228#192.168.238.75#g' /etc/netplan/00-installer-config.yaml
netplan apply
sed -i 's#\#DNS=.*#DNS=192.168.238.75#' /etc/systemd/resolved.conf
systemctl restart systemd-resolved
systemctl enable systemd-resolved

5.先检查编码相关配置,没有的话,编辑/etc/default/locale并添加如下信息

复制代码
LANG=en_US.UTF-8
LC_TIME=en_DK.UTF-8
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8

6.在/etc/hosts中配置主机名的映射

10.16.120.81 yt-pcauto-k8s.pc.com.cn #域名对应的是apiserver的vip,当配置好vip以后,改解析到正确的vip上

10.16.120.81 yt-pcauto-k8s-16-120-81

10.16.120.82 yt-pcauto-k8s-16-120-82

10.16.120.83 yt-pcauto-k8s-16-120-83

10.16.120.84 yt-pcauto-k8s-16-120-84

2.2.内核模块配置

配置一些需要的内核模块

bash 复制代码
一.
cat >> /etc/modules-load.d/ipvs.conf <<EOF
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF

二.
systemctl restart systemd-modules-load.service

三.
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

配置后执行:lsmod | grep -e ip_vs -e nf_conntrack 结果如下:

复制代码
ip_vs_sh 16384 0
ip_vs_wrr 16384 0
ip_vs_rr 16384 0
ip_vs 155648 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack 139264 1 ip_vs
nf_defrag_ipv6 24576 2 nf_conntrack,ip_vs
nf_defrag_ipv4 16384 1 nf_conntrack
libcrc32c 16384 4 nf_conntrack,btrfs,raid456,ip_vs
2.3.内核参数优化

内核参数优化

复制代码
cat <<EOF >> /etc/sysctl.conf
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_max_syn_backlog = 20480
net.core.somaxconn = 102400
net.core.netdev_max_backlog = 32768
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv6.conf.all.forwarding = 1
EOF

文件句柄调优

复制代码
cat >> /etc/security/limits.conf <<EOF
* soft nofile 655350
* hard nofile 655350
* soft nproc 20480
* hard nproc 20480
EOF

sed -i 's#\#DefaultLimitNOFILE=.*#DefaultLimitNOFILE=1024000#' /etc/systemd/system.conf
sed -i 's#\#DefaultLimitNPROC=#DefaultLimitNPROC=1024000#' /etc/systemd/system.conf
sed -i 's#\#DefaultLimitCORE=#DefaultLimitCORE=infinity#' /etc/systemd/system.conf
相关推荐
xuanzdhc14 分钟前
Linux 基础IO
linux·运维·服务器
愚润求学20 分钟前
【Linux】网络基础
linux·运维·网络
bantinghy1 小时前
Linux进程单例模式运行
linux·服务器·单例模式
小和尚同志2 小时前
29.4k!使用 1Panel 来管理你的服务器吧
linux·运维
帽儿山的枪手2 小时前
为什么Linux需要3种NAT地址转换?一探究竟
linux·网络协议·安全
shadon1789 天前
回答 如何通过inode client的SSLVPN登录之后,访问需要通过域名才能打开的服务
linux
小米里的大麦9 天前
014 Linux 2.6内核进程调度队列(了解)
linux·运维·驱动开发
退役小学生呀9 天前
三、kubectl使用详解
云原生·容器·kubernetes·k8s
算法练习生9 天前
Linux文件元信息完全指南:权限、链接与时间属性
linux·运维·服务器
忘了ʷºᵇₐ9 天前
Linux系统能ping通ip但无法ping通域名的解决方法
linux·服务器·tcp/ip