首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Rancher 高可用部署

Rancher 高可用部署

原创
作者头像
Ewdager
修改于 2020-08-07 06:40:40
修改于 2020-08-07 06:40:40
3.5K1
举报
文章被收录于专栏:Gvoidy备份小站Gvoidy备份小站

0x00

其实官网已经有了无坑且完备的高可用部署方案 官方部署方案链接,但是太过翔实,这里只是记录一下自己的部署方案

说明

本教程是基于k3s安装Rancher Server,从Rancher V2.4开始支持在K3s集群安装,K3s比RKE更新,易于使用且更轻量,全部组件都打包在了一个二进制文件里。

前置条件

mysql已安装,配置账户及访问权限

创建可读写rancher database的账户,限定可访问ip为rancher server所在服务器ip

代码语言:txt
AI代码解释
复制
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

代码语言:txt
AI代码解释
复制
# 安装依赖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

代码语言:txt
AI代码解释
复制
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

代码语言:txt
AI代码解释
复制
# 下载安装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 集群

在待部署的机器上分别执行

代码语言:txt
AI代码解释
复制
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集群是否创建成功

代码语言:txt
AI代码解释
复制
# 执行以下命令,看大两个具有master角色节点表示集群正常
sudo k3s kubectl get nodes
 
sudo k3s kubectl get pods --all-namespaces

保存并使用 kubeconfig 文件

代码语言:txt
AI代码解释
复制
cp /etc/rancher/k3s/k3s.yaml  ~/.kube/config/

在这个 kubeconfig 文件中,server参数为 localhost。您需要手动更改这个地址为负载均衡器DNS,并且指定端口 6443。(Kubernetes API Server 的端口为 6443,Rancher Server 的端口为 80 和 443。)以下是一个示例k3s.yaml

代码语言:txt
AI代码解释
复制
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和容器状况

代码语言:txt
AI代码解释
复制
sudo kubectl get pods --all-namespaces

部署 Rancher Server

为 Rancher 创建 Namespace

代码语言:txt
AI代码解释
复制
kubectl create namespace cattle-system

安装Rancher,在集群外部的负载均衡器上终止SSL/TLS通信,使用 --set tls=external选项

代码语言:txt
AI代码解释
复制
helm install rancher rancher-<CHART_REPO>/rancher \
 --namespace cattle-system \
 --set tls=external

验证Rancher是否安装成功

代码语言:txt
AI代码解释
复制
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 的状态:

代码语言:txt
AI代码解释
复制
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。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
大佬,这个负载均衡器的DNS是什么呀?ingress吗?
大佬,这个负载均衡器的DNS是什么呀?ingress吗?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Kubernetes 中容器的退出状态码参考指南
当容器终止时,容器引擎使用退出码来报告容器终止的原因。如果您是 Kubernetes 用户,容器故障是 pod 异常最常见的原因之一,了解容器退出码可以帮助您在排查时找到 pod 故障的根本原因。
公众号: 云原生生态圈
2024/01/23
7930
Kubernetes 中容器的退出状态码参考指南
[译] SIGSEGV:Linux 容器中的分段错误(退出代码 139)
SIGSEGV,也称为分段违规或分段错误,是基于 Unix 的操作系统(如 Linux)使用的信号。它表示程序尝试在其分配的内存之外进行写入或读取,由于编程错误、软件或硬件兼容性问题或恶意攻击(例如缓冲区溢出)。
CS实验室
2022/08/01
9.2K0
[译] SIGSEGV:Linux 容器中的分段错误(退出代码 139)
[译] SIGTERM:Linux 容器的优雅终止(退出代码 143)
SIGTERM(信号 15)在基于 Unix 的操作系统(如 Linux)中用于终止进程。SIGTERM 信号提供了一种优雅的方式来终止程序,使其有机会准备关闭并执行清理任务,或者在某些情况下拒绝关闭。Unix/Linux 进程可以以多种方式处理 SIGTERM,包括阻塞和忽略。
CS实验室
2022/08/01
12.5K0
[译] SIGTERM:Linux 容器的优雅终止(退出代码 143)
Kubernetes故障排查指南-分析容器退出状态码
大家在使用 Kubernetes 时,会遇到创建Pod失败,这时会分析什么原因导致创建Pod失败?
YP小站
2020/06/24
3.8K0
解读Kubernetes常见退出码
在这篇文章中,我们将深入分析Kubernetes中的典型退出码127与137,解释它们是什么,K8s和Docker中常见的原因是什么,以及如何修复
zouyee
2024/03/04
7680
解读Kubernetes常见退出码
Kubernetes分析ExitCode
问题 最近总有开发小伙伴来找我,为什么我的容器总退出呢,在哪能看到原因。故写篇文章整理下docker退出的状态码。
院长技术
2020/06/11
5.2K0
kubernetes分析ExitCode
最近总有开发小伙伴来找我,为什么我的容器总退出呢,在哪能看到原因。故写篇文章整理下docker退出的状态码。
SY小站
2020/06/15
3.7K0
Linux 信号(Signal)
我们经常会使用 kill 命令杀掉运行中的进程,对多次杀不死的进程进一步用 kill -9 干掉它。你可能知道这是在用 kill 命令向进程发送信号,优雅或粗暴的让进程退出。我们能向进程发送很多类型的信号,其中一些常见的信号 SIGINT 、SIGQUIT、 SIGTERM 和 SIGKILL 都是通知进程退出,但它们有什么区别呢?很多人经常把它们搞混,这篇文章会让你了解 Linux 的信号机制,以及一些常见信号的作用。
mazhen
2023/11/24
1.6K0
Linux 信号(Signal)
Kubernetes 问题定位技巧:分析 ExitCode
使用 kubectl describe pod 查看异常的 pod 的状态,在容器列表里看 State 字段,其中 ExitCode 即程序退出时的状态码,正常退出时为0。如果不为0,表示异常退出,我们可以分析下原因。
imroc
2018/12/21
2.7K0
Linux 信号
Linux进程间通信(Inter-Process communication, IPC)机制通常分6种:
Laikee
2022/04/25
5.3K0
Linux 信号
【Linux探索学习】第十七弹——进程终止:深入解析操作系统中的进程终止机制
https://blog.csdn.net/2301_80220607/category_12805278.html?spm=1001.2014.3001.5482
GG Bond1
2024/11/30
5070
【Linux探索学习】第十七弹——进程终止:深入解析操作系统中的进程终止机制
Linux命令(54)——trap命令(builtin)
trap命令是Shell内建命令,用于指定在接收到信号后将要采取的动作。常见的用途是在脚本程序被中断时完成清理工作。
恋喵大鲤鱼
2019/03/05
2K0
【linux】进程创建与进程终止
上面的代码,进程11258为父进程bash,echo $?,父进程获取到的是最近一个子进程退出的退出码,前面我们提到,echo是内建命令,打印的都是bash内部的变量数据
用户11029103
2024/10/20
6080
【linux】进程创建与进程终止
一个 Node 进程的死亡与善后
人固有一死,一个 Node 进程亦是如此,总有万般不愿也无法避免。从本篇文章我们看看一个进程灭亡时如何从容离去。
山月
2021/03/16
1.2K0
完整的Kubernetes Deployment yaml文件应该包含什么?
刚开始接触 Kubernetes 那会,从官网下载了一个 nginx Pod 模板文件,通过 kubectl apply 启动后,之后执行 kubectl get pod 展示出了一个处于 running 状态的 pod, 第一个 hello word 就跑起来了,转眼一想,Kubernetes 可是工业级的编排平台,能够保证容器的管理、编排、弹性扩缩容,现在编排运行没什么问题,但没体现出对容器的管理和弹性扩缩容。
用户5166556
2020/06/12
2.1K0
在 Kubernetes 中运行 Kubernetes
前面其实我们在 Windows 系统的 WSL2 下面使用 KinD 搭建了一套 Kubernetes 集群,KinD 是一个非常轻量级的 Kubernetes 安装工具,他将 Docker 容器当成 Kubernetes 的节点,使用非常方便。既然在 Docker 容器中可以运行 Kubernetes 集群,那么我们自然就会想到是否可以在 Pod 中来运行呢?在 Pod 中运行会遇到哪些问题呢?
我是阳明
2020/06/19
3.4K0
在 Kubernetes 中运行 Kubernetes
在 Docker 容器中捕获信号
我们可能都使用过 docker stop 命令来停止正在运行的容器,有时可能会使用 docker kill 命令强行关闭容器或者把某个信号传递给容器中的进程。这些操作的本质都是通过从主机向容器发送信号实现主机与容器中程序的交互。比如我们可以向容器中的应用发送一个重新加载信号,容器中的应用程序在接到信号后执行相应的处理程序完成重新加载配置文件的任务。本文将介绍在 docker 容器中捕获信号的基本知识。
星哥玩云
2022/07/19
3.1K0
在 Docker 容器中捕获信号
[译]优雅退出和零停机部署
本文翻译自:https://learnk8s.io/graceful-shutdown
CS实验室
2023/09/18
5450
[译]优雅退出和零停机部署
Docker核心技术之容器详解
容器(Container):容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行 Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。 容器具备一定的生命周期。 另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。
Lansonli
2021/10/09
2.4K0
优雅地终止:Graceful Shutdown指南
您是否曾经因沮丧而拔掉电脑的电源线?虽然这似乎是一个快速解决方案,但它会导致数据丢失和系统不稳定。在软件世界中,存在类似的概念:硬关闭。这种突然的终止会导致与物理对应物相同的问题。值得庆幸的是,有一种更好的方法:优雅关闭。
云云众生s
2024/07/18
2660
优雅地终止:Graceful Shutdown指南
推荐阅读
相关推荐
Kubernetes 中容器的退出状态码参考指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档