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、运行完之后都是报下面…

【自动驾驶】什么是高字节?什么是低字节?

文章目录 高字节和低字节的定义举例说明如何从传感器数据中组合高字节和低字节代码解析在计算机和电子工程领域,高字节和低字节是指数据字的高位部分和低位部分。一个数据字通常由多个字节组成,例如16位的数据字由2个字节组成。 高字节和低字节的定义 高字节(High Byte):…

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

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

on ubuntu server install jupyter lab

一、安装jupyter lab conda search jupyterlab 根据base的python版本,选择对应的版本 conda install jupyterlab3.0.14 该方法优点是可以快速的启动JupyterLab,缺点是需要记住大量参数写法。以下是一些常见参数的说明: --ip* 设置可访问的I…

湖南科技大学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 两步。接下来,分…

Python 设计模式(第2版) -- 第四部分(其他设计模式)

Python 设计模式(第2版) 最后介绍下其他设计模式。 模型—视图—控制器(MVC)-- 复合模式 根据 GoF 的定义,“复合模式将两个或更多模式组合成解决常见或普遍性问题的解决方案”。复合模式不是同时使用的一组模式,而是一个问题的…

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;振荡电路设计者采用了一种…

【MySQL数据库编程 存储过程触发器 示例】

1&#xff0e;利用不同的分支语句实现输入学生成绩&#xff0c;输出成绩等级。&#xff08;对于百分制成绩&#xff0c;60分以下为不及格&#xff0c;大于60分且小于或等于70分为及格&#xff0c;大于70分且小于或等于80分为中&#xff0c;大于80分且小于或等于90分为良&#x…

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

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

语言模型测试系列【10】

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

使用新语法连接Qt 5中重载的信号和槽

在使用Qt 5中的新信号和槽连接语法&#xff08;使用成员函数指针&#xff09;时&#xff0c;我遇到了一些问题。根据新的信号槽语法的描述&#xff0c;我尝试将以下代码&#xff1a; QObject::connect(spinBox, SIGNAL(valueChanged(int)),slider, SLOT(setValue(int)));改为&…

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

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