最近在学习K8S部署实验环境,把搭建环境分享下。
此文只是部署环境初始化工作。具体集群的构建后面分享。
只是学习环境只有一个主机。
实验环境:
操作系统:CentOS7.9.2009
master:192.168.111.101
node-1:192.168.111.104
node-2:192.168.111.105
每个节点都需要执行初始化脚本。
完整脚本文件请在文后获取:
1、设置系统主机名
read -p "请输入主机名:" hstn
hostnamectl set-hostname $hstn
2、 Host 文件各节点之间的相互解析
ifconfig
read -p "请输入本机IP:" localIP
echo "$localIP $hstn" >> /etc/hosts
3、配置yum阿里源加速
备份当前源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载新的CentOS-Base.repo到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 生成缓存
yum clean all && yum makecache
4、安装相关软件依赖包
有一些包不是安装K8S必须的,工作中用到的,就都写在这里了,安装K8S只需要第一行的包就可以了。
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools
git yum-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl-devel zip unzip sudo
zlib-devel iftop rsync ansible iotop htop automake autoconf libtool pcre pcre-devel nmap-ncat
5、防火墙配置
禁用firewalld防火墙
systemctl stop firewalld
systemctl disable firewalld
iptables服务配置
yum -y install iptables-services
systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
6、关闭swap分区并且设置永久关闭
关闭swap分区可以增强Kubernetes中pod的效率
swapoff -a && sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab
关闭SELINUX服务
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
7、为 K8S 来调整内核参数
设置内核参数文件
cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1 # 必须; 开启网桥模式
net.bridge.bridge-nf-call-ip6tables=1 # 必须; 开启网桥模式
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用swap空间; 只有当系统OOM时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963 # 设置文件句柄数量
fs.nr_open=52706963 # 设置文件的最大打开数量
net.ipv6.conf.all.disable_ipv6=1 # 必须; 关闭IPv6协议
net.netfilter.nf_conntrack_max=2310720
EOF
生效配置
sysctl -p /etc/sysctl.d/kubernetes.conf
8、调整系统时区
设置系统时区为中国/上海
timedatectl set-timezone Asia/Shanghai
将当前的UTC时间写入硬件时钟
timedatectl set-local-rtc 0
重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond
9、服务优化关闭rsyslogd服务和开启 systemd journald 服务
创建持久化保存日志的目录
mkdir /var/log/journal # 持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
[Journal]
# 持久化保存到磁盘
Storage=persistent
# 压缩历史日志
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst= 1000
# 最大占用空间 10G
SystemMaxUse=10G
# 单日志文件最大 200M
SystemMaxFileSize=200M
# 日志保存时间 2 周
MaxRetentionSec=2week
# 不将日志转发到 syslog
ForwardToSyslog=no
EOF
重启日志系统
systemctl restart systemd-journald
10、升级系统内核版本
安装Elrepo源
由于CentOS7自带的内核版本为3.10.x的系列,可能会导致运行k8s有bug
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
在线安装内核
yum --enablerepo=elrepo-kernel install kernel-lt -y
设置开机从新内核启动
安装完成后检查/boot/grub2/grub.cfg中,查看内核启动顺序。
awk -F' '$1=="menuentry " {print $2}' /etc/grub2.cfg
手动选择启动顺序为0 表明第一个,根据时间顺序选择。
grub2-set-default 0
11、 kube-proxy 开启 ipvs 的配置
加载内核对应模块
modprobe br_netfilter
写对应配置模块脚本
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
EOF
引导ipvs相关依赖模块加载
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules
lsmod | grep -e ip_vs -e nf_conntrack_ipv
重启后请确定模块是否被引导
12、安装Docker
安装相关驱动
yum install -y yum-utils device-mapper-persistent-data lvm
添加docker源,采用阿里源
yum-config-manager
--add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
卸载已安装的docker
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
安装docker服务
yum update -y && yum install -y docker-ce docker-ce-cli containerd.io bash-completion
创建对应目录
mkdir -p /etc/docker
mkdir -p /etc/systemd/system/docker.service.d
配置daemon文件
graph :指定docker文件保存位置
registry-mirrors:使用的阿里云加速,大家可以使用自己的
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://d9okj3fi.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"graph": "/Data/Docker",
"storage-opt": [ "dm.basesize=20G" ],
"log-opts": {
"max-size": "100m"
}
}
EOF
重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
初始化完成,重新启动系统
环境初始化完成后,就可以开始部署kubernetes集群。下期分享。
完整脚本获取:
https://www.aliyundrive.com/s/U7wvUEwKYwJ
Kubernetes集群实验环境构建(v1.23.8)
















- 最新
- 最热
只看作者