k8s部署wordpress及性能优化

镜像版本:wordpress

mysql版本:mysql:8.0.27

部署wordpress:v1

此版本包含wordpress基础服务,可访问,但是一旦pod重新创建会丢失数据,文章中的图片等也会丢失,且只又一个pod,性能不够

文件目录

wordpress-mysql.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "123"
            - name: MYSQL_DATABASE
              value: wordpress
            - name: MYSQL_USER
              value: wordpress
            - name: MYSQL_PASSWORD
              value: wordpress

 wordpress-svc.yml

apiVersion: v1
kind: Service
metadata:
  name: wordpress
spec:
  type: NodePort
  ports:
  - port: 9999
    targetPort: 80
    nodePort: 30080
  selector:
    app: wordpress

 wordpress.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
        - name: wordpress
          image: wordpress
          env:
            - name: WORDPRESS_DB_HOST
              value: 10.244.1.16  # 连接数据库,这里的IP地址是你的MySQL数据库的IP地址
            - name: WORDPRESS_DB_USER
              value: wordpress
            - name: WORDPRESS_DB_PASSWORD
              value: wordpress

执行命令kubectl apply -f .

查看pod,svc

此时pod,svc正常,在查看pod的endpoint表中有没有wordpress-mysql的pod的ip

登录wordpress界面

按照提示输入账号和密码

在文章中点击写文章,写下文字并且上传图片,点击发布

此时模拟pod损坏,删除pod,完成后再次查看,新建的pod正在run

此时刷新网站,发现出现数据库连接错误

解决:此时wordpress.yml连接是数据库id发生改变,需要查看新pod的id并且修改即可

此时发现之前的数据已经丢失

部署wordpress:v2

此版本基于deployment创建多个pod,把数据库分出来,再加上nfs数据共享

mysql-svc.yml

apiVersion: v1
kind: Service
metadata:
  name: mysql-v2
spec:
  clusterIP: 10.110.100.100  #,虚拟ip,此时先固定svc的ip
  ports:
  - port: 3306
    targetPort: 3306  #port 是 Service 自身暴露的端口,targetPort 是将请求转发后端pod端口
  selector:
    app: mysql8    #标签选择器

wordpress.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-mysql
spec:
  replicas: 3    #deploy启动3个副本
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      volumes:
        - name: wp
          nfs:    #使用nfs持久化存储
            server: 192.168.199.149    #存储到149的指定目录下
            path: /data/nfs/dddd/
            readOnly: false        #关闭只读,可能权限不够,建议开启
      containers:
        - name: wordpress
          image: wordpress
          env:
            - name: WORDPRESS_DB_HOST
              value: 10.110.100.100 # 连接数据库,这里的IP地址是你的MySQL数据库的IP地址
            - name: WORDPRESS_DB_USER
              value: wordpress
            - name: WORDPRESS_DB_PASSWORD
              value: wordpress
          volumeMounts:
            - mountPath: /var/www/html # 正确的键名是 `mountPath` 而非 `ountPath`
              name: wp

wordprss-svc

apiVersion: v1
kind: Service
metadata:
  name: wordpress
spec:
  type: NodePort
  ports:
  - port: 9999
    targetPort: 80
    nodePort: 30088
  selector:
    app: wordpress

wordpress-mysql.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql8
  template:
    metadata:
      labels:
        app: mysql8
    spec:
      volumes:
        - name: test-volume
          nfs:
            server: 192.168.199.149
            path: /data/nfs/hahah/
            readOnly: false
      containers:
        - name: mysql
          image: mysql
          volumeMounts:
            - mountPath: /var/lib/mysql
              name: test-volume
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "123"
            - name: MYSQL_DATABASE
              value: wordpress
            - name: MYSQL_USER
              value: wordpress
            - name: MYSQL_PASSWORD
              value: wordpress

注意一:

wordpress.yml中   volumeMounts.mountPath路径要写对,否则会丢失数据(与mysql数据存储地方不同)

注意二:

本次实验用到两个svc,两个deploy

svc

deploy

最后查看所有svc,pod

测试

首先添加文字和图片,文字存储在mysql数据库中,图片文件存储在podd/var/www/html中

完成后删除所有pod,再次登录查看之前的数据,图片是否存在

部署wordpress:v3

优化:把wordpress中Deployment.spec.containres.template.env下面的

- name: WORDPRESS_DB_HOST
             # value: 10.110.100.100 

             # value: mysql-v3                     #这里可以写成svc的名称,此时svc的ip可以改变

mysql-svc.yml   注释掉clusterIP,此时IP会自动更换

apiVersion: v1
kind: Service
metadata:
  name: mysql-v3
spec:
 # clusterIP: 10.110.100.100
  ports:
  - port: 3306
    targetPort: 3306
  selector:
    app: mysql8

原因:

最后两个cordens会解析svc对应的ip

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于PSO粒子群优化的CNN-GRU的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 卷积神经网络(CNN) 4.2 CNN-GRU模型架构 4.3 CNN-GRU结合PSO的时间序列预测 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软…

20240622 每日AI必读资讯

🤖力压GPT-4o!新王Claude 3.5 Sonnet来了,直接免费可用 - 新模型在推理、知识和编码能力评估方面超越了以前的版本和竞争对手GPT 4o模型,同时其运行速度是Claude 3 Opus的两倍。 - 该模型可在http://Claude.ai和Claude iOS应用上…

牛客练习题打卡--redis

A list保证数据线性有序且元素可重复,它支持lpush、blpush、rpop、brpop等操作,可以当作简单的消息队列使用,一个list最多可以存储2^32-1个元素; redis中set是无序且不重复的; zset可以按照分数进行排序 ,是有序不重复的; Redi…

5步快速了解电商渠道数字化管理||电商API数据采集|数据分析

随着电商平台的飞速发展,电商渠道占据品牌经销渠道的比重越来越大,以前只有线下经销渠道的时代已经结束,但是随着渠道的拓展,其中出现了很多问题,如线上渠道或者店铺数量更大、扰乱秩序成本更低、日常上线和下线变动价…

『FPGA通信接口』LVDS接口(4)LVDS接收端设计

文章目录 1.LVDS接收端概述2逻辑框图3.xapp855训练代码解读4.接收端发送端联调5.传送门 1.LVDS接收端概述 接收端的传输模型各个属性应该与LVDS发送端各属性一致,例如,如果用于接收CMOS图像传感器的图像数据,则接收端程序的串化因子、通道个…

ardupilot开发 --- Jetson Orin Nano 后篇

我拼命加速,但贫穷始终快我一步 0~1920. visp-d455:基于IBVS的Pixhawk无人机视觉伺服20.1 基础关于连接、通讯、UDP forward服务:一些相关的、有用的例程Linux C程序的gdb断点调试搭建仿真解决【testPixhawkDroneTakeoff.cpp例程能解锁但起飞…

unity-调用讯飞星火语音唤醒-新版windowsSDK

调用讯飞星火语音唤醒-新版windowsSDK 先贴一张在unity中 wins系统下成功调用新版的讯飞windowsSDK的运行截图 为什么要用讯飞的语音唤醒? 项目中需要在unity和win系统下进行语音唤醒开启语音对话,而语音唤醒比较成熟的方案大多都是在linux系统下的&…

vue实现的商品列表网页

一、商品列表效果如下 二、代码&#xff1b; vue实现的商品列表网页 &#xff0c; 图片在vue项目的Public文件夹里的 imgs中 <template><div class"common-layout"><!-- el-container:外层容器。 当子元素中包含 <el-header> 或 <el-foo…

【性能优化】表分桶实践最佳案例

分桶背景 随着企业的数据不断增长&#xff0c;数据的分布和访问模式变得越来越复杂。我们前面介绍了如何通过对表进行分区来提高查询效率&#xff0c;但对于某些特定的查询模式&#xff0c;特别是需要频繁地进行数据联接查或取样的场景&#xff0c;仍然可能面临性能瓶颈。此外…

Vitis Accelerated Libraries 学习笔记--OpenCV 运行测试

目录 1. 简介 2. 实例测试 2.1 实例介绍 2.1 创建工程 3 常见错误 3.1 核心共享库报错 4. 总结 1. 简介 在《Vitis Accelerated Libraries 学习笔记--OpenCV 安装指南-CSDN博客》一文中&#xff0c;我详尽地介绍了 OpenCV 的安装过程。尽管 Vitis Vision 库的实现本身并…

泽众云真机-平台即将升级支持华为机型HarmonyOS NEXT系统

具小编了解&#xff0c;泽众云真机即将升级支持华为机型HarmonyOS NEXT系统。有些人可能对HarmonyOS NEXT系统了解不多。 之前我们有个银行项目&#xff0c;客户要求测试华为HarmonyOS NEXT系统环境&#xff0c;当时我们云真机尚未有该系统的机型&#xff0c;然后技术人员向华为…

企业智慧办公管理平台

摘要 在之前的疫情中&#xff0c;大多数企业都受到了较大的冲击&#xff0c;然而一些公司却因为工作的特殊性可以居家远程办公&#xff0c;不过这些企业在管理员工的过程中却遇到了较大的困难&#xff0c;这是因为这些企业的管理系统根本大多都无法管理员工的工作项目&#xf…

【面试干货】 Java 中的 HashSet 底层实现

【面试干货】 Java 中的 HashSet 底层实现 1、HashSet 的底层实现2、 HashSet 的特点3、 总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; HashSet 是 Java 集合框架中的一个重要成员&#xff0c;它提供了不存储重复元素的集合。但是&am…

【AI作曲】毁掉音乐?早该来了!一个网易音乐人对于 AI 大模型音乐创作的思辨

引言&#xff1a;AI在创造还是毁掉音乐&#xff1f; 正如当初 midjourney 和 StableDiffusion 在绘画圈掀起的风波一样&#xff0c;suno 和 各大音乐大模型的来临&#xff0c;其实早该来了。 AI 在毁掉绘画&#xff1f;或者毁掉音乐&#xff1f; 没错&#xff0c;但也错了。…

SuperImage高级免费版本下载,简单纯粹没有广告!

SuperImage是一款功能强大、易于使用的基于神经网络的图像放大工具&#xff0c;适用于各种场景&#xff0c;如修复老照片、增大图片尺寸、智能修复破损等。基于AI技术&#xff0c;使用MNN深度学习框架和Real-ESRGAN算法&#xff0c;能够提供高质量的图像处理效果。通过设备的GP…

嵌入式Linux驱动开研发流程详细解析

大家好,今天主要给大家分享一下,嵌入式linux中重要的内容详解。 一、驱动概念 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁。 具体任务 读写设备寄存器(实现控制的方式) 完成设备的轮询、中断处理、DMA通信(CPU与外设通信的方式) 进行物理内存向虚拟内存…

综合评价 | 基于因子分析和聚类分析的节点重要度综合评价(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 综合评价 | 基于因子分析和聚类分析的节点重要度综合评价&#xff08;Matlab&#xff09; 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复基于因子分析和聚类分析的节点重要度综合评价&#xff08;Matlab…

Apache Arrow 和数据的未来:开放标准推动人工智能发展

Apache Arrow 是一种开源列式内存格式&#xff0c;适用于平面数据和分层数据。在现代数据湖中&#xff0c;开放数据格式&#xff08;如 Apache Arrow&#xff09;位于现代对象存储的存储层中。这些格式成为对象存储中的对象。 在最新版本中&#xff0c;Apache Arrow 宣布计划从…

碳钢酸洗线送酸槽蒸汽冷凝水PH计测量装置改进方法

碳钢酸洗线送酸槽蒸汽冷凝水PH计测量装置改进方法 一、项目提出前状况 1)立项背景 轧钢退火酸洗生产线的酸洗过程需要使用大量的硫酸、盐酸、硝酸、氢氟酸等酸液对钢带的表面进行清洗,酸洗过后产生较多的酸洗废水,酸洗废水需要经过处理达到污水排放标准后才能排放。其中酸…

蓝桥杯 经典算法题 实现归并排序

题目&#xff1a; 题解&#xff1a; 不断地将数组不断向下平均分为两部分&#xff0c;直到每个子数组中元素数量为1&#xff0c;这样就可以将相邻两个数组长度为1的数组看作是单调数组合并为一个大的单调数组&#xff0c;如此不断向上合并出最终的单调数组。 #include <bi…