首页
最新活动
服务器租用
香港服务器租用
台湾服务器租用
美国服务器租用
日本服务器租用
新加坡服务器租用
高防服务器
香港高防服务器
台湾高防服务器
美国高防服务器
裸金属
香港裸金属服务器
台湾裸金属服务器
美国裸金属服务器
日本裸金属服务器
新加坡裸金属服务器
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
CDN
CDN节点
CDN带宽
CDN防御
CDN定制
行业新闻
官方公告
香港服务器资讯
帮助文档
wp博客
zb博客
服务器资讯
联系我们
关于我们
机房介绍
机房托管
登入
注册
帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
联系客服
服务器资讯
/
香港服务器租用
/
香港VPS租用
/
香港云服务器
/
美国服务器租用
/
台湾服务器租用
/
日本服务器租用
/
官方公告
/
帮助文档
使用k8s部署Mysql实例~hostpath,nfs服务器,PV和PVC持久化
发布时间:2024-03-01 10:52:43 分类:帮助文档
使用k8s部署Mysql实例~hostpath,nfs服务器,PV和PVC持久化 1.k8s数据存储的分类: 1.基础存储的分类: 分类说明EmptyDirEmptyDir是在Pod被分配到Node时创建的,无须手动指定,当Pod销毁时, EmptyDir中的数据也会被永久删除HostPathHostPath就是将Node主机中一个实际目录挂载到Pod中,保证Pod销毁了,但是数据依旧可以存在于Node主机上NFSNFS是一个网络文件存储系统,解决了节点故障数据异常的问题 2.高级存储: 分类说明PV(Persistent Volume)是持久化卷的意思,是对底层的共享存储的一种抽象,PV相似于卷组(存储池)PVC(Persistent Volume Claim)是持久卷声明的意思,用户对于存储需求的一种声明,PVC如同在卷组中划分出的逻辑卷 3.高级存储的分类: 分类说明ConfigMapConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的,明文保存Secret它主要用于存储敏感信息,例如密码、秘钥、证书等等,可加密保存 2.基础存储-hostpath 1.创建mysql的yaml文件 cat << eof > mysql.yaml apiVersion: apps/v1 # 通过kubectl explain deployment命令查看版本 kind: Deployment # 资源类型 metadata: name: mysql-deployment # 资源名称 namespace: mysql # 指定命名空间 spec: replicas: 1 # 控制器下的pod数 selector: matchLabels: app: mysql # 这是控制器用来控制pod的标签 template: metadata: labels: app: mysql # pod的标签 spec: containers: - name: mysql # 容器名 image: mysql:8.0.20 # 容器镜像 env: # mysql环境参数 - name: MYSQL_ROOT_PASSWORD # 指定ROOT用户密码 value: "你的密码" ports: # 容器暴露的端口 - name: mysql containerPort: 3306 volumeMounts: # 容器内的被挂载目录 - name: mysql-data mountPath: /var/lib/mysql - name: mysql-config mountPath: /etc/mysql/conf.d volumes: # 声明volume(宿主机目录), name为logs-volume - name: mysql-data hostPath: path: /root/mysql/data type: DirectoryOrCreate # 目录存在就使用,不存在就先创建后使用 - name: mysql-config hostPath: path: /root/mysql/conf type: DirectoryOrCreate # 目录存在就使用,不存在就先创建后使用 --- apiVersion: v1 kind: Service metadata: name: mysql-nodeport namespace: mysql spec: selector: app: mysql # 服务通过此标签连接deployment资源来暴露端口 type: NodePort # 服务类型:NodePort ports: # 不指定NodePort端口就会自动分配,(默认的取值范围是:30000-32767) - protocol: TCP port: 3306 targetPort: 3306 eof 2.创建mysq应用: kubectl apply -f mysql.yaml 3.查看pod: [root@master mysql]# kubectl get deployment,pod,svc -n mysql -o wide NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/mysql-deployment 1/1 1 1 7m57s deployment.apps/nginx 1/1 1 1 15d NAME READY STATUS RESTARTS AGE pod/mysql-deployment-b68b5b8bc-jps5c 1/1 Running 0 7m57s pod/nginx-6867cdf567-phn5l 1/1 Running 1 148m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1
443/TCP 15d service/mysql-nodeport NodePort 10.98.118.107
3306:30160/TCP 7m57s service/nginx NodePort 10.103.194.224
80:30105/TCP 15d 4.远程连接: [root@localhost ~]# mysql -h192.168.174.30 -P30160 -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 3.基础存储-nfs服务器 1.安装nfs服务器: master节点上: 使配置生效 exportfs -r 将共享目录以读写权限暴露给192.168.174.0/24网段中的所有主机 cat << eof >> /etc/exports /root/nfs/mysql 192.168.174.0/24(rw,no_root_squash) eof 启动nfs服务 systemctl enable nfs-server;systemctl restart nfs-server 准备一个共享目录 mkdir -p /root/nfs/mysql -pv;chmod o=rwx /root/nfs/mysql 在master上安装nfs服务: yum install nfs-utils -y node节点: 接下来,要在的每个node节点上都安装下nfs,这样的目的是为了node节点可以驱动nfs设备 yum install nfs-utils -y systemctl enable nfs-server;systemctl restart nfs-server 2.创建mysql的yaml文件: cat << eof > mysql.yaml apiVersion: apps/v1 # 通过kubectl explain deployment命令查看版本 kind: Deployment # 资源类型 metadata: name: mysql-deployment # 资源名称 namespace: mysql # 指定命名空间 spec: replicas: 1 # 控制器下的pod数 selector: matchLabels: app: mysql # 这是控制器用来控制pod的标签 template: metadata: labels: app: mysql # pod的标签 spec: containers: - name: mysql # 容器名 image: mysql:8.0.20 # 容器镜像 env: # mysql环境参数 - name: MYSQL_ROOT_PASSWORD # 指定ROOT用户密码 value: "你的密码" ports: # 容器暴露的端口 - name: mysql containerPort: 3306 volumeMounts: # 容器内的被挂载目录 - name: mysql-data mountPath: /var/lib/mysql volumes: # 声明volume(宿主机目录), name为logs-volume - name: mysql-data nfs: server: 192.168.174.30 # nfs服务器地址 # /root/nfs/mysql是共享目录,data是创建的一个目录用来存储mysql数据 path: /root/nfs/mysql/data # 共享文件路径(服务器地址) --- apiVersion: v1 kind: Service metadata: name: mysql-nodeport namespace: mysql spec: selector: app: mysql # 服务通过此标签连接deployment资源来暴露端口 type: NodePort # 服务类型:NodePort ports: # 不指定NodePort端口就会自动分配,(默认的取值范围是:30000-32767) - protocol: TCP port: 3306 targetPort: 3306 eof 3.创建mysq应用: kubectl apply -f mysql.yaml 4.查看pod: [root@master ~]# kubectl get deployment,pod,svc -n mysql -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR deployment.apps/mysql-deployment 1/1 1 1 3m17s mysql mysql:8.0.20 app=mysql NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/mysql-deployment-5fb47b585b-k7bdm 1/1 Running 0 3m17s 10.244.2.9 node2
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR service/mysql-nodeport NodePort 10.99.39.122
3306:31819/TCP 3m17s app=mysql 5.查看master节点上的目录: pod所在node节点是没有目录的,直接使用nfs服务器的目录 [root@master ~]# ll nfs/mysql/data/ total 181696 -rw-r----- 1 polkitd input 56 Nov 29 05:20 auto.cnf -rw-r----- 1 polkitd input 912 Nov 29 05:20 binlog.000001 -rw-r----- 1 polkitd input 16 Nov 29 05:20 binlog.index -rw------- 1 polkitd input 1680 Nov 29 05:20 ca-key.pem -rw-r--r-- 1 polkitd input 1112 Nov 29 05:20 ca.pem -rw-r--r-- 1 polkitd input 1112 Nov 29 05:20 client-cert.pem -rw------- 1 polkitd input 1680 Nov 29 05:20 client-key.pem -rw-r----- 1 polkitd input 196608 Nov 29 05:20 #ib_16384_0.dblwr -rw-r----- 1 polkitd input 8585216 Nov 29 05:20 #ib_16384_1.dblwr -rw-r----- 1 polkitd input 5498 Nov 29 05:20 ib_buffer_pool -rw-r----- 1 polkitd input 12582912 Nov 29 05:20 ibdata1 -rw-r----- 1 polkitd input 50331648 Nov 29 05:20 ib_logfile0 -rw-r----- 1 polkitd input 50331648 Nov 29 05:20 ib_logfile1 -rw-r----- 1 polkitd input 12582912 Nov 29 05:20 ibtmp1 drwxr-x--- 2 polkitd input 187 Nov 29 05:20 #innodb_temp drwxr-x--- 2 polkitd input 143 Nov 29 05:20 mysql -rw-r----- 1 polkitd input 29360128 Nov 29 05:20 mysql.ibd drwxr-x--- 2 polkitd input 8192 Nov 29 05:20 performance_schema -rw------- 1 polkitd input 1680 Nov 29 05:20 private_key.pem -rw-r--r-- 1 polkitd input 452 Nov 29 05:20 public_key.pem -rw-r--r-- 1 polkitd input 1112 Nov 29 05:20 server-cert.pem -rw------- 1 polkitd input 1680 Nov 29 05:20 server-key.pem drwxr-x--- 2 polkitd input 28 Nov 29 05:20 sys -rw-r----- 1 polkitd input 10485760 Nov 29 05:20 undo_001 -rw-r----- 1 polkitd input 11534336 Nov 29 05:20 undo_002 6.远程连接: [root@localhost ~]# mysql -h192.168.174.30 -P30160 -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 4.高级存储-PV和PVC: 1.安装nfs服务器: master节点上: 使配置生效 exportfs -r 将共享目录以读写权限暴露给192.168.174.0/24网段中的所有主机 cat << eof >> /etc/exports /root/nfs/mysql 192.168.174.0/24(rw,no_root_squash) eof 启动nfs服务 systemctl enable nfs-server;systemctl restart nfs-server 准备一个共享目录 mkdir -p /root/nfs/mysql -pv;chmod o=rwx /root/nfs/mysql 在master上安装nfs服务: yum install nfs-utils -y node节点: 接下来,要在的每个node节点上都安装下nfs,这样的目的是为了node节点可以驱动nfs设备 yum install nfs-utils -y systemctl enable nfs-server;systemctl restart nfs-server 2.创建pv: cat << eof > pv1.yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv1 spec: capacity: # 存储能力,目前只支持存储空间的设置 storage: 3Gi accessModes: # 访问模式:读写权限,可以被多个节点挂载 - ReadWriteMany persistentVolumeReclaimPolicy: Retain # 回收策略 nfs: path: /root/nfs/mysql/data # 这里的路径必须和nfs服务器配置文件中的某一个一致 server: 192.168.174.30 # nfs服务器地址 eof kubectl apply -f pv1.yaml 3.创建mysql的yaml文件: cat << eof > mysql.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pvc namespace: mysql spec: accessModes: # 访问模式:读写权限,可以被多个节点挂载 - ReadWriteMany resources: requests: storage: 1Gi --- apiVersion: apps/v1 # 通过kubectl explain deployment命令查看版本 kind: Deployment # 资源类型 metadata: name: mysql-deployment # 资源名称 namespace: mysql # 指定命名空间 spec: replicas: 3 # 控制器下的pod数 selector: matchLabels: app: mysql # 这是控制器用来控制pod的标签 template: metadata: labels: app: mysql # pod的标签 spec: containers: - name: mysql # 容器名 image: mysql:8.0.20 # 容器镜像 env: # mysql环境参数 - name: MYSQL_ROOT_PASSWORD # 指定ROOT用户密码 value: "你的密码" ports: # 容器暴露的端口 - name: mysql containerPort: 3306 volumeMounts: # 容器内的被挂载目录 - name: mysql-data mountPath: /var/lib/mysql volumes: - name: mysql-data persistentVolumeClaim: claimName: mysql-pvc readOnly: false --- apiVersion: v1 kind: Service metadata: name: mysql-nodeport namespace: mysql spec: selector: app: mysql # 服务通过此标签连接deployment资源来暴露端口 type: NodePort # 服务类型:NodePort ports: # 不指定NodePort端口就会自动分配,(默认的取值范围是:30000-32767) - protocol: TCP port: 3306 targetPort: 3306 eof 4.创建mysq应用: kubectl apply -f mysql.yaml 5.查看pod: [root@master ~]# kubectl get deployment,pod,svc,pvc -n mysql -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR deployment.apps/mysql-deployment 3/3 3 3 3m4s mysql mysql:8.0.20 app=mysql NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/mysql-deployment-574486b789-l9f4h 1/1 Running 0 3m4s 10.244.2.14 node2
pod/mysql-deployment-574486b789-ng4x8 1/1 Running 0 3m4s 10.244.1.6 node1
pod/mysql-deployment-574486b789-sqsll 1/1 Running 2 3m4s 10.244.2.13 node2
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR service/mysql-nodeport NodePort 10.105.41.7
3306:30165/TCP 3m4s app=mysql NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE VOLUMEMODE persistentvolumeclaim/mysql-pvc Bound pv1 3Gi RWX 3m4s Filesystem [root@master ~]# kubectl get pv -o wide NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE pv1 3Gi RWX Retain Bound mysql/mysql-pvc 4m Filesystem 6.远程连接: [root@localhost ~]# mysql -h192.168.174.30 -P30165 -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
上一篇
日本高清视频录播服务器器
下一篇
腾讯云香港服务器接入商所属区域
相关文章
腾讯云debian服务器的连接与初始化
备案管理用户名怎么注册
工信部备案系统怎么登陆
域名注册怎么样比较好记
雾锁王国Enshrouded服务器进不去?自建完美解决
Linux 服务器查看每个用户或者当前用户的磁盘占用量及文件同步
Linux 常用操作命令(CentOS 7.0)- 故障定位:服务器负载、进程管理、日志分析
当黑客入侵了服务器后会发生什么
【幻兽帕鲁】快速一键部署私人服务器
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价
7*24H在线售后
高可用资源,安全稳定
1v1专属客服对接
无忧退款试用保障
德讯电讯股份有限公司
电话:00886-982-263-666
台湾总部:台北市中山区建国北路一段29号3楼
香港分公司:九龙弥敦道625号雅兰商业二期906室
服务器租用
香港服务器
日本服务器
台湾服务器
美国服务器
高防服务器购买
香港高防服务器出租
台湾高防服务器租赁
美国高防服务器DDos
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
行业新闻
香港服务器租用
服务器资讯
香港云服务器
台湾服务器租用
zblog博客
香港VPS
关于我们
机房介绍
联系我们
Copyright © 1997-2024 www.hkstack.com All rights reserved.