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: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysqlenv:- name: MYSQL_ROOT_PASSWORDvalue: "123"- name: MYSQL_DATABASEvalue: wordpress- name: MYSQL_USERvalue: wordpress- name: MYSQL_PASSWORDvalue: wordpress

 wordpress-svc.yml

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

 wordpress.yml

apiVersion: apps/v1
kind: Deployment
metadata:name: wordpress-mysql
spec:replicas: 1selector:matchLabels:app: wordpresstemplate:metadata:labels:app: wordpressspec:containers:- name: wordpressimage: wordpressenv:- name: WORDPRESS_DB_HOSTvalue: 10.244.1.16  # 连接数据库,这里的IP地址是你的MySQL数据库的IP地址- name: WORDPRESS_DB_USERvalue: wordpress- name: WORDPRESS_DB_PASSWORDvalue: 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的ipports:- port: 3306targetPort: 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: wordpresstemplate:metadata:labels:app: wordpressspec:volumes:- name: wpnfs:    #使用nfs持久化存储server: 192.168.199.149    #存储到149的指定目录下path: /data/nfs/dddd/readOnly: false        #关闭只读,可能权限不够,建议开启containers:- name: wordpressimage: wordpressenv:- name: WORDPRESS_DB_HOSTvalue: 10.110.100.100 # 连接数据库,这里的IP地址是你的MySQL数据库的IP地址- name: WORDPRESS_DB_USERvalue: wordpress- name: WORDPRESS_DB_PASSWORDvalue: wordpressvolumeMounts:- mountPath: /var/www/html # 正确的键名是 `mountPath` 而非 `ountPath`name: wp

wordprss-svc

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

wordpress-mysql.yml

apiVersion: apps/v1
kind: Deployment
metadata:name: mysql
spec:replicas: 1selector:matchLabels:app: mysql8template:metadata:labels:app: mysql8spec:volumes:- name: test-volumenfs:server: 192.168.199.149path: /data/nfs/hahah/readOnly: falsecontainers:- name: mysqlimage: mysqlvolumeMounts:- mountPath: /var/lib/mysqlname: test-volumeenv:- name: MYSQL_ROOT_PASSWORDvalue: "123"- name: MYSQL_DATABASEvalue: wordpress- name: MYSQL_USERvalue: wordpress- name: MYSQL_PASSWORDvalue: 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.100ports:- port: 3306targetPort: 3306selector:app: mysql8

原因:

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

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

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

相关文章

高通Android 12 aapt报错问题踩坑

背景 最近因为要做多module模块,出现aapt报错,于是简单记录下,踩坑过程。 1、我一开始项目中三个module,然后在build.gradle设置androidApplication plugins {alias(libs.plugins.androidApplication) }2、运行完之后都是报下面…

DevEco鸿蒙开发请求网络交互设置

首先,在鸿蒙项目下config.json中找到module项,在里面填写"reqPermissions": [{"name": "ohos.permission.INTERNET"}] 在页面对应js文件内,填写import fetch from system.fetch;。 GET和POST区别 GET将表单数…

湖南科技大学24计算机考研情况,软工学硕考数二,分数线290分,录取均分321分!

湖南科技大学(Hunan University of Science and Technology)坐落在伟人故里、人文圣地湘潭,处于长株潭核心区域,比邻湘潭九华经济技术开发区(国家级),是应急管理部、国家国防科技工业局与湖南省…

DVWA 靶场 Open HTTP Redirect 通关解析

前言 DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

拍卖商城开发要点源码及功能分析

要创建一个正规的拍卖商城平台,需要遵循一系列步骤,确保平台的合法性、专业性和用户体验。以下是一个详细的步骤指南: 一、明确平台定位与规划 确定拍卖商城平台的目标市场、用户群体和主要拍卖品类。 制定平台的发展规划和战略目标&#…

网络爬虫设置代理服务器

目录 1.获取代理 IP 2.设置代理 IP 3. 检测代理 IP 的有效性 4. 处理异常 如果希望在网络爬虫程序中使用代理服务器,就需要为网络爬虫程序设置代理服务器。 设置代理服务器一般分为获取代理 IP 、设置代理 IP 两步。接下来,分…

redis高可用-集群部署

一:背景 前面我们实现了redis的主从同步和哨兵模式,解决了单机redis的故障转移和流量分担,但是不管是主从或者哨兵模式都是一个主服务对应一个或者多个从服务,并且主服务和从服务的数据是一样的,这样就实现不了redis大…

远程桌面总是连接不上,mstsc远程总是连接不上解决方法

远程桌面连接在日常生活和工作中扮演着至关重要的角色,它允许用户在不同地点和设备之间无缝协作。然而,有时用户可能会遇到MSTSC(Microsoft远程桌面连接)总是连接不上的问题,这可能是由于多种原因造成的。本文将针对这…

C malloc经典面试题解答与分析

本篇博客介绍关于C malloc经典的错误代码写法以及解决方法。 题目1 错误的代码&#xff1a; #include <iostream>void test01(char* p) {p (char*)malloc(10); }int main1() {char* p NULL;test01(&p);const char* str "hello";strcpy(p, str);print…

Linux 线程的同步与互斥

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 前言 1.资源共享问题 2.进程线程间的互斥…

C语言程序设计-7 数组

在程序设计中&#xff0c;为了处理方便&#xff0c;把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在&#xff23;语言中&#xff0c;数组属于构造数据类型。一个数 组可以分解为多个数组元素&#xff0c;这些数组元素可以是基本数…

晶体振荡电路中的负性阻抗是什么?-晶发电子

在理想的振荡电路中&#xff0c;为了保持振荡的稳定性和强度&#xff0c;需要一种机制来补偿晶振振动过程中的能量损耗。在实际应用中&#xff0c;这种能量损耗是不可避免的&#xff0c;它可能导致振荡逐渐衰减直至停止。为了解决这个问题&#xff0c;振荡电路设计者采用了一种…

公司怎么管理文档外发泄密?强化企业文档安全用迅软加密软件就行了!

一、文档加密软件原理 迅软DSE加密软件对各类需要加密的文件&#xff08;如&#xff1a;技术资料、商业数据、红头文件、会议纪要、机要文件、图纸、财务报表等&#xff09;进行加密。 使用加密算法对文件自动加密&#xff0c;只有拥有正确的解密密钥或密码的人才能打开文件&…

语言模型测试系列【10】

一个巧合&#xff0c;又测到了新的区别&#xff0c;以下是关于python代码生成的测试效果。 语言模型 文心一言讯飞星火通义千问2.5豆包360智脑百小应腾讯元宝KimiC知道商量智谱清言 这次的测试问题来源于**智谱AI开放平台**的介绍&#xff0c;正好有个python生成的效果说明…

韩顺平0基础学java——第28天

p569-591 坦克大战&#xff01;&#xff08;绘图监听事件线程文件处理&#xff09; 绘图 绘图原理 Component类提供了两个和绘图相关最重要的方法: 1. paint(Graphics g)绘制组件的外观 2. repaint()刷新组件的外观。 当组件第一次在屏幕显示的时候,程序会自动的调用paint()…

智能网联汽车实训教学“好帮手”——渡众机器人自动驾驶履带车

智能网联汽车实训教学“好帮手”——渡众机器人自动驾驶履带车 人工智能技术的兴起&#xff0c;为传统汽车行业注入了强有力的变革基因&#xff0c;以AI技术为驱动的无人驾驶成为汽车产业的未来&#xff0c;同样也面临诸多机遇和挑战。 一方面智能网联汽车的发展&#xff0c;为…

GD32学习

参考视频13.立创开发板GD32教程&#xff1a;串口配置_哔哩哔哩_bilibili 固件库跟用户手册基本上差不多&#xff0c;只不过用用户手册编写程序的话会更加的底层&#xff0c;固件库的话就是把一些函数封装起来&#xff0c;用的时候拿过来即可&#xff0c;目前我还没有找到固件库…

【数据库备份完整版】物理备份、逻辑备份,mysqldump、mysqlbinlog的备份方法

【数据库备份完整版】物理备份、逻辑备份&#xff0c;mysqldump、mysqlbinlog的备份方法 一、物理备份二、逻辑备份1.mysqldump和binlog备份的方式&#xff1a;2.mysqldump完整备份与恢复数据2.1 mysqldump概念2.2 mysqldump备份2.3 数据恢复2.4 **使用 Cron 自动执行备份**2.5…

linux下编译安装和使用cURL库(含有openssl)

cURL是一个利用URL语法指定各种协议(如HTTP、HTTPS、FTP等)进行数据传输的工具,它以客户端的身份,允许用户通过命令行与服务器交互。cURL库(libcurl)是cURL的编程接口(API),提供了一套丰富的函数,供开发者在自己的应用程序中实现网络传输功能 cURL库是网络编程中不可…

搭建一个简单的xxljob

数据库表结构&#xff1a; YyJobInfo&#xff1a; public class YyJobInfo {//定时任务idprivate int id;//该定时任务所属的执行器的idprivate int jobGroup;//定时任务描述private String jobDesc;//定时任务添加的时间private Date addTime;//定时任务的更新时间private D…