使用持久卷部署 WordPress 和 MySQL

🗓️实验环境

OS名称Microsoft Windows 11 家庭中文版
系统类型x64-based PC
Docker版本Docker version 24.0.6, build ed223bc
minikube版本v1.32.0

🖇️创建 kustomization.yaml

你可以通过 kustomization.yaml 中的生成器创建一个 Secret存储密码或密钥敏感数据对象。
kustomization.yaml

cat <<EOF >./kustomization.yaml
secretGenerator:
- name: mysql-passliterals:- password=YOUR_PASSWORD   #自定义密码
EOF

🗒️MySQL 和 WordPress 的资源配置

MySQL 容器将 PersistentVolume 挂载在 /var/lib/mysql。 MYSQL_ROOT_PASSWORD 环境变量根据 Secret 设置数据库密码。
mysql-deployment.yaml

apiVersion: v1
kind: Service
metadata:name: wordpress-mysqllabels:app: wordpress
spec:ports:- port: 3306selector:app: wordpresstier: mysqlclusterIP: None
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-pv-claimlabels:app: wordpress
spec:accessModes:- ReadWriteOnceresources:requests:storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:name: wordpress-mysqllabels:app: wordpress
spec:selector:matchLabels:app: wordpresstier: mysqlstrategy:type: Recreatetemplate:metadata:labels:app: wordpresstier: mysqlspec:containers:- image: mysql:8.0name: mysqlenv:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mysql-passkey: password- name: MYSQL_DATABASEvalue: wordpress- name: MYSQL_USERvalue: wordpress- name: MYSQL_PASSWORDvalueFrom:secretKeyRef:name: mysql-passkey: passwordports:- containerPort: 3306name: mysqlvolumeMounts:- name: mysql-persistent-storagemountPath: /var/lib/mysqlvolumes:- name: mysql-persistent-storagepersistentVolumeClaim:claimName: mysql-pv-claim

PersistentVolume 挂载到 /var/www/html,用于保存网站数据文件。 WORDPRESS_DB_HOST 环境变量设置上面定义的 MySQL Service 的名称,WordPress 将通过 Service 访问数据库。 WORDPRESS_DB_PASSWORD 环境变量根据使用 kustomize 生成的 Secret 设置数据库密码。
wordpress-deployment.yaml

apiVersion: v1
kind: Service
metadata:name: wordpresslabels:app: wordpress
spec:ports:- port: 80selector:app: wordpresstier: frontendtype: LoadBalancer
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: wp-pv-claimlabels:app: wordpress
spec:accessModes:- ReadWriteOnceresources:requests:storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:name: wordpresslabels:app: wordpress
spec:selector:matchLabels:app: wordpresstier: frontendstrategy:type: Recreatetemplate:metadata:labels:app: wordpresstier: frontendspec:containers:- image: wordpress:6.2.1-apachename: wordpressenv:- name: WORDPRESS_DB_HOSTvalue: wordpress-mysql- name: WORDPRESS_DB_PASSWORDvalueFrom:secretKeyRef:name: mysql-passkey: password- name: WORDPRESS_DB_USERvalue: wordpressports:- containerPort: 80name: wordpressvolumeMounts:- name: wordpress-persistent-storagemountPath: /var/www/htmlvolumes:- name: wordpress-persistent-storagepersistentVolumeClaim:claimName: wp-pv-claim

将内容追加到 kustomization.yaml

cat <<EOF >>./kustomization.yaml
resources:- mysql-deployment.yaml- wordpress-deployment.yaml
EOF

应用目录下文件:

rkun1@LAPTOP-TUS5FU0D MINGW64 ~/minikube-env
$ ls
kustomization.yaml  mysql-deployment.yaml  wordpress-deployment.yaml rkun1@LAPTOP-TUS5FU0D MINGW64 ~/minikube-env
$ kubectl apply -k ./
secret/mysql-pass-km27c7kb5t created
service/wordpress created
service/wordpress-mysql created
persistentvolumeclaim/mysql-pv-claim created
persistentvolumeclaim/wp-pv-claim created
deployment.apps/wordpress created
deployment.apps/wordpress-mysql created

📌验证信息

rkun1@LAPTOP-TUS5FU0D MINGW64 ~/minikube-env
$ kubectl get svc
NAME              TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes        ClusterIP      10.96.0.1        <none>        443/TCP        8d
wordpress         LoadBalancer   10.111.241.246   <pending>     80:32583/TCP   6m52s
wordpress-mysql   ClusterIP      None             <none>        3306/TCP       6m52srkun1@LAPTOP-TUS5FU0D MINGW64 ~/minikube-env
$ kubectl get secrets
NAME                    TYPE     DATA   AGE
mysql-pass-km27c7kb5t   Opaque   1      7m5srkun1@LAPTOP-TUS5FU0D MINGW64 ~/minikube-env
$ kubectl get pods
NAME                               READY   STATUS    RESTARTS   AGE
wordpress-79669d56c6-ww62t         1/1     Running   0          7m12s
wordpress-mysql-6cdf6b85df-7dq9h   1/1     Running   0          7m12s

本地minikube只能使用NodePort,运行以下命令以获取 WordPress 服务的 IP 地址

minikube service wordpress --url
$ minikube service wordpress --url
W1119 20:15:12.068839   25968 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\rkun1\.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
http://127.0.0.1:49401
❗  因为你正在使用 windows 上的 Docker 驱动程序,所以需要打开终端才能运行它。

使用浏览器访问:
image.png
数据存储在mysql服务中,mysql使用的存储资源是从环境获取的

查看PV信息:

rkun1@LAPTOP-TUS5FU0D MINGW64 ~
$ kubectl describe pv
Name:            pvc-30474999-b5e8-4b3a-8a47-135c469cb7c1
Labels:          <none>
Annotations:     hostPathProvisionerIdentity: bb8975c2-5e31-4b2b-829f-948164f82d6apv.kubernetes.io/provisioned-by: k8s.io/minikube-hostpath
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    standard
Status:          Bound
Claim:           default/mysql-pv-claim
Reclaim Policy:  Delete
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        20Gi
Node Affinity:   <none>
Message:
Source:Type:          HostPath (bare host directory volume)Path:          /tmp/hostpath-provisioner/default/mysql-pv-claimHostPathType:
Events:            <none>Name:            pvc-e25bb604-379b-4883-bc5c-fa3fe03c6301
Labels:          <none>
Annotations:     hostPathProvisionerIdentity: bb8975c2-5e31-4b2b-829f-948164f82d6apv.kubernetes.io/provisioned-by: k8s.io/minikube-hostpath
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    standard
Status:          Bound
Claim:           default/wp-pv-claim
Reclaim Policy:  Delete
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        20Gi
Node Affinity:   <none>
Message:
Source:Type:          HostPath (bare host directory volume)Path:          /tmp/hostpath-provisioner/default/wp-pv-claimHostPathType:
Events:            <none>

进入minikube虚拟环境,可以查看到pv所挂载的目录:

rkun1@LAPTOP-TUS5FU0D MINGW64 ~
$ minikube ssh
W1119 20:23:02.886020    3824 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\rkun1\.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
docker@minikube:~$ cd /tmp/hostpath-provisioner/default
docker@minikube:/tmp/hostpath-provisioner/default$ ls
mysql-pv-claim  wp-pv-claim

进入目录可以查看到mysql的一些配置文件以及数据:

docker@minikube:/tmp/hostpath-provisioner/default$ cd mysql-pv-claim/
docker@minikube:/tmp/hostpath-provisioner/default/mysql-pv-claim$ ls
'#ib_16384_0.dblwr'   binlog.index      ibtmp1               server-cert.pem
'#ib_16384_1.dblwr'   ca-key.pem        mysql                server-key.pem
'#innodb_redo'        ca.pem            mysql.ibd            sys
'#innodb_temp'        client-cert.pem   mysql.sock           undo_001auto.cnf             client-key.pem    performance_schema   undo_002binlog.000001        ib_buffer_pool    private_key.pem      wordpressbinlog.000002        ibdata1           public_key.pem

🗑️清理资源

kubectl delete -k ./
rkun1@LAPTOP-TUS5FU0D MINGW64 ~
$ cd minikube-env/rkun1@LAPTOP-TUS5FU0D MINGW64 ~/minikube-env
$ ls
kustomization.yaml  mysql-deployment.yaml  wordpress-deployment.yamlrkun1@LAPTOP-TUS5FU0D MINGW64 ~/minikube-env
$ kubectl delete -k ./
secret "mysql-pass-km27c7kb5t" deleted
service "wordpress" deleted
service "wordpress-mysql" deleted
persistentvolumeclaim "mysql-pv-claim" deleted
persistentvolumeclaim "wp-pv-claim" deleted
deployment.apps "wordpress" deleted
deployment.apps "wordpress-mysql" deleted

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/155019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 迭代器

可迭代对象 可以直接作用于for循环的对象统称为可迭代对象 &#xff08;iterable&#xff09;。可以用isinstance()去判断一个对象是否是iterable对象。 数据类型 可以直接作用于for循环的数据类型一般分为两种 1.集合数据类型&#xff0c;如list、tuple、dict、set、strin…

使用Arrays.asList与不使用的区别

在写算法的时候&#xff0c;遇到了有的题解使用的是Arrays.asList&#xff0c;也有的是直接新建一个List集合将元素加进去的。 看了一下算法的时间&#xff0c;两者居然相差了9秒。 算法原地址&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长…

类和对象学习笔记

类和对象 类的定义this指针类的6个默认成员函数构造函数析构函数拷贝构造函数赋值运算符重载赋值运算符重载运算符重载const成员 取地址操作符重载const取地址操作符重载 初始化列表explicit关键字static成员匿名对象友元内部类拷贝对象时编译器的优化 类的定义 c类的定义形式…

使用SpringBoot开发一个API网关

已经有很多开源的网关了&#xff0c;而且大公司一般都有自己的网关系统&#xff0c;但是有些场景也离不开我们自己需求定制&#xff0c;可以使用SpringCloud GateWay来满足我们业务的需求&#xff0c;即使需要在网关层实现一些具体的业务逻辑&#xff0c;我们也可以在开源的基础…

基于Bagging集成学习方法的情绪分类预测模型研究(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

电脑监控软件解读

电脑监控软件是这信息化时代下的产物&#xff0c;随着计算机在生活、学习和工作中的普及&#xff0c;管理和保护计算机数据安全变得越来越重要。电脑监控软件应时而生&#xff0c;能够帮助用户更好地管理计算机使用&#xff0c;从而达到保护数据安全&#xff0c;和提高工作效率…

如何判断一个公司是否为空壳公司

什么是空壳公司&#xff1f; “空壳公司”也叫现成公司&#xff08;readymade company&#xff09;。最早是根据英国公司法确立的一种公司法律形式。是发起人根据香港或英国的法律成立的有限公司&#xff0c;但是没有任命第一任董事&#xff0c;也没有投资者认购股份&#xff…

【每日OJ —— 232.用栈实现队列(栈)】

每日OJ —— 232.用栈实现队列&#xff08;栈&#xff09; 1.题目&#xff1a;232.用栈实现队列&#xff08;栈&#xff09;2.解法2.1.方法讲解2.1.1.算法讲解2.1.2.代码实现2.1.3.提交通过展示 1.题目&#xff1a;232.用栈实现队列&#xff08;栈&#xff09; 2.解法 2.1.方法…

windows上 adb devices有设备 wsl上没有

终于解决了&#xff01;&#xff01;&#xff01;&#xff01; TAT&#xff0c;尝试了很多种办法。 比如WSL中的adb和Windows中的adb版本必须一致&#xff0c;一致也没用&#xff0c;比如使用 ln 建立链接也没用。 这个解决办法的前提是windows中的abd是好用的。 ●在windows…

简单php反序列化实现执行代码

简单php反序列化实现执行代码 反序列化举例 首先定义类和对象&#xff0c;然后输出序列化和反序列化结果看看这是个什么东西 <?phpclass Stu{public $name;public $age;public $sex;public $score;}$stu1 new Stu();$stu1->name "order";$stu1->age …

部署Kubernetes Dashboard

Dashboard简介 Dashboard 是基于网页的 Kubernetes 用户界面。 可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中&#xff0c;也可以对容器应用排错&#xff0c;还能管理集群资源。 Dashboard创建 #创建pods kubectl apply -f https://raw.githubusercontent.com/kub…

北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595(仿真方法验证)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 使用FPGA开发板验证的教程&#xff0c;请参考 北邮…

el-tabs首次进入左边缺失边距解决办法

目前发现是UI渲染的问题&#xff0c;页面首次加载el-tabs__nav-wrap和el-tabs__nav-scroll的左边距莫名丢失&#xff0c;页面跳转走再跳转回来页面就恢复正常了&#xff0c;要想初始时候就正常可以添加下列css代码 .el-tabs__nav-wrap, .el-tabs__nav-scroll{margin-left: 20…

MySql分区

一、什么是分区 MySQL分区是一种数据库设计和管理技术&#xff0c;它允许你将表分割成独立的、具有特定规则的存储单元。每个分区可以独立地进行管理&#xff0c;包括备份、恢复和优化。分区的主要目的是提高查询性能、简化维护以及实现数据的更有效管理。 以下是MySQL分区的…

linux控制台命令

进入root sudo su root 浏览当前文件夹列表 ll ls 查看文件 vim test.txt :q 退出查看模式 上传 sudo rz rz 覆盖上传 rz -y 修改文件名&#xff1a; mv 旧文件名 新文件名 修改文件权限 sudo chmod ar xxx.txt sudo chmod 777 test.txt 7 4 2 1 读写运行权限…

flink 1.17.1的pom.xml模板

flink 1.17.1的pom.xml模板 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apa…

高速数据时代的引领者:ETU-LINK 100G DAC全系列技术简介

伴随科技的不断进步&#xff0c;我们正迅速迈向一个高速数据时代。在这个时代&#xff0c;数据的传输速度已经成为发展的重要因素之一。ETU-LINK推出的100G DAC全系列产品&#xff0c;助力高速数据传输领域的新一轮发展。 一、100G DAC全系列产品解析 100G QSFP28 DAC无源高速…

SQL的连接join

一、连接说明 union、intersect等集合运算&#xff0c;它的特征是以 “行” 为单位进行操作&#xff0c;通俗点说&#xff0c;就是进行这些集合运算&#xff0c;会导致记录行数的增减&#xff0c;使用union会增加记录行数&#xff0c;使用 intersect 或 expect 会减少行记录&a…

后端-锁专题:synchronized(java对象结构、锁的类型、锁升级流程...)

文章目录 对象的结构以及大小内存换算java的常见数据类型以及所占字节数分析对象总共占多少字节&#xff0c;各项占多少字节对象头结构 锁类型锁升级流程 对象的结构以及大小内存换算 java的常见数据类型以及所占字节数 String&#xff1a;8字节 64位 int&#xff1a;4字节 …

【中国大学生计算机设计大赛数据可视化赛道】国奖项目深入剖析—推动乡村振兴可视化分析平台【可视化项目案例-09】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本专栏包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不论你是初学者还是资深开发者,这里都有适合你的内容。…