重要写在开头,我的教程更多是记录过程,如果你不看各类开源软件的官方文档,不对linux有所了解,我的文档对你的帮助是很有限的。
重要写在开头,我的教程更多是记录过程,如果你不看各类开源软件的官方文档,不对linux有所了解,我的文档对你的帮助是很有限的。
重要写在开头,我的教程更多是记录过程,如果你不看各类开源软件的官方文档,不对linux有所了解,我的文档对你的帮助是很有限的。
云原生系列(五)—metallb安装及layer-2负载配置_metallb 安装-CSDN博客
云原生系列(六)—longhorn分布式存储部署_longhorn 存储-CSDN博客
云原生系列(七)—在k8s部署trident对接ontap的nfs存储并创建动态存储类-CSDN博客
rancher是目前市面为数不多的功能齐全且开源的k8s管理平台。
rancher官方推荐架构
下游集群,是运行你自己的应用和服务的下游 Kubernetes 集群。
如果你通过 Docker 安装了 Rancher,运行 Rancher Server 的节点应该与你的下游集群分开。
如果你需要使用 Rancher 管理下游 Kubernetes 集群,那么运行 Rancher Server 的 Kubernetes 集群也应该与下游集群分开。
rancher安装集群,我们这次依然使用rke2进行部署
运行 Rancher Management Server 的 RKE Kubernetes 集群的架构
rancher的安装架构如下
在 Kubernetes 集群中安装 Rancher,并使用四层负载均衡器,SSL 终止在 Ingress Controller 中
上述内容以及图片来自rancher官方文档
环境规划:
操作系统:ubuntu22.04
网关:10.10.109.1
主机名 | ip地址 | 配置 | 角色 | |
rancher01 | 10.10.109.23/24 | 8C/16G/100G/ | master01、etcd01、worker01 | |
rancher02 | 10.10.109.24/24 | 8C/16G/100G/ | master02、etcd02、worker02 | |
rancher03 | 10.10.109.25/24 | 8C/16G/100G/ | master03、etcd03、worker03 | |
rancher-lb01 | 10.10.109.21/24 | VIP 10.10.109.20/24 | 2C/2G/100G | 负载均衡 |
rancher-lb02 | 10.10.109.22/24 | 2C/2G/100G |
环境准备
按照表里修改主机名(所有主机执行)
hostnamectl set-hostname 主机名
更新系统(所有主机执行)
apt update && apt upgrade -y
所有主机关闭防火墙
systemctl stop ufw && systemctl disable ufw
rancher三个节点执行
apt install net-tools curl telnet wget vim ntpdate ipvsadm -y
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
cat <<EOF >> /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.conf
lb的两个节点执行
apt install net-tools curl telnet wget vim ntpdate nginx keepalived -y
负载均衡配置
rancher-lb01执行
编辑keepalived配置文件
vi /etc/keepalived/keepalived.conf
配置文件内容如下
vrrp_instance VI_20 {
state MASTER # 在备机服务器上设置为 BACKUP
interface ens192 # 例如ens192,具体看网卡信息
virtual_router_id 20
priority 100 # 在备机上设置为 99
advert_int 1
authentication {
auth_type PASS
auth_pass WCbgfFuU6pdSzzd8 #vrrp验证密码
}
virtual_ipaddress {
10.10.109.20/24 # 你的虚拟IP地址
}
}
保存配置文件
rancher-lb02执行
vi /etc/keepalived/keepalived.conf
配置文件内容如下
vrrp_instance VI_20 {
state BACKUP # 在备机服务器上设置为 BACKUP
interface ens192 # 例如ens192,具体看网卡信息
virtual_router_id 20
priority 99 # 在备机上设置为 99
advert_int 1
authentication {
auth_type PASS
auth_pass WCbgfFuU6pdSzzd8 #vrrp验证密码
}
virtual_ipaddress {
10.10.109.20/24 # 你的虚拟IP地址
}
}
保存配置文件
rancher-lb01和rancher-lb02执行
systemctl enable keepalived
systemctl restart keepalived
rancher-lb01和rancher-lb02配置nginx转发
创建配置文件目录(rancher-lb01和rancher-lb02在执行)
mkdir -p /etc/nginx/stream.conf.d
编写配置文件(rancher-lb01和rancher-lb02在执行)
mkdir -p vi /etc/nginx/stream.conf.d
vi /etc/nginx/stream.conf.d/load_balancer.conf
upstream kubernetes_api {
server 10.10.109.20:6443 max_fails=3 fail_timeout=30s;
}
upstream rke2 {
server 10.10.109.20:9345 max_fails=3 fail_timeout=30s;
}
server {
listen 6443;
proxy_pass kubernetes_api;
}
server {
listen 9345;
proxy_pass rke2;
}
保存配置文件(rancher-lb01和rancher-lb02在执行)
配置nginx.conf 调用转发(rancher-lb01和rancher-lb02在执行)
vi /etc/nginx/nginx.conf
在http块配置后面加上如下代码,放在配置文件最后面也行(rancher-lb01和rancher-lb02在执行)
stream {
include /etc/nginx/stream.conf.d/load_balancer.conf;
}
重启nginx并设置开机自动启动(rancher-lb01和rancher-lb02在执行)
systemctl restart nginx
systemctl enable nginx
rancher01、rancher02、rancher03主机开始配置rke2的k8s集群
创建rke2配置目录(rancher01、rancher02、rancher03执行)
mkdir -p /etc/rancher/rke2/
设置环境变量(rancher01、rancher02、rancher03执行)
cat >> /etc/profile << EOF
export PATH=/var/lib/rancher/rke2/bin:$PATH
export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
EOF
source /etc/profile
新建配置文件(rancher01执行)
vim /etc/rancher/rke2/config.yaml
配置文件内容如下
token: "6B4ZCLxBtYMdsPdKxPN4yAEy2Wax1txu" #这里自己生成一个随机的字段
tls-san:
- "10.10.109.20" #这里填写负载均衡ip
cni: "calico" #使用calico网络插件
安装rke2(rancher01、rancher02、rancher03执行)
curl -sfL https://get.rke2.io | sh - #这个地址有时候不通,不通的话就用下面的地址
curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn sh - #中国用户最佳选择安装方式
rancher01节点开始初始化
systemctl enable rke2-server.service
systemctl start rke2-server.service
初始化完成后修改rancher01的配置文件
vim /etc/rancher/rke2/config.yaml
内容如下
token: "6B4ZCLxBtYMdsPdKxPN4yAEy2Wax1txu" #tonken不能动
tls-san:
- "10.10.109.20"
server: "https://10.10.109.20:9345"
cni: "calico"
重启rancher01节点的服务并设置开机自动启动
systemctl restart rke2-server.service
使用命令可以看到当前集群运行状态
kubectl get nodes
效果如图
rancher02和rancher03加入集群
编辑配置文件(rancher02和rancher03执行)
vim /etc/rancher/rke2/config.yaml
配置内容如下
token: "6B4ZCLxBtYMdsPdKxPN4yAEy2Wax1txu" #token要与第一个节点一致
tls-san:
- "10.10.109.20"
server: "https://10.10.109.20:9345"
cni: "calico"
设置rke2开机自启以及加入集群
systemctl enable rke2-server.service
systemctl start rke2-server.service
等待节点加入完成后,任一节点执行命令
kubectl get nodes
如图所示
集群已经部署完成,接下来安装helm3
下载helm(rancher01、rancher02、rancher03执行)
wget https://get.helm.sh/helm-v3.14.3-linux-amd64.tar.gz
解压helm的包并cp到对应目录(rancher01、rancher02、rancher03执行)
tar -zxvf helm-v3.14.3-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
helm3已经安装完成,测试命令
helm version
如图所示
通过helm安装rancher(rancher01、rancher02、rancher03任何一个节点执行即可)
添加helm仓库
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm repo add jetstack https://charts.jetstack.io
helm repo update
创建命名空间
kubectl create namespace cert-manager
kubectl create namespace cattle-system
wget https://github.com/cert-manager/cert-manager/releases/download/v1.14.4/cert-manager.crds.yaml
#这一步有时候会无法直接下载,可以在电脑浏览器打开这个连接进行下载,然后上传到服务器
kubectl apply -f cert-manager.crds.yaml
helm install cert-manager --namespace cert-manager --version v1.14.4 jetstack/cert-manager
这里需要自己设定一个域名
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=指定一个域名 \
安装完成如图所示
因为是rke2创建的k8s集群并安装rancher
自动会生成rancher的ingress配置
使用命令可查看ingress配置
kubectl get ingress -A
如图所示
修改负载均衡器配置(rancher-lb01和rancher-lb02执行)
vi /etc/nginx/stream.conf.d/load_balancer.conf
内容修改如下
upstream kubernetes_api {
server 10.10.109.23:6443 max_fails=3 fail_timeout=30s;
server 10.10.109.24:6443 max_fails=3 fail_timeout=30s;
server 10.10.109.25:6443 max_fails=3 fail_timeout=30s;
}
upstream rke2 {
server 10.10.109.23:9345 max_fails=3 fail_timeout=30s;
server 10.10.109.24:9345 max_fails=3 fail_timeout=30s;
server 10.10.109.25:9345 max_fails=3 fail_timeout=30s;
}
upstream rancherhttps {
server 10.10.109.23:443 max_fails=3 fail_timeout=30s;
server 10.10.109.24:443 max_fails=3 fail_timeout=30s;
server 10.10.109.25:443 max_fails=3 fail_timeout=30s;
}
upstream rancherhttp {
server 10.10.109.23:80 max_fails=3 fail_timeout=30s;
server 10.10.109.24:80 max_fails=3 fail_timeout=30s;
server 10.10.109.25:80 max_fails=3 fail_timeout=30s;
}
server {
listen 6443;
proxy_pass kubernetes_api;
}
server {
listen 9345;
proxy_pass rke2;
}
server {
listen 443;
proxy_pass rancherhttps;
}
server {
listen 80;
proxy_pass rancherhttp;
}
vi /etc/nginx/nginx.conf
注释掉下面两行配置
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
重启nginx
systemctl restart nginx
如果你有dns服务器,只需要将安装rancher时指定的域名(通过helm安装rancher)这一步,把对应的域名解析到你的dns服务器即可,注意,域名解析的ip是你负载均衡器的ip地址。如果没有,在你的电脑的hosts文件写入特定解析也可以;
我是在电脑里面写入hosts的。
10.10.109.20 rancher2.XXXX.com
接着浏览器打开域名,注意这里是要用https打开
复制框子里的内容,到rancher01、rancher02、rancher03任何一个节点运行,即可获取初始密码。
至此,开始rancher的使用吧。enjoy