Rancher 高可用部署
时间:2022-07-22
本文章向大家介绍Rancher 高可用部署,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
0x00
其实官网已经有了无坑且完备的高可用部署方案 官方部署方案链接,但是太过翔实,这里只是记录一下自己的部署方案
说明
本教程是基于k3s安装Rancher Server,从Rancher V2.4开始支持在K3s集群安装,K3s比RKE更新,易于使用且更轻量,全部组件都打包在了一个二进制文件里。
前置条件
mysql已安装,配置账户及访问权限
创建可读写rancher database的账户,限定可访问ip为rancher server所在服务器ip
create user rancher identified by 'rancher#1Yer';
grant all privileges on rancher.* to rancher@'<yourNodeIP1>' identified by 'rancher#1Yer';
grant all privileges on rancher.* to rancher@'<yourNodeIP2>' identified by 'rancher#1Yer';
flush privileges;
安装docker
# 安装依赖yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum缓存
yum clean all
yum makecache fastyum -y
# 安装docker ce
yum install docker-ce-19.03.5-3.el7.x86_64
# 通过systemctl启动服务
systemctl start docker
# 开机自启动
systemctl enable docker
# 关闭docker 将docker存储位置转为/data目录(防止系统盘被占满),data目录根据实际情况修改
systemctl stop docker
mv /var/lib/docker /data/docker
ln -s /data/docker /var/lib/docker
安装kubectl
wget https://storage.googleapis.com/kubernetes-release/release/v1.18.2/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo ln -s ./kubectl /usr/local/bin/kubectl
kubectl version --client
安装Helm
# 下载安装helm
wget https://get.helm.sh/helm-v3.2.0-linux-amd64.tar.gz
tar -zxvf helm-v3.2.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
# 添加 Helm Chart 仓库
helm repo add rancher-stable> https://releases.rancher.com/server-charts/stable
部署 k3s 集群
在待部署的机器上分别执行
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server
--datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"
查看K3s集群是否创建成功
# 执行以下命令,看大两个具有master角色节点表示集群正常
sudo k3s kubectl get nodes
sudo k3s kubectl get pods --all-namespaces
保存并使用 kubeconfig 文件
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config/
在这个 kubeconfig 文件中,server参数为 localhost。您需要手动更改这个地址为负载均衡器的 DNS,并且指定端口 6443。(Kubernetes API Server 的端口为 6443,Rancher Server 的端口为 80 和 443。)以下是一个示例k3s.yaml
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: [CERTIFICATE-DATA]
server: [LOAD-BALANCER-DNS]:6443 # 编辑此行
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
password: [PASSWORD]
username: admin
您现在可以使用kubectl来管理您的 K3s 集群,例如查看Pod和容器状况
sudo kubectl get pods --all-namespaces
部署 Rancher Server
为 Rancher 创建 Namespace
kubectl create namespace cattle-system
安装Rancher,在集群外部的负载均衡器上终止SSL/TLS通信,使用 --set tls=external选项
helm install rancher rancher-<CHART_REPO>/rancher
--namespace cattle-system
--set tls=external
验证Rancher是否安装成功
kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out
如果看到以下错误: error: deployment "rancher" exceeded its progress deadline, 您可以通过运行以下命令来检查 deployment 的状态:
kubectl -n cattle-system get deploy rancher
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
rancher 3 3 3 3 3m
DESIRED和AVAILABLE应该显示相同的个数。
安装完成后可以打开浏览器访问Rancher Server。
- 零基础学编程017:画出我的公众号LOGO
- 一个实用的却被忽略的命名空间:Microsoft.VisualBasic
- Spring @RequestBody 传递 List/Map 参数
- win7怎么去除快捷方式的小箭头
- 零基础学编程015:画些有趣的图案
- Spring boot with Thymeleaf
- 零基础学编程014:小海龟做画
- Springboot @RequestBody 传递 List
- 零基础学编程013:import让你飞起来
- 【教程】利用Tensorflow目标检测API确定图像中目标的位置
- 零基础学编程012:画出复利曲线图
- OpenAI发布高度优化的GPU计算内核—块稀疏GPU内核
- SQL SERVER 原来还可以这样玩 FOR XML PATH
- 零基础学编程011:复利数据表问题(总结)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 逐行阅读Spring5.X源码(九)spring利用CGLIB实现动态代理原理剖析
- 逐行阅读Spring5.X源码(十)spring如何解决循环引用,bean实例化过程源码详解
- 逐行阅读Spring5.X源码(十一)AOP概念、应用、原理
- java当中的线程和操作系统的线程是什么关系?
- 基于OpenCV 的车牌识别
- Redis入坟(六)分布式集群,概念、原理、实操
- Redis入坟(一)redis的前世今生、redis基础及存储结构源码讲解
- Redis入坟(二)高级特性,发布订阅、事务、Lua脚本
- 使用OpenCV对运动员的姿势进行检测
- Redis入坟(三)Redis为什么这么快?
- Redis入坟(番外篇)配置文件redis.conf,解析每个参数的含义
- 使用OpenCV自动去除背景色
- Redis入坟(四)Redis内存回收知多少
- Redis入坟(五)持久化
- Python爬取杜赛博客教程内容,应用pdfkit打印pdf文件