k8s 安装nfs_K8S 部署 Mysql(NFS 持久化)

K8S

Kubernetes 就不多说了,之前也说过很多次了,作为目前大家都在谈论的东西,肯定是极好的。接下来直接上正文部署吧,接下来的几篇部署文档都很简单,直接上配置。

MySQL 部署

部署 MySQL 的前提是有 K8s 集群,之前有一篇已经详细写过如何测试部署 K8s 集群了,这里就不再多说。

NFS 服务创建

这里不说了,大家可以自行搜索一下创建 NFS 存储服务,这里依赖的持久化就是 NFS 服务。

MySQL PV/PVC 创建

Persistent Volume 和 Persistent Volume Claim,主要是管理服务持久化的存储资源 Volume。这里我们先创建 PV,再创建 PVC,将两者绑定。

首先是 mysql-pv.yaml

kind:PersistentVolumeapiVersion:v1metadata:name:mysql-pvnamespace:databasespec:accessModes:- ReadWriteOncecapacity:storage:1GipersistentVolumeReclaimPolicy:RetainstorageClassName:nfsnfs:path:/data/nfs/mysqlserver:nfs服务IP

配置中包含命名空间,模式 ReadWriteOnce,资源分配,名称对应,nfs 路径等等等。。

执行

kubectl apply -f mysql-pv.yaml

接下来是 mysql-pvc.yaml

kind:PersistentVolumeClaimapiVersion:v1metadata:name:mysql-pvcnamespace:databasespec:accessModes:- ReadWriteOnceresources:requests:storage:1GistorageClassName:nfs

这里其他配置与 PV 保持一致,同一命名空间 database 下,同一个 storageClassName

执行

kubectl apply -f mysql-pvc.yaml

创建好后我们来看一下状态。

kubectl get pv -n database

正常的 PV 状态如下

NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE

mysql-pv 1Gi RWO Retain Bound database/mysql-pvc nfs 4d3h

STATUS 是 BOUND 状态

接下来看一下 pvc

kubectl get pvc -n database

正常状态如下

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE

mysql-pvc Bound mysql-pv 1Gi RWO nfs 4d3h

STATUS 依旧是 BOUND,我们的 PV/PVC 持久化搭建完毕

MySQL Deploy 创建

这里是我们服务的本体,关于 Deploy 就不多说了

这里我们创建 mysql-deploy.yaml

apiVersion:apps/v1kind:Deploymentmetadata:name:mysqlnamespace:databasespec:selector:matchLabels:app:mysqltemplate:metadata:labels:app:mysqlspec:containers:- name:mysqlimage:mysql:5.7env:- name:MYSQL_ROOT_PASSWORDvalue:"password"ports:- containerPort:3306volumeMounts:- name:mysql-persistent-storagemountPath:/var/lib/mysqlvolumes:- name:mysql-persistent-storagepersistentVolumeClaim:claimName:mysql-pvc

这里我们配置的是 MySQL 服务相关信息,包括镜像的拉取,内部存储的映射。没有什么大问题等待服务部署成功就好了。

kubectl apply -f mysql-deploy.yaml

MySQL Service 创建

Deploy 部署我们服务的本体,接下来创建访问服务的通道。

创建 mysql-service.yaml

apiVersion:v1kind:Servicemetadata:name:mysqlnamespace:databasespec:type:NodePortports:- port:3306targetPort:3306nodePort:31111selector:app:mysqlselector:app:mysql

这里我选择 NodePort 类型,是因为用 31111 端口将服务暴露出来,不过用于我们同一个命名空间下的服务,可以直接通过服务名字进行访问。

kubectl apply -f mysql-service.yaml

可以根据我们的 MySQL 所在 Node+31111 的形式进行访问了。nfs 服务器上已经创建了相关 MySQL 持久化文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值