K8S--安装MySQL8(单机)
本文介绍K8S部署MySQL(单机)的方法。
简介
本文介绍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进行匹配也很容易。
1.创建PV和PVC存储
先创建目录:
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)
2.创建MySQL应用
1.创建命名空间
用于数据库相关应用。
创建名为db-namespace.yaml的文件,内容如下:
# 创建命名空间
apiVersion: v1
kind: Namespace
metadata:
name: db
labels:
name: db
执行命令创建它:
kubectl apply -f db-namespace.yaml
2.创建MySQL应用
上边是文章的部分内容,为便于维护,全文已转移到此网址:K8S-安装MySQL8(单机) - 自学精灵
更多推荐
所有评论(0)