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

一、前提条件

已有 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-pvc
  namespace: apps
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: apps
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8.0
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "MyRootPass123"
        - name: MYSQL_DATABASE
          value: "mydb"
        ports:
        - containerPort: 3306
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql-storage
      volumes:
      - name: mysql-storage
        persistentVolumeClaim:
          claimName: mysql-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: apps
spec:
  type: ClusterIP
  ports:
  - port: 3306
    targetPort: 3306
  selector:
    app: mysql

6.2. redis.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-pvc
  namespace: apps
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  namespace: apps
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:7
        ports:
        - containerPort: 6379
        volumeMounts:
        - mountPath: /data
          name: redis-storage
        args: ["redis-server", "--appendonly", "yes"]
      volumes:
      - name: redis-storage
        persistentVolumeClaim:
          claimName: redis-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: redis
  namespace: apps
spec:
  type: ClusterIP
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis

6.3. rabbitmq.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rabbitmq-pvc
  namespace: apps
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq
  namespace: apps
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rabbitmq
  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      containers:
      - name: rabbitmq
        image: rabbitmq:3-management
        ports:
        - containerPort: 5672   # AMQP
        - containerPort: 15672  # Web 管理控制台
        volumeMounts:
        - mountPath: /var/lib/rabbitmq
          name: rabbitmq-storage
      volumes:
      - name: rabbitmq-storage
        persistentVolumeClaim:
          claimName: rabbitmq-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  namespace: apps
spec:
  type: ClusterIP
  ports:
  - name: amqp
    port: 5672
    targetPort: 5672
  - name: http
    port: 15672
    targetPort: 15672
  selector:
    app: rabbitmq

在这里插入图片描述


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值