设置k8s安装前的计算机环境
如果有多台实例,需要在每个系统中做一下配置
1. 升级Linux内核到最新版
Centos7为例,依次运行以下命令:
#导入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的内容应该包含集群内的所有机器。如:
5. 关闭防火墙
# 关闭防火墙
systemctl stop firewalld
# 关闭防火墙开机启动
systemctl disable firewalld
6. 禁用selinux
selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题。
临时关闭:输入命令sudo setenforce 0
。但重启系统后还会开启。
永久关闭(推荐
):输入命令vi /etc/selinux/config
,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。
7. 禁用swap分区
- swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用
- 启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备
- 但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明
# 临时
swapoff -a
# 永久(推荐)
sed -ri 's/.*swap.*/#&/' /etc/fstab
确认swap已经关闭
free -m
若swap行都显示 0 则表示关闭成功
8. 配置linux的内核参数
这步在部署rancher的时候是必须的配置,不然启动会报错
- 添加网桥过滤和地址转发功能,编辑/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
重新加载配置,加载网桥过滤模块
bash
复制代码
modprobe br_netfilter && sysctl -p /etc/sysctl.d/kubernetes.conf
查看网桥过滤模块是否加载成功
lsmod | grep br_netfilter
9.配置iptables和ipvs功能
配置iptables(必须配置,不然k3s启动报错)
Add both modules to the file
sudo cat<<EOF >/etc/modules-load.d/modules.conf
iptable_nat
iptable_filter
EOF
and reboot your host"
sudo reboot
在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
10. 重启服务器
上面步骤完成之后,需要重新启动linux系统: reboot
安装docker
Docker官方和国内daocloud都提供了一键安装的脚本,使得Docker的安装更加便捷。
官方
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
国内
curl -sSL https://get.daocloud.io/docker | sh
执行上述任一条命令,耐心等待即可完成Docker的安装。
如果是特殊版本的系统,比如:alinux,请按照官方的安装教程进行安装:docs.docker.com/engine/inst…
启动命令sudo systemctl start docker
设置docker
开机启动 sudo systemctl enable docker
通过运行hello-world镜像来验证是否正确安装了Docker
// 拉取镜像
sudo docker pull hello-world
// 执行hello-world
sudo docker run hello-world
如下所示,安装启动成功
部署rancher
安装rancher
docker run -d --name rancher --restart=unless-stopped --privileged -p 80:80 -p 443:443 -v /opt/docker/rancher/core:/var/lib/rancher/ -v /opt/docker/rancher/auditlog:/var/log/auditlog -v /opt/docker/rancher/ca-certificates:/var/lib/ca-certificates --cgroupns host rancher/rancher:v2.7.0
登录配置rancher
- 访问https://<部署主机的ip> ,进入rancher管理页面
可以看到rancher的引导信息,提示你需要进行如下操作
# 找到您的容器ID
docker ps
# 找到密码
docker logs ${container-id} 2>&1 | grep "Bootstrap Password:"
然后将查询到的字符串复制到Password文本框中,点击Log in with Local User。
如图所示,你可以自定义密码,然后勾选第二个箭头,完成点击继续。
按照如图的操作,可以设置为中文语言。
登录后直接修改密码,点击继续。
上图就是进入后的默认页面
不同版本调整中文的页面不一样,具体请根据自己的版本可以百度或者去官网查看。
设置管理员账号
利用新账号,也就是管理员账号登录。
创建k8s集群
- 点击箭头处的创建。
- 点击自定义。
- 填写集群名字,并选择版本。
下面的配置如果不清楚,最好默认
4.在“Advanced Options”中进行高级设置,比如:选择是否启用Nginx Ingress,我这里选择没有开启,主要是用不上。是否开启请根据您的需求来定。这个设置项后续可以点击rancher界面中此集群的升级按钮进行重新选择。
5.点击“Next”后,进入添加主机命令页面。
6.点选Etcd,Control Plan两个选项,然后复制下方的命令,到master节点执行。
点选Worker选项,然后复制下方的命令,到node节点执行。
当集群前面的状态变成Active时,就表示集群部署完成,可以点击集群的名称,进入集群详情页。
7.使用kubectl获取所有节点状态
至此,集群安装完毕!!!