k8s环境搭建 环境初始化

环境初始化

这里以三台主机为例,一台master节点,两台node节点

  • 检查操作系统版本,kubeadm要求版本在7.5以上

             cat /etc/redhat-release
    
  • 主机名解析,编辑三台服务器在 /etc/hosts 文件下,添加一下内容

 #主机名解析
cat >> /etc/hosts <<EOF
#你每台主机的IP地址 和你自己设置的主机名或者域名
IP1 master
IP2 node1
IP3 node2
EOF
  • 时间同步
#时间同步
#k8s要求集群中节点时间必须精确一致,这里直接使用chronyd 同步网络时间

systemctl start chronyd
systemctl enable chronyd
  • 关闭防火墙,k8s和docker运行过程中会产生大量的iptables规则,为了让系统不混淆,直接关闭规则
#关闭firewalld 
systemctl stop firewalld
systemctl disable firewalld
  • 禁用selinux

selinux时linux下的安全服务,如果不关闭可能在部署集群时,产生各种各样的问题

 sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config
  • 禁用swap分区

swap分区是指虚拟内存分区,作用是物理内存使用完之后,将磁盘空间虚拟成内存使用,启用swap分区会对系统性能产生负面影响

注释掉/etc/fstab

[root@vm1 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu May 18 03:22:16 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=f4523fee-7f93-4a46-b24c-e66979053a29 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
sed -i '/\/dev\/mapper\/centos-swap/s/^/#/' /etc/fstab
  • 修改linux内核参数,添加网桥过滤和地址转发功能

编辑/etc/sysctl.d/kubernetes.conf ,添加配置

echo "net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1 " >> /etc/sysctl.d/kubernets.conf
#重新加载配置
sysctl -p

#加载网桥过滤
modprobe br_netfilter 

#查看模块是否加载成功
lsmod | grep br_netfilter
  • 配置ipvs功能

k8s中service有两种代理模型,一种基于ipatbels,另一种基于ipvs,ipvs性能明显高于iptables,如果使用,需要手动载入ipvs模块

#配置ipvs功能

#安装ipset和ipvsadmin

yum install ipset ipvsadmin -y &>/dev/null

#添加需要加载的模块写入脚本

cat <<EOF > /etc/sysconfig/modules/ipvs.modules 
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

#为脚本添加可执行权限
chmod u+x /etc/sysconfig/modules/ipvs.modules


#执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules

#查看模块是否加载成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

整合脚本

#!/bin/bash

#设置你的主机名或者域名
echo "请输入你要设置的主机名或者域名 :"
read vm_name
hostnamectl set-hostname --static $vm_name


#安装vim编辑器
yum install -y vim 


#主机名解析
cat >> /etc/hosts <<EOF
#你每台主机的IP地址 和你自己设置的主机名或者域名 这几行都是可以你自己设置的
IP1 master
IP2 node1
IP3 node2
EOF


#时间同步
#k8s要求集群中节点时间必须精确一致,这里直接使用chronyd 同步网络时间

systemctl start chronyd
systemctl enable chronyd


#关闭firewalld 
systemctl stop firewalld
systemctl disable firewalld



#关闭selinux
sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config


#禁用swap分区
sed -i '/\/dev\/mapper\/centos-swap/s/^/#/' /etc/fstab


#修改linux内核参数,添加网桥过滤和地址转发功能

echo "net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1 " > /etc/sysctl.d/kubernets.conf 

#重新加载配置
sysctl -p

#加载网桥过滤
modprobe br_netfilter

#查看模块是否加载成功

if  !  lsmod | grep br_netfilter &>/dev/null; then
   echo "模块 br_netfilter 未成功加载"
else
   echo  "模块 br_netfilter 已成功加载"  
fi  


#配置ipvs功能

#安装ipset和ipvsadmin

yum install ipset ipvsadmin -y 

#添加需要加载的模块写入脚本

cat <<EOF > /etc/sysconfig/modules/ipvs.modules 
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

#为脚本添加可执行权限
chmod u+x /etc/sysconfig/modules/ipvs.modules


#执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules

#查看模块是否加载成功
echo "ipvs.modules 模块载入情况 : "
lsmod | grep -e ip_vs -e nf_conntrack_ipv4


#步骤完成后,需要重新启动linux系统

echo "脚本执行完毕,是否重启 [y/n] ?"
read choice 
if [ "$choice" ==  "y" ] ; then
   echo "重启"
   reboot
else 
   echo "稍后请你自行重启"
fi    

执行脚本时,赋予脚本权限并下载一个插件规范shell脚本的格式以免出错,再执行

yum install -y dos2unix
dos2unix [脚本名]

Gitee地址:

k8s环境初始化

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐