一.安装前的环境规划
1.集群类型
● Kubernetes集群大致分为两类:一主多从和多主多从。
● 一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。
● 多主多从:多台Master和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。
为了测试方便,本次搭建的是一主多从类型的集群。
2.安装方式
● kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包。
● ① minikube:一个用于快速搭建单节点的kubernetes工具。
● ② kubeadm:一个用于快速搭建kubernetes集群的工具。
● ③ 二进制包:从官网上下载每个组件的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效。
我们需要安装kubernetes的集群环境,但是又不想过于麻烦,所以选择kubeadm方式。
3.主机规划
本案例做一主两从的k8s集群。我买不起服务器,所以创了3台虚拟机来学习。大家要进行学习的话,创建好3台虚拟机,并且选择NAT连接。
下面的一些配置根据自己电脑vMnet8的网段(NAT模式需要保证虚拟机网段与VMnet 8一致!!!)来配置,不然无法上网,就更别谈安装k8s集群了。
我查看虚拟机的网络配置(你们可能会不一样,请按如下方式查看):
我们上面显示网段为192.168.172.0,所以配置网络时要把IP地址设为这个网段下的IP地址,网关也是如此。
(比如IP地址可以设置192.168.172.2 ~ 192.168.172.254之间的IP地址,默认网关为192.168.172.1,子网掩码255.255.255.0)
网关是不能随便配置的!比如你的网关是192.168.0.1,那么局域网内可设的ip就是192.168.0.2~192.168.0.254
如果你的网关是192.168.1.1,那么局域网内可设的ip就是192.168.1.2~192.168.1.254。
为了方便操作,我下面3台机器的IP地址和其他信息如下,供大家参考:
下面教大家如何安装时配置虚拟机的网络:
(1)点击网络和主机名
(2)点击配置按钮
(3)选择ipv4设置,进行如下的配置(再次提醒,下面的设置一定要根据自己电脑vMnet8的网段来设置,不要抄我的),然后保存。
223.5.5.5是阿里云的DNS。
(4)保存后如下,然后更改主机名:
然后就可以开始安装了。
其他两台以此类推,自己安装一下吧,有什么问题,我们评论区互动。
4.搭建流程
● ① 准备 3 台机器,要求网络互通(如果是云服务器,要求私网互通;如果是虚拟机,要求网络互通)。
● ② 在 3 台机器上安装 Docker 容器化环境。
● ③ 安装 Kubernetes :
○ 3 台机器安装核心组件:kubeadm(创建集群的引导工具)、kubelet 、kubectl(程序员使用的命令行)。
○ kubelet 可以直接通过容器化的方式创建出 Kubernetes 的核心组件,如:Controller Manager、Scheduler 等。
○ 由 kubeadm 引导创建 Kubernetes 集群。
二.Kubernetes集群的安装
1.Kubernetes 和 Docker 之间的版本对应关系
Kubernetes 和 Docker 之间是有版本对应关系的,这也是一开始我踩的坑之一。下面就教大家如何查看Kubernetes 和 Docker 之间的版本对应关系。
打开官方的文档,我们这次要安装kubernetes的版本是v1.21的版本。
我们找到点进去就能查看到对应安装的docker版本了。
从文档中,我们可以知道 Docker 的版本是 v20.10 ,对应的 Kubernetes 的版本是 v1.21 。
2.准备工作
(1)检查操作系统的版本和内核
cat /etc/redhat-release
用 kubeadm安装k8s集群,centos的版本得是7.5以上,不然可能会出问题。
查看当前系统的内核:
uname -sr
默认的内核版本 3.10.0 实在是太低了,建议升级一下。具体操作如下:
①在 CentOS 7.x 上启用 ELRepo 仓库:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
②查看可用的系统内核相关包,并安装最新主线内核版本::
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
yum -y --enablerepo=elrepo-kernel install kernel-ml
③设置默认的内核版本:
vim /etc/default/grub
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=0 # 修改此处,原来是 saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet" GRUB_DISABLE_RECOVERY="true"
④重新创建内核配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
⑤重启系统:
reboot
(2)如果是虚拟机则需要让三台机器互通,最简单的做法就是关闭防火墙。
systemctl stop firewalld
systemctl disable firewalld
如果是云厂商提供的云服务器则需要让三台机器的私有 IP 互通,还需要设置安全组策略放行指定的端口。
① Master 节点:
② Node 节点:
3)设置主机名
命令:
hostnamectl set-hostname <hostname>
示例如下:
# 192.168.172.101 hostnamectl set-hostname k8s-master
# 192.168.172.102 hostnamectl set-hostname k8s-node1
# 192.168.172.103 hostnamectl set-hostname k8s-node2