赞
踩
本文介绍K8S部署MySQL8(单机)的方法。
本文的目标
1.通过PV和PVC(hostPath方式)存储MySQL的数据
2.通过Deployment、Service部署MySQL8,并通过NodePort暴露给外部
3.使用Navicat进行测试
官网网址
1.持久化PV存储方式
数据库必须持久化数据,否则节点重启后数据就没了。PV和PVC可以对数据持久化,支持多种方式:
hostPath、NFS、RDB等等。数据要节点共享的,否则如果节点在其他机器上启动了,就无法访问到数据了。所以,生产环境一般采用这些方式:NFS挂载、用云服务器的RDB等。
本文为了简单,只部署一个MySQL节点,使用hostPath方式,不支持节点共享。
2.持久化PV分配方式
本文我直接手动预先创建。生产环境应该通过StorageClass采用Dynamic Provisioning。
3.数据库高可用
数据库一般要配置主从或者集群,实现高可用。一般使用StatefulSet部署,StatefulSet用于管理有状态应用的负载均衡,管理一组Pod的实现、扩容、缩容,并保证它们的顺序和唯一性。
StatefulSets维护的Pod有唯一的、持久的身份和稳定的主机名,不用管它们位于哪个节点上。即使StatefulSet中的Pod发生故障,存储卷与新Pod进行匹配也很容易。
先创建目录:
mkdir -p /work/devops/k8s/app/mysql/mnt
创建名为 pv.yaml的文件,内容如下:
- apiVersion: v1
- kind: PersistentVolume
- metadata:
- name: mysql-pv
- namespace: db
- labels:
- type: db-pv
- spec:
- storageClassName: manual
- capacity:
- storage: 5Gi
- accessModes:
- - ReadWriteOnce
- hostPath:
- path: "/work/devops/k8s/app/mysql/mnt"
- ---
- apiVersion: v1
- kind: PersistentVolumeClaim
- metadata:
- name: mysql-pvc
- namespace: db
- spec:
- storageClassName: manual
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 5Gi
创建pv:
kubectl apply -f pv.yaml
查看PV
kubectl get pv mysql-pv
结果:(创建成功)
查看PVC
kubectl get pvc -A
或者
get pvc mysql-pvc -n db
结果 (创建成功,绑定到了mysql-pv)
用于数据库相关应用。
创建名为db-namespace.yaml的文件,内容如下:
- # 创建命名空间
- apiVersion: v1
- kind: Namespace
- metadata:
- name: db
- labels:
- name: db
执行命令创建它:
kubectl apply -f db-namespace.yaml
上边是文章的部分内容,为便于维护,全文已转移到此网址:K8S-安装MySQL8(单机) - 自学精灵
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。