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 部署
四、验证服务
-
查看 Pod 状态:
Rancher UI → Workloads → Pods,确保状态是 Running。 -
查看 Service:
-
Rancher UI → Service Discovery
-
确认 MySQL、Redis、RabbitMQ 的服务已创建。
- 进入 Pod 验证:
- 进入 redis pod:
kubectl exec -it redis-xxx -n apps -- redis-cli
- 登录 RabbitMQ UI:访问 http://:(如果你设置 NodePort)。
五、扩缩容(UI 操作)
-
Rancher UI → Workloads → Deployments
-
找到目标应用(如 Redis)
-
点击右侧 ⋮ → Edit Config
-
修改 Replicas 数量,例如从 1 改成 3
-
保存 → 系统会自动扩缩容
至此,在 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
“人的一生会经历很多痛苦,但回头想想,都是传奇”。