基于Kubernetes部署mysql

当在Kubernetes中搭建MySQL数据库时,可以使用以下示例YAML文件定义所需的资源:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 128Mi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /pv/mysql
​
---
​
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 128Mi
​
---
​
apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  ports:
    - protocol: TCP
      port: 33306
      targetPort: 3306
      nodePort: 30000
  selector:
    app: mysql
  type: NodePort
​
---
​
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: mysql:latest
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "123456"
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pvc

这个示例YAML文件创建了一个MySQL数据库的Deployment和Service,并使用PersistentVolumeClaim定义了一个持久化存储卷,并使用localPath创建了一个PV。

将上述内容保存为一个YAML文件(例如mysql.yaml),然后使用以下命令来创建MySQL资源:

kubectl apply -f mysql.yaml

这将使用Kubernetes创建MySQL Deployment、Service、PersistentVolume和PersistentVolumeClaim,并启动一个MySQL实例。根据配置,MySQL将通过NodePort类型的Service的30000端口暴露给集群外访问,可以在集群外,通过该集群master的IP地址和30000端口访问MySQL数据库。

注:执行上述操作前,请确保已正确安装和配置Kubernetes集群,并且具有足够的权限来创建所需的资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于 Kubernetes 部署 MySQL 集群,可以使用 StatefulSet 来管理 MySQL 的实例。以下是一个简单的部署 MySQL 集群的示例。 1. 创建 StatefulSet 首先,你需要创建一个 StatefulSet,它将负责管理 MySQL 实例的创建和维护。在 StatefulSet 中,你需要定义一个容器模板,用于创建每个 MySQL 实例的容器。 ```yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql spec: serviceName: mysql replicas: 3 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD value: rootpassword ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim ``` 在上面的 YAML 文件中,我们定义了一个名为 mysql 的 StatefulSet,并指定了服务名称为 mysql。我们还指定了 3 个副本,因此 StatefulSet 将创建三个 MySQL 实例。我们还定义了一个容器模板,该模板使用 MySQL 5.7 镜像,并将 MySQL 的 root 密码设置为 rootpassword。容器模板还定义了一个名为 mysql 的端口,并将 /var/lib/mysql 挂载到名为 mysql-persistent-storage 的持久卷上。 2. 创建 PersistentVolumeClaim 接下来,我们需要创建一个 PersistentVolumeClaim(PVC)用于持久化 MySQL 的数据。在 Kubernetes 中,PVC 用于声明需要的存储资源,并由 Kubernetes 自动创建相应的 PersistentVolume(PV)。在下面的 YAML 文件中,我们创建了一个名为 mysql-pv-claim 的 PVC。 ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi ``` 在上面的 YAML 文件中,我们定义了一个名为 mysql-pv-claim 的 PVC,并请求 10GB 存储空间。 3. 创建 Service 最后,我们需要创建一个 Service,用于将客户端请求路由到正确的 MySQL 实例。在下面的 YAML 文件中,我们创建了一个名为 mysql 的 Service。 ```yaml apiVersion: v1 kind: Service metadata: name: mysql spec: clusterIP: None selector: app: mysql ports: - name: mysql port: 3306 ``` 在上面的 YAML 文件中,我们定义了一个名为 mysql 的 Service,并将其类型设置为 ClusterIP。我们还指定了一个名为 mysql 的端口,并将其映射到 MySQL 容器的 3306 端口。最后,我们使用 selector 将 Service 与 StatefulSet 关联起来。 4. 运行 YAML 文件 现在,你可以运行上面的 YAML 文件,以创建 MySQL 集群。使用以下命令运行 YAML 文件。 ```shell kubectl apply -f mysql.yaml ``` 这将创建一个名为 mysql 的 StatefulSet、一个名为 mysql-pv-claim 的 PVC 和一个名为 mysql 的 Service。 完成后,你可以使用以下命令检查 StatefulSet 是否正确运行。 ```shell kubectl get statefulset mysql ``` 你可以使用以下命令检查 MySQL 实例是否正确创建。 ```shell kubectl get pods -l app=mysql ``` 最后,使用以下命令获取 Service 的 Cluster IP。 ```shell kubectl get svc mysql ``` 现在,你可以使用 Cluster IP 连接到 MySQL 集群并执行查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值