Perfree

Perfree

Perfree

简简单单的生活,安安静静的写博客~

54 文章数
72 评论数

K8S学习-环境搭建

perfree
2023-04-29 / 0 评论 / 1002 阅读 / 0 点赞

在主机搭建时,选择了一主三从的配置,需要4台服务器,这里学习使用了虚拟机来完成,使用VMware安装4台centos虚拟机,本文详细记录了安装过程及初始环境的配置

安装虚拟机

虚拟机系统为centos7,镜像下载地址https://mirrors.tuna.tsinghua.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2207-02.iso
首先,使用VMware创建新的虚拟机,直接下一步

选择稍后安装系统

选择linux centos7

命名虚拟机并选择位置,这里我已经安装过master的系统了,4台服务器系统的安装过程一样,直接拿这个参考就行

分配磁盘大小50G

自定义硬件

内存修改到2GB

处理器分配两个核心

完成

编辑虚拟机指定iso镜像文件

进入虚拟机回车开始安装

选择简体中文

软件选择基础设施服务器

安装源选择本地介质

安装位置里选择自动配置分区

配置网络和主机名

修改主机名

开始安装

设置root密码

等待安装完成重启进入系统即可,4台虚拟机都是相同的操作

环境初始化

这里推荐一个远程工具MobaXterm,可同时操作多台服务器,使用这个工具可以大量的节省我们的时间https://mobaxterm.mobatek.net/download-home-edition.html

  1. 检查操作系统版本
# kubernetes集群要求centos版本在7.5或以上
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
  1. 主机名解析
    为了方便后续集群节点间的直接调用,需要配置下主机名解析,企业中推荐使用内部dns服务器
# 编辑三台服务器/ets/hosts文件,增加以下内容
192.168.145.100 master
192.168.145.101 node1
192.168.145.102 node2
  1. 时间同步
    kuberbetes要求集群中的节点时间必须精确一致,这里直接使用chronyd服务从网络同步时间,企业中建议配置内部的时间同步服务器
# 启动chronyd服务
[root@master ~]# systemctl start chronyd
# 设置chronyd服务开机自启
[root@master ~]# systemctl enable chronyd
#chronyd服务启动稍等几秒钟,就可以使用date命令验证时间了
[root@master ~]# date
2023年 04月 29日 星期六 11:30:27 CST

可以观察下多台服务时间是否一致

4. 禁用iptables和firewalld服务
kubernets和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则,生产环境中慎重操作

#  关闭firewalld服务
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
# 关闭iptables服务
[root@master ~]# systemctl stop iptables
[root@master ~]# systemctl disable iptables
  1. 禁用selinux
    selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题
# 编辑/etc/selinux/config文件,修改SELINUX的值为disabled
# 注意修改完毕之后需要重启linux服务
SELINUX=disbled
  1. 禁用swap分区
    swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟城内存来使用,启用swap设备会对系统的性能产生非常负面的影响,因此kubernets要求每个节点都要禁用swap设备,但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明
# 编辑分区配置文件/etc/fstab,注释调swap分区一行
# 注意修改完毕之后需要重启linux服务
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=3f5b742e-2dd9-42cd-87fd-e7ff787eb1e8 /boot                   xfs     defaults        0 0
# /dev/mapper/centos-swap swap                    swap    defaults        0 0
  1. 修改linux的内核参数
# 修改linux的内核参数,添加网桥过滤和地址转发功能
# 添加并编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# 重新加载配置
[root@node2 ~]# sysctl -p
# 加载网桥过滤模块
[root@node2 ~]# modprobe br_netfilter
# 查看网桥过滤模块是否加载成功
[root@node2 ~]# lsmod | grep br_netfilter
br_netfilter           22256  0
bridge                151336  1 br_netfilter
  1. 配置ipvs功能
    在kubernetes中service有两种代理模型,一种基于iptables的,一种是基于ipvs的,两者比较的话,ipvs的性能明显要高一些,但是如果使用它,需要手动载入ipvs模块
# 安装ipset和ipvsadm
[root@master ~]# yum install ipset ipvsadmin -y
# 添加需要加载的模块写入脚本文件
[root@master ~]# 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
# 为脚本文件添加执行权限
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules
# 执行脚本文件
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules
# 查看对应的模块是否加载成功
[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
nf_conntrack_ipv4      15053  0
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
ip_vs_sh               12688  0
ip_vs_wrr              12697  0
ip_vs_rr               12600  0
ip_vs                 145458  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  2 ip_vs,nf_conntrack_ipv4
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack
  1. 重启系统
    执行完上述操作后,需要重启linux刺痛
[root@master ~]# reboot

启动完毕后,验证上述操作是否生效

# 验证selinux
[root@node1 ~]# getenforce
Disabled
# 验证swap分区
[root@node1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819         154        1484           9         180        1515
Swap:             0           0           0

至此,虚拟机安装及环境初始化完毕

文章不错,扫码支持一下吧~
上一篇 下一篇
评论
来首音乐
最新回复
光阴似箭
今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月