本章节主要介绍如何搭建kubernetes的集群环境

一、环境规划

1.1 集群类型

kubernetes集群大体上分为两类: 一主多从和多主多从

  • 一主多从: 一台Master节点和多台Node节点,搭建简单,但是有单机故障风险(master故障时),适合用于测试环境

  • 多主多从: 多台Master节点和多台Node节点,搭建麻烦,安全性高,适合用于生产环境

说明: 为了演示简单,本次搭建的是 一主两从 类型的集群

1.2 安装方式

kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包

  • minikube:一个用于快速搭建单节点kubernetes的工具

  • kubeadm:一个用于快速搭建kubernetes集群的工具

  • 二进制包:从官网下载每个组件的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效

说明: 现在需要安装kubernetes的集群环境,不想过于麻烦,所以选择使用kubeadm方式

1.3 主机规划
作用IP地址操作系统配置
Master192.168.28.134Centos7.9 基础设施服务器2颗CPU 2G内存50G硬盘
Node1192.168.28.135Centos7.9 基础设施服务器2颗CPU 2G内存50G硬盘
Node2192.168.28.136Centos7.9 基础设施服务器2颗CPU 2G内存50G硬盘

二、虚拟机准备

本次环境搭建需要安装三台Centos服务器 (一主二从)

2.1 主机安装

安装虚拟机过程中注意下面选项的设置:

  • 硬盘(50G)

  • 操作系统环境: CPU (2C)

  • 内存(2G)

  • 语言选择:中文简体

  • 软件选择:基础设施服务器

  • 分区选择: 自动分区

  • 网络配置: 按照下面配置网路地址信息

cd /etc/sysconfig/network-scripts
vi ifcfg-ens33
​
网络地址: 192.168.28.134(每台主机都不一样 分别为134、135、136)
子网掩码: 255.255.255.0
默认网关: 192.168.28.2
DNS:223.5.5.5

三、基础环境准备

3.1 检查操作系统版本
# 此方式下安装kubernetes集群要求Centos版本要在7.5或之上
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
3.2 主机名解析

为了方便后面集群节点间的直接调用,在这配置一下主机名解析,企业中推荐使用内部DNS服务器

#主机名解析 编辑三台服务器的/etc/hosts文件,添加下面内容
​
192.168.28.134 master
192.168.28.135 node1
192.168.28.136 node2
3.3 时间同步

kubernetes要求集群中的节点时间必须精确一致,这里直接使用chronyd服务从网络同步时间。企业中建议配置内部的时间同步服务器

#启动chronyd服务
[root@master ~]# systemctl start chronyd
#设置chronyd服务开机自启
[root@master ~]# systemctl enable chronyd
#chronyd服务启动稍等几秒钟,就可以使用date命令验证时间了
[root@master ~]# date
3.4 禁用iptables和firewalld

kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

systemctl stop firewalld
systemctl stop iptables.service
systemctl disable firewalld
systemctl disable iptables.service
3.5 禁用selinux

selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇酶问题

# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disabled
# 注意修改完毕之后需要重启linux服务
SELINUX=disabled
3.6 禁用swap分区

swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用

kubernetes要求每个节点都要禁用swap设备(以防性能影响)

但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

# 编辑分区配置文件/etc/fstab,注释掉swap分区一行
# 注意修改完毕之后需要重启linux服务
​
# /dev/mapper/centos-swap swap
3.7 修改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
​
# 编辑/etc/sysctl.d/k8s.conf
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
​
#重新加戟配置
[root@master ~]# sysctl -p
[root@master ~]# sysctl --system
​
# 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter
​
# 查看网桥过滤模块是否加成功
[root@master ~]# lsmod | grep br_netfilter
3.8 配置ipvs功能

在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的

两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块

# 1 安装ipset和ipvsadm
[root@master ~]# yum install ipset ipvsadm ipvsadmin -y

# 2 添加需要加载的模块写入脚本文件(高内核采用nf_conntrack,否则采用nf_conntrack_ipv4)
[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
modprobe -- nf_conntrack
EOF

#3 为脚本文件添加执行权限
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

# 4 执行脚本文件
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules

# 5查看对应的模块是否加载成功
[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
3.9 重启服务器

reboot

更多推荐