当前位置: 首页 > news >正文

基于k8s部署wordpress博客系统并实现数据的持久化

基于k8s实现wordpress博客系统部署并实现数据的持久化

1、准备k8s环境

#一主两从环境
[root@k8s-master01 ~]# kubectl get nodes -owide
NAME                       STATUS   ROLES           AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
k8s-master01.dinginx.org   Ready    control-plane   29d   v1.34.1   11.0.1.10     <none>        Ubuntu 22.04.2 LTS   5.15.0-157-generic   docker://28.4.0
k8s-node01.dinginx.org     Ready    <none>          29d   v1.34.1   11.0.1.11     <none>        Ubuntu 22.04.2 LTS   5.15.0-157-generic   docker://28.4.0
k8s-node02.dinginx.org     Ready    <none>          29d   v1.34.1   11.0.1.12     <none>        Ubuntu 22.04.2 LTS   5.15.0-157-generic   docker://28.4.0[root@k8s-master01 ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
controller-manager   Healthy   ok        
scheduler            Healthy   ok        
etcd-0               Healthy   ok   

2、准备yaml文件

2.1 namespace的yaml

[root@k8s-node01 ~/web03]# kubectl create namespace web03 --dry-run=client -oyaml > /root/web03/web03-ns.yaml
[root@k8s-node01 ~/web03]# cat web03-ns.yaml 
apiVersion: v1
kind: Namespace
metadata:name: web03
spec: {}
status: {}
[root@k8s-node01 ~]# kubectl apply -f  web03/web03-ns.yaml

2.2 pv的yaml文件

apiVersion: v1
kind: PersistentVolume
metadata:name: dinginx-pvnamespace: blog
spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: standardhostPath:path: "/mnt/data"

2.3 pvc的yaml文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: dinginx-pv-claimnamespace: blog
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5GistorageClassName: standard

2.4 mysql的yaml文件

apiVersion: v1
kind: Pod
metadata:name: mysqlnamespace: bloglabels:app: mysql
spec:volumes:- name: dinginx-pv-storagepersistentVolumeClaim:claimName: dinginx-pv-claimcontainers:- name: mysqlimage: mysql:8.0imagePullPolicy: IfNotPresentenv:- name: MYSQL_ROOT_PASSWORDvalue: "123456"- name: MYSQL_USERvalue: "wpuser"- name: MYSQL_PASSWORDvalue: "wppass"- name: MYSQL_DATABASEvalue: "wordpress"volumeMounts:- mountPath: "/var/lib/mysql"name: dinginx-pv-storagerestartPolicy: Always

2.5 service的yaml文件

apiVersion: v1
kind: Service
metadata:name: mysqlnamespace: bloglabels:app: mysql
spec:ports:- name: mysqlport: 3306protocol: TCPtargetPort: 3306selector:app: mysqltype: ClusterIP

2.6 wordpress的yaml文件

apiVersion: v1
kind: Pod
metadata:name: wordpressnamespace: bloglabels:app: wordpress
spec:containers:- name: wordpressimage: wordpress:6imagePullPolicy: IfNotPresentenv:- name: WORDPRESS_DB_HOSTvalue: mysql- name: WORDPRESS_DB_NAMEvalue: wordpress- name: WORDPRESS_DB_USERvalue: wpuser- name: WORDPRESS_DB_PASSWORDvalue: wppassrestartPolicy: Always

2.7 wordpress的service的yaml

apiVersion: v1
kind: Service
metadata:name: wordpressnamespace: bloglabels:app: wordpress
spec:ports:- name: 80-80port: 80protocol: TCPtargetPort: 80type: NodePort

3 创建资源并验证

3.1 整合yaml文件

[root@k8s-node01 ~]# cat wordpress-pvc.yaml 
apiVersion: v1
kind: Namespace
metadata:name: blog
---
apiVersion: v1
kind: PersistentVolume
metadata:name: dinginx-pvnamespace: blog
spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: standardhostPath:path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: dinginx-pv-claimnamespace: blog
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5GistorageClassName: standard
---
apiVersion: v1
kind: Pod
metadata:name: mysqlnamespace: bloglabels:app: mysql
spec:volumes:- name: dinginx-pv-storagepersistentVolumeClaim:claimName: dinginx-pv-claimcontainers:- name: mysqlimage: mysql:8.0imagePullPolicy: IfNotPresentenv:- name: MYSQL_ROOT_PASSWORDvalue: "123456"- name: MYSQL_USERvalue: "wpuser"- name: MYSQL_PASSWORDvalue: "wppass"- name: MYSQL_DATABASEvalue: "wordpress"volumeMounts:- mountPath: "/var/lib/mysql"name: dinginx-pv-storagerestartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:name: mysqlnamespace: bloglabels:app: mysql
spec:ports:- name: mysqlport: 3306protocol: TCPtargetPort: 3306selector:app: mysqltype: ClusterIP
---
apiVersion: v1
kind: Pod
metadata:name: wordpressnamespace: bloglabels:app: wordpress
spec:containers:- name: wordpressimage: wordpress:6imagePullPolicy: IfNotPresentenv:- name: WORDPRESS_DB_HOSTvalue: mysql- name: WORDPRESS_DB_NAMEvalue: wordpress- name: WORDPRESS_DB_USERvalue: wpuser- name: WORDPRESS_DB_PASSWORDvalue: wppassrestartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:name: wordpressnamespace: bloglabels:app: wordpress
spec:ports:- name: 80-80port: 80protocol: TCPtargetPort: 80type: NodePort

3.2 创建资源

[root@k8s-node01 ~]# kubectl apply -f  wordpress-pvc.yaml 
[root@k8s-node01 ~]# kubectl -n blog get pod,svc
NAME            READY   STATUS    RESTARTS   AGE
pod/mysql       1/1     Running   0          5h8m
pod/wordpress   1/1     Running   0          5h8mNAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/mysql       ClusterIP   10.102.99.199   <none>        3306/TCP       5h8m
service/wordpress   NodePort    10.106.78.131   <none>        80:31255/TCP   5h8m#进入容器验证
[root@k8s-node01 ~]# kubectl -n blog exec -it pods/wordpress -- /bin/bash
root@wordpress:/var/www/html# curl -Ik 127.0.0.1
HTTP/1.1 301 Moved Permanently
Date: Mon, 27 Oct 2025 00:44:32 GMT
Server: Apache/2.4.65 (Debian)
X-Powered-By: PHP/8.3.27
X-Redirect-By: WordPress
Location: http://127.0.0.1:31255/
Content-Type: text/html; charset=UTF-8#宿主机验证
[root@k8s-node01 ~]# curl 127.0.0.1:31255 -I
HTTP/1.1 200 OK
Date: Mon, 27 Oct 2025 00:46:10 GMT
Server: Apache/2.4.65 (Debian)
X-Powered-By: PHP/8.3.27
Link: <http://11.0.1.10:31255/wp-json/>; rel="https://api.w.org/"
Content-Type: text/html; charset=UTF-8

3.3 浏览器通过service暴露的端口访问

http://11.0.1.10:31255/

在这里插入图片描述

http://www.dtcms.com/a/545044.html

相关文章:

  • SQL 查询语句的子句的执行顺序
  • sql 双游标循环
  • SQL 189 统计有未完成状态的试卷的未完成数和未完成率
  • 有哪些做微信小游戏的网站建设网站后期人员薪酬
  • 黑龙江交通基础设施建设网站怎么做推广网站
  • 企业微信AI SCRM推荐:从技术适配与场景功能实践进行评估
  • 从开源到落地:SimpleBGC 三轴稳像平台全栈技术解析(下)
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十六)集群部署模块——Keepalived双机热备
  • 网站建设论坛做一个网站的流程
  • 金仓数据库平替MongoDB:银行存款系统国产化实践
  • 基于 Spring AI Alibaba 搭建 Text-To-SQL 智能系统(前置介绍)
  • 搞笑资讯网站源码数据库支持的网站怎么做
  • 友思特应用 | 基于高精度双目散斑 3D 相机的放射治疗视觉定位应用
  • MCU寄存器配置深度解析:从原理到实践
  • 论文学习_LLM4Decompile: Decompiling Binary Code with Large Language Models
  • 【日记】好耶!是新电脑!(3959 字)
  • Day73 嵌入式传感器技术全栈开发
  • 学历提升有几种方式长沙正规seo优化公司
  • 合肥网络公司 网站建设网站建设 预算
  • 23大数据 数据挖掘集合
  • Docker Compose曝路径遍历漏洞,可致任意覆写文件(CVE-2025-62725)
  • 网站可以分为哪些类型怎样优化自己的网站
  • Rust 模式匹配的穷尽性检查:从编译器证明到工程演进
  • C# Entity Framework Core 中的 Include 和 ThenInclude 详解
  • Linux如何远程控制Windows?rdesktop让跨系统操作像本地一样流畅
  • Spring Boot3零基础教程,JVM 编译原理,笔记87
  • Rust 变量声明与可变性:从设计哲学到工程实践
  • 深圳苍松大厦 网站建设对网站做综合搜索引擎优化分析
  • 数据结构 09 二叉树作业
  • 建网站需要买什么平台公司信用评级