rancher2.6部署k8s集群

1,176 阅读4分钟

一、计算机准备

我这里准备四台计算机。虚拟机,物理机,云服务器均可,各项配置尽可能高一些。这四台计算机应部署有Linux系统,且能互相通信。

机器名ip部署内容cpu核数内存(G)硬盘(G)
myCentOS7192.168.232.128rancher4720
k8s-node1192.168.232.129node4220
k8s-node2192.168.232.130node4220
k8s-master01192.168.232.131master4320

二、设置k8s安装前的计算机环境

以下设置需要在四台计算机上都完整地执行一次。

1.升级Linux内核到最新版

我使用的操作系统是CentOS7,默认的内核版本是3.10.0,升级内核的方法有多种。在这里介绍一种比较简便的方法。
依次运行以下命令:

#导入ELRepo仓库的公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#为yum安装ELRepo仓库
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#查看可用版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
#安装最新内核
yum --enablerepo=elrepo-kernel install kernel-ml
# 查看当前可用内核
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 
# 升级最新版本内核
grub2-set-default 0
# 重启系统
reboot

升级完成,可以通过uname -r命令进项验证版本。

2.设置时间同步

kubernetes要求集群中的节点时间必须精确一致,您可以同时运行一下date命令,检查一下几台机器的时间是否正常。如果正常,则可以跳过此步。
如果时间有异常,或者为了更稳妥一点,您可以设置一下时间同步。

yum install -y ntpdate #下载ntpdate
ntpdate ntp1.aliyun.com #更新系统时间

3.hostname设置

vim /etc/hostname 删除原有内容,输入主机名保存退出即可。

4.hosts设置

vim /etc/hosts 即可设置hosts。K8S集群一般包含多台计算机,hosts的内容应该包含集群内的所有机器。如:

image.png

5.关闭防火墙

# 关闭防火墙
systemctl stop firewalld
# 关闭防火墙开机启动
systemctl disable firewalld

6.禁用selinux

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

临时关闭:输入命令sudo setenforce 0。但重启系统后还会开启。
永久关闭(推荐):输入命令vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。

image.png

7.禁用swap分区

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

  • 启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备

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

# 临时
swapoff -a 
# 永久(推荐)
sed -ri 's/.*swap.*/#&/' /etc/fstab    

确认swap已经关闭

free -m

image.png

若swap行都显示 0 则表示关闭成功

8.配置linux的内核参数

  • 添加网桥过滤和地址转发功能,编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
sudo vi /etc/sysctl.d/kubernetes.conf
#添加如下内容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

重新加载配置,加载网桥过滤模块

modprobe br_netfilter && sysctl -p /etc/sysctl.d/kubernetes.conf

查看网桥过滤模块是否加载成功

lsmod | grep br_netfilter

image.png

9.配置ipvs功能

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

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

  • 安装ipset和ipvsadm
yum install ipset ipvsadmin -y
  • 添加需要加载的模块写入脚本文件
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
  • 为脚本文件添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
  • 执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
  • 查看对应的模块是否加载成功
lsmod | grep -e -ip_vs -e nf_conntrack

image.png

10.重启服务器

上面步骤完成之后,需要重新启动linux系统: reboot

三、安装docker

k8s基于docker容器环境,先安装docker:# linux下安装docker

四、# 部署rancher

1.Rancher简介

之前我们一直都是使用命令行来管理K8S的,这种做法虽然对程序员来说看起来很炫酷,但有时候用起来还是挺麻烦的。今天我们来介绍一个K8S可视化管理工具Rancher,使用它可以大大减少我们管理K8S的工作量,希望对大家有所帮助!

Rancher是为使用容器的公司打造的容器管理平台。Rancher简化了使用K8S的流程,开发者可以随处运行K8S,满足IT需求规范,赋能DevOps团队。

2.Rancher安装运行

docker run -p 80:80 -p 443:443 --name rancher --privileged --restart=unless-stopped -d rancher/rancher

本地没有镜像的话,会拉取远程,这里推荐一篇:docker镜像加速教程

3.配置Rancher

完成后,访问https://<部署主机的ip> ,进入rancher管理页面。

image.png

可以看到rancher的引导信息,提示你需要进行如下操作

# 找到您的容器ID
docker ps
# 找到密码
docker logs  ${container-id}  2>&1 | grep "Bootstrap Password:"

然后将查询到的字符串复制到Password文本框中,点击Log in with Local User。

image.png

如图所示,你可以自定义密码,然后勾选第二个箭头,完成点击继续。

image.png

按照如图的操作,可以设置为中文语言。

五、创建k8s集群

1.点击箭头处的创建。

image.png

2.点击自定义。

image.png

3.填写集群名字,并选择版本。

image.png

4.在“Advanced Options”中进行高级设置,比如:选择是否启用Nginx Ingress,我这里选择没有开启,主要是用不上。是否开启请根据您的需求来定。这个设置项后续可以点击rancher界面中此集群的升级按钮进行重新选择。

image.png

5.点击“Next”后,进入添加主机命令页面。

image.png

6.点选Etcd,Control Plan两个选项,然后复制下方的命令,到master节点执行。
点选Worker选项,然后复制下方的命令,到node节点执行。

image.png

当集群前面的状态变成Active时,就表示集群部署完成,可以点击集群的名称,进入集群详情页。

image.png

7.使用kubectl获取所有节点状态

image.png

至此,集群安装完毕!!!