用Rancher RKE快速部署高可用k8s集群

用Rancher RKE部署高可用k8s集群

1. 主机配置

先配置4台最小化安装的主机,其中3台使用RKE配置k8s集群,然后在这个集群上配置高可用Rancher

主机IP 主机名 配置 角色
172.21.0.12 k8s-node01 4核8G controlplane,etcd,worker
172.21.0.15 k8s-node02 4核8G controlplane,etcd,worker
172.21.0.16 k8s-node03 4核8G controlplane,etcd,worker
172.21.0.4 nginx 4核8G nginx负载均衡

1.1 新建虚拟主机

系统:CentOS Linux release 7.7
直接在腾讯云上买的主机,4核8G。安装完之后开始一些初始化配置

1.2 主机初始化配置

下面这些操作,是在每台主机上都要进行的。

安装一些必要的安装包
yum -y install epel-release
yum -y install lrzsz vim gcc glibc openssl openssl-devel net-tools wget curl
yum -y update  # 更新一下软件包版本和内核版本
安全设置

在测试环境,先把firewalld和selinux关闭

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i s@SELINUX=enforcing@SELINUX=disabled@g /etc/selinux/config

如果是在生产环境,建议关闭selinux,firewalld或iptables根据需要自定义

ntp时钟同步

安装ntp相关服务

yum -y install ntp
systemctl start ntpd  # 启动时钟同步服务
systemctl enable  ntpd # 设置开机启动
ntpq -p # 查看时钟同步状态

如果在局域网环境中有ntp时钟服务器,尽量用本地的

内核参数调优

Kernel参数调优,执行命令

cat >> /etc/sysctl.conf <<EOF
vm.swappiness=0
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.neigh.default.gc_thresh1=4096
net.ipv4.neigh.default.gc_thresh2=6144
net.ipv4.neigh.default.gc_thresh3=8192
EOF

使内核参数生效执行

modprobe br_netfilter  # 要先执行这个命令,要不然会报错
sysctl -p
hostname修改

分别在4台主机上修改主机名

hostnamectl set-hostname nginx
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02
hostnamectl set-hostname k8s-node03

在/etc/hosts文件中添加配置

cat >> /etc/hosts << EOF
172.21.0.4  nginx
172.21.0.12 k8s-node01
172.21.0.15 k8s-node02
172.21.0.16 k8s-node03
EOF

注意:下面的这些步骤在nginx主机上可以不操作。

关闭swap分区
swapoff -a

然后修改/etc/fstab,把swap分区相关的配置注释掉

加载ipvs相关模块

由于ipvs已经加入到了内核的主干,所以为kube-proxy开启ipvs的前提需要加载以下的内核模块:
在所有的Kubernetes节点执行以下脚本:

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_ipv4
EOF

#执行脚本
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

上面脚本创建了/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

命令查看是否已经正确加载所需的内核模块。
接下来还需要确保各个节点上已经安装了ipset软件包。 为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm。

yum install ipset ipvsadm -y

2. docker配置

注意:下面的这些安装docker的步骤在nginx主机上不需要操作。

2.1 安装docker

参考:https://developer.aliyun.com/article/110806
使用阿里云的安装源

# 安装一些必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新并安装docker-ce
yum makecache fast
yum -y install docker-ce # 直接安装是安装的最新版本
systemctl start docker
systemctl enable docker

指定docker-ce版本安装

# 查看可以安装的版本
yum list docker-ce.x86_64  --showduplicates |sort -r
# 指定版本安装
yum install -y  docker-ce-18.09.7-3.el7 
systemctl start docker
systemctl enable docker

2.2 配置docker

指定镜像源,修改docker cgroup driver为systemd
根据文档CRI installation中的内容,对于使用systemd作为init system的Linux的发行版,使用systemd作为docker的cgroup driver可以确保服务器节点在资源紧张的情况更加稳定,因此这里修改各个节点上docker的cgroup driver为systemd。

mkdir /etc/docker/
cat <<EOF > /etc/docker/daemon.json
{
   
   
  "registry-mirrors": ["https://3x8fih0m.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl restart docker
systemctl status docker # 确认docker是否正常启动
docker info # 确认镜像源配置是否生效

在这里插入图片描述
在这里插入图片描述
上面的操作,是在每台主机上都要执行的,如果想简单一些,可以做成脚本。

2.3 配置普通用户加入docker组

把nginx主机当做主控机,其它主机的ops用户互信它的ops用户。

nginx主机操作
useradd ops
usermod -G docker ops

ssh-keygen生成密钥对

k8s节点主机操作

在另外3台主机上配置

useradd ops
usermod -G docker ops
mkdir -pv /home/ops/.ssh/
chmod 700 /home/ops/.ssh/
chown -R ops.ops /home/ops/
chmod 600 /home/ops/.ssh/authorized_keys
vim /home/ops/.ssh/authorized_keys  # 添加第一个节点的密钥

测试用ssh连接。从nginx主机上,通过ops用户都能正常ssh连接到三台要部署k8s的主机。
在这里插入图片描述

配置参考:
https://www.kubernetes.org.cn/5551.html
https://www.cnblogs.com/tylerzhou/p/10971336.html

注意:完成以上全部操作之后,需要重启主机,有些配置参数重置主机后才会生效。

3. 使用RKE搭建k8s集群

3.1 下载RKE

首先从官网下载RKE,下载地址:https://github.com/rancher/rke/releases/tag/v1.0.11
下载好之后,上传到/home/ops/目录下,并添加执行权限
在这里插入图片描述

3.2 生成集群配置文件

配置文件生成可以用命令
在这里插入图片描述
cluster.yml配置如下:

nodes:
- address: 172.21.0.12
  port: "22"
  internal_address: ""
  role:
  - controlplane
  - worker
  - etcd
  hostname_override: ""
  user: ops
  docker_socket: /var/run/docker.sock
  ssh_key: ""
  ssh_key_path: ~/.ssh/id_rsa
  ssh_cert: ""
  ssh_cert_path: ""
  labels: {
   
   }
  taints: []
- address: 172.21.0.15
  port: "22"
  internal_address: ""
  role:
  - controlplane
  - worker
  - etcd
  hostname_override: ""
  user: ops
  docker_socket: /var/run/docker.sock
  ssh_key: ""
  ssh_key_path: ~/.ssh/id_rsa
  ssh_cert: ""
  ssh_cert_path: ""
  labels: {
   
   }
  taints: []
- address: 172.21.0.16
  port: "22"
  internal_address: 
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值