当前位置: 首页 > ds >正文

Rancher 管理的 K8S 集群中部署常见应用(MySQL、Redis、RabbitMQ)并支持扩缩容的操作

文章目录

    • 一、前提条件
    • 二、准备镜像
    • 三、进入 Rancher UI 部署
      • 3.1. 进入 Workloads
      • 3.2. 部署 MySQL
      • 3.3. 部署 Redis
      • 3.4. 部署 RabbitMQ
    • 四、验证服务
    • 五、扩缩容(UI 操作)
    • 六、附录yml部署文件
      • 6.1. mysql.yaml
      • 6.2. redis.yaml
      • 6.3. rabbitmq.yaml

一、前提条件

已有 Rancher 管理的 K8S 集群,并且集群状态健康。

在这里插入图片描述

能通过 Rancher UI(Cluster Explorer)或 kubectl 操作集群。

准备一个专用项目和命名空间 :

在这里插入图片描述
在这里插入图片描述
创建项目
在这里插入图片描述
创建命名空间
在这里插入图片描述
在这里插入图片描述
创建完成
在这里插入图片描述

在 Rancher 中部署应用与传统方式(命令行操作)最大的区别就在于在这里所有操作都是在图形界面中进行的,更为直观。

二、准备镜像

登录到所有集群的工作节点(worker 节点)。

手动拉取镜像:

# MySQL
docker pull mysql:8.0# Redis
docker pull redis:7# RabbitMQ(带管理界面)
docker pull rabbitmq:3-management

在这里插入图片描述
确认镜像已经在本地:

docker images | grep -E "mysql|redis|rabbitmq"

输出中能看到对应版本即可。

在这里插入图片描述

== 注意: ==

Rancher UI 部署时 Pod 会在任意节点调度,所以要保证 每个节点都有镜像,否则会触发远程拉取。

三、进入 Rancher UI 部署

3.1. 进入 Workloads

登录 Rancher UI

进入目标集群 → Cluster Explorer

选择 Workload → Deployments → Create

3.2. 部署 MySQL

  • Name: mysql

  • Namespace: apps(如果没有就新建)

  • Container image: mysql:8.0

  • Environment variables:

    • MYSQL_ROOT_PASSWORD=MyRootPass123

    • MYSQL_DATABASE=mydb

  • Port mapping: 3306 (TCP)

  • Volume: 添加一个 PVC,挂载路径 /var/lib/mysql

  • 点击 Launch 部署

3.3. 部署 Redis

  • Name: redis

  • Namespace: apps

  • Container image: redis:7

  • Command: redis-server --appendonly yes

  • Port mapping: 6379 (TCP)

  • Volume: 添加一个 PVC,挂载路径 /data

  • 点击 Launch 部署

3.4. 部署 RabbitMQ

  • Name: rabbitmq

  • Namespace: apps

  • Container image: rabbitmq:3-management

  • Port mapping:

    • 5672 (AMQP 服务端口)

    • 15672 (Web 管理端口)

  • Volume: 添加一个 PVC,挂载路径 /var/lib/rabbitmq

  • 点击 Launch 部署

四、验证服务

  1. 查看 Pod 状态:
    Rancher UI → Workloads → Pods,确保状态是 Running。

  2. 查看 Service:

  • Rancher UI → Service Discovery

  • 确认 MySQL、Redis、RabbitMQ 的服务已创建。

  1. 进入 Pod 验证:
  • 进入 redis pod:
kubectl exec -it redis-xxx -n apps -- redis-cli
  • 登录 RabbitMQ UI:访问 http://:(如果你设置 NodePort)。

五、扩缩容(UI 操作)

  1. Rancher UI → Workloads → Deployments

  2. 找到目标应用(如 Redis)

  3. 点击右侧 ⋮ → Edit Config

  4. 修改 Replicas 数量,例如从 1 改成 3

  5. 保存 → 系统会自动扩缩容

至此,在 Rancher UI 界面中利用本地镜像部署 MySQL、Redis、RabbitMQ,并支持扩缩容。

六、附录yml部署文件

如果用yaml文件进行在Rancher 管理的 K8S 集群里直接 kubectl apply -f 部署。
下面三个文件分别是 mysql.yaml、redis.yaml、rabbitmq.yaml

6.1. mysql.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-pvcnamespace: apps
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:name: mysqlnamespace: apps
spec:replicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:8.0env:- name: MYSQL_ROOT_PASSWORDvalue: "MyRootPass123"- name: MYSQL_DATABASEvalue: "mydb"ports:- containerPort: 3306volumeMounts:- mountPath: /var/lib/mysqlname: mysql-storagevolumes:- name: mysql-storagepersistentVolumeClaim:claimName: mysql-pvc
---
apiVersion: v1
kind: Service
metadata:name: mysqlnamespace: apps
spec:type: ClusterIPports:- port: 3306targetPort: 3306selector:app: mysql

6.2. redis.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: redis-pvcnamespace: apps
spec:accessModes:- ReadWriteOnceresources:requests:storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:name: redisnamespace: apps
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: redis:7ports:- containerPort: 6379volumeMounts:- mountPath: /dataname: redis-storageargs: ["redis-server", "--appendonly", "yes"]volumes:- name: redis-storagepersistentVolumeClaim:claimName: redis-pvc
---
apiVersion: v1
kind: Service
metadata:name: redisnamespace: apps
spec:type: ClusterIPports:- port: 6379targetPort: 6379selector:app: redis

6.3. rabbitmq.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: rabbitmq-pvcnamespace: apps
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:name: rabbitmqnamespace: apps
spec:replicas: 1selector:matchLabels:app: rabbitmqtemplate:metadata:labels:app: rabbitmqspec:containers:- name: rabbitmqimage: rabbitmq:3-managementports:- containerPort: 5672   # AMQP- containerPort: 15672  # Web 管理控制台volumeMounts:- mountPath: /var/lib/rabbitmqname: rabbitmq-storagevolumes:- name: rabbitmq-storagepersistentVolumeClaim:claimName: rabbitmq-pvc
---
apiVersion: v1
kind: Service
metadata:name: rabbitmqnamespace: apps
spec:type: ClusterIPports:- name: amqpport: 5672targetPort: 5672- name: httpport: 15672targetPort: 15672selector:app: rabbitmq

在这里插入图片描述


“人的一生会经历很多痛苦,但回头想想,都是传奇”。


http://www.xdnf.cn/news/18529.html

相关文章:

  • SpringBoot4发布!新特性解析
  • 2025.8.21总结
  • 【Bug】CentOS 7 使用vim命令报错vim: command not found
  • 37、需求预测与库存优化 (快消品) - /供应链管理组件/fmcg-inventory-optimization
  • AP状态管理中提到的两种“业务逻辑”
  • Java实现一个简单的LRU缓存对象
  • 50 C++ STL模板库-算法库 algorithm
  • python的校园研招网系统
  • RHCA10NUMA
  • Pytorch框架学习
  • Git 新手完全指南(一):从零开始掌握版本控制
  • 59. 螺旋矩阵 II|从“左闭右开”的圈层模拟入手(附图解与 C++ 实现)
  • 在 Linux 和 Docker 中部署 MinIO 对象存储
  • 使用Spring Retry组件优雅地实现重试
  • 【Python】利用heapq 模块实现一个按优先级排序的队列
  • 数字化图书管理系统设计实践(java)
  • CorrectNav——基于VLM构建带“自我纠正飞轮”的VLN:通过「视觉输入和语言指令」预测导航动作,且从动作和感知层面生成自我修正数据
  • 学习嵌入式的第二十二天——数据结构——双向链表
  • 永磁同步电机谐波抑制算法(13)——传统预测控制与传统谐波抑制的碰撞
  • week2-[二维数组]排队
  • MySQL 50 道经典练习题及答案
  • Java毕业设计选题推荐 |基于SpringBoot+Vue的知识产权管理系统设计与实现
  • Effective C++ 条款52:写了placement new也要写placement delete
  • ES常用查询命令
  • SQL详细语法教程(七)核心优化
  • ubuntu系统上的conda虚拟环境导出方便下次安装
  • PiscCode使用MediaPipe Face Landmarker实现实时人脸特征点检测
  • YOLO11 到 C++ 落地全流程:ONNX 导出、NMS 判别与推理实战
  • Java 通过 m3u8 链接下载所有 ts 视频切片并合并转换为 mp4 格式
  • 《GPT-OSS 模型全解析:OpenAI 回归开源的 Mixture-of-Experts 之路》