Kubernetes 部署 MySQL,redis

在Kubernetes 集群部署 MySQL的必要性

1.在 Kubernetes 上部署 MySQL 的主要目的在于利用 Kubernetes 提供的弹性和高可用性。通过容器化管理,MySQL 的实例能够自动扩展和故障恢复,从而确保服务的稳定性和性能。这种自动化的特性可以减少系统的停机时间,同时让运维团队更专注于其他重要的任务。

2.Kubernetes 的动态存储管理为 MySQL 数据提供了持久化存储的解决方案。使用持久化卷(PVC),MySQL 的数据在 Pod 重新创建或迁移时不会丢失。Kubernetes 还允许对存储卷的自动分配和管理,这简化了存储资源的管理过程,使得运维变得更加高效。

3.Kubernetes 提供的服务发现和负载均衡机制,使得其他应用程序能够轻松找到并连接到 MySQL 服务。这种集成能力提高了系统的灵活性和可扩展性,特别是在需要多个 MySQL 副本的场景中。Kubernetes 可以智能地将请求分发到不同的副本,从而实现负载均衡,提高整体性能。

4.Kubernetes 的生态系统与现代 DevOps 工具链无缝集成,使得 MySQL 的部署和管理可以更容易地融入 CI/CD 流程中。这种集成不仅提高了开发和运维的效率,还增强了系统的监控和可观察性,使团队能够及时发现和解决潜在问题。这一切都使得在 Kubernetes 上部署 MySQL 成为一种理想选择,特别是在云原生架构中。

创建持久存储 (PersistentVolumeClaim)

注意:下面的所有文件夹为.yaml后缀。举个例子吧例“mysql-deployment.yaml”

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  labels:
    app: mysql
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

创建 MySQL 部署 (Deployment)

创建 MySQL 部署,并挂载之前创建的 PVC

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8.0
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "password" # 换为你的 MySQL 密码
        - name: MYSQL_DATABASE
          value: "database"      # 可有可无,自动创建数据库
        - name: MYSQL_USER
          value: "user"          # 可有可无,创建的数据库用户
        - name: MYSQL_PASSWORD
          value: "password"      # 可有可无,数据库用户密码
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pvc

创建 MySQL 服务 (Service)

创建一个 Service 来暴露 MySQL 的端口,为了能够从集群内部或外部访问 MySQL

apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  ports:
  - port: 13307
    targetPort: 3306
  selector:
    app: mysql

最后!!

需要使用命令进行配置,注意一定要配置完,上面三个都需要配置,根据你的文件名修改.yaml前缀,如下:

kubectl apply -f mysql-deployment.yaml

通过以下命令检查 MySQL Pod 是否运行正常:

kubectl get pods -l app=mysql

并查看 MySQL 服务的状态:

kubectl get svc mysql

在这里插入图片描述

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值