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

二、Kubernetes(k8s)中部署项目wordpress(php博客项目,数据库mysql)

前期准备

1、关机顺序

2、开机顺序
(1)、k8s-ha1、k8s-ha2
(2)、master01、master02、master03
(3)、node01、node02

一、集群服务对外提供访问,需要通过Ingress代理发布域名

mast01上传 ingress-nginx.yaml
node01、node02 上传 ingress-nginx.tar 、kube-webhook-certgen.tar

#导入到镜像

for img in ingress-nginx.tar kube-webhook-certgen.tar
> do
> docker load -i $img
> done
#master01编辑新建文件ingress-nginx.yaml
vim ingress-nginx.yaml
#打开行号
:set nu 
#搜索Service
/Service
#按小写n快速查找下一个#将文件中的Servcie类型LoadBalancerg改为NodePorttype: NodePort#将ingress-nginx-controller的Pod开启hostNetwork与节点共享网络名称空间,则Pod监听节点的80和443端口spec:hostNetwork: true   #手动增加containers:
#部署
kubectl apply -f ingress-nginx.yaml
#获取名称空间
kubectl get ns
kubectl get pod -n ingress-nginx#进入ingress
kubectl exec -it ingress-nginx-controller-55d7ffbbf8-8vl8n -n ingress-nginx -- /bin/bash
#查看ingress下的nginx目录
ls /etc/nginx
cat /etc/nginx/nginx.conf
二、集群中容器数据持久化,NFS结合动态存储实现

新准备一台机器作为nfs服务器

#设置hostname
hostnamectl set-hostname k8s-nfs#安装nfs服务端软件包(服务端)
yum install nfs-utils -y#编辑文件
vim /etc/exports
内容如下:
/storageclass 192.168.30.0/24(rw,no_root_squash)#创建目录/storageclass
mkdir /storageclass#启动NFS
systemctl start nfs
systemctl enable nfs#node01、node02上安装 nfs(客户端)
yum install nfs-utils -y#node01、node02 检查是否能访问到共享目录
showmount -e 192.168.30.200#Master01 编辑文件nfs-clients-rbac.yml(文件名自定义)
vim nfs-clients-rbac.yml
#进入粘贴模式
:set paste #按回车健
拷贝内容到该文件#RBAC文件应用到kubectl
kubectl apply -f nfs-clients-rbac.yml#Master01 编辑文件nfs-client-deployment.yml(文件名自定义)
vim nfs-client-deployment.yml
要改的内容如下:value: 192.168.30.200        #传递NFS服务器IP地址- name: NFS_PATHvalue: /storageclass       #传递NFS服务器共享路径
volumes:- name: nfs-client-rootnfs:server: 192.168.30.200         #后端NFS服务器IP地址path: /storageclass          #后端NFS服务器共享路径nfs-client-provisioner 运行在node节点下#Kubernetes 环境检查 master01 节点的污点(taint)信息
kubectl describe node master01 | grep -i taint#node01、node02上传provisioner压缩文件并导入镜像
docker load -i nfs-subdir-external-provisioner.tar#Master01部署驱动nfs-client-deployment.yml
kubectl apply -f nfs-client-deployment.yml	
kubectl get pod#编辑storageclass.yml
vim storageclass.yml
内容如下:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-client
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
parameters:archiveOnDelete: "false"
#应用
kubectl apply -f storageclass.yml#查看所有可用的存储类的列表
kubectl get sc#获取 Kubernetes 集群中所有 Pod 的详细信息
kubectl get pod -o wide
三、搭建私有镜像仓库,用于存储自己构建的项目镜像

1、准备一台机器放harbor私有仓库

#上传,安装docker 
tar -xf docker-20.10.21.tar.gz
cd docker
yum install ./*.rpm -y#上传安装docker-compose、加权限
chmod +x docker-compose
#移动
mv docker-compose /usr/bin
#查看docker-compose版本
docker-compose --versin#启动docker并设置开机自启
systemctl start docker
systemctl enable docker

2、harbor(私有仓储)有点大,使用xftp上传harbor包

#解压、进入harbor
tar -xf harbor-v2.5.1.tgz
cd harbor#导入harbor镜像
docker load -i harbor.v2.5.1.tar.gz #复制文件,并编辑
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
修改host、注释https协议#当前目录执行脚本
./install.sh成功后它会以容易方式运行harbor(一共有9个容器在运行)
#查看容器
docker ps浏览器访问harbor
192.168.30.20
admin
12345本机指定Harbor仓库地址
vim /etc/docker/daemon.json
{							"insecure-registries": ["http://192.168.0.25"]			
}
重启docker让配置文件生效
systemctl restart docker#此时看容器数量只有6个,解决方法(先全部关闭容器,再重启一下就ok了)
docker ps #harbor目录先关闭全部容器
docker-compose down
docker-compose up -d #后台运行docker容器,否则占用前台终端
四、部署项目所需的数据库
#master01新建目录
mkdir wordpress#master01创建名称空间
kubectl create ns wordpress#查询名称空间
kubectl get ns#进入wordpress目录,并新建编辑mysql.yml文件
cd wordpress
vim mysql.yml
admin123#node01,node02 拉取mysql镜像
docker pull mysql:5.7#创建Pod
kubectl create -f mysql.yml#查看Pod
kubectl get pod -n wordpress#进入mysql容器,登录mysql
kubectl exec -it mysql-0 -n wordpress -- /bin/bash
mysql -uroot -padmin123
#验证(显示所有数据库)
show databases;
#数据库主机验证命令
ls /storageclass
ls /storageclass/wordpress-data-mysql-0-pvc-e7a7a759-770b-4940-a58d-6169539a0854
出现如下内容:
wordpress-data-mysql-0-pvc-e7a7a759-770b-4940-a58d-6169539a0854
五、项目运行在什么环境中,需要将运行环境打包到镜像中, 并配置好项目连接数据库的信息。

1、下载wordpress项目,配置数据库连接

#nfs服务器主机命令
wget https://cn.wordpress.org/wordpress-6.0-zh_CN.tar.gz#nfs服务器主机解压
tar -xf wordpress-6.0-zh_CN.tar.gz#nfs服务器主机
cd wordpress
#nfs主机改配置文件名称
cp wp-config-sample.php wp-config.php#master01查看数据库地址
kubectl get pod -n wordpress -o wide#测试重启mysql pod,mysql自动重启了,容器组ip改变了
kubectl delete pod mysql-0 -n wordpress#查看其中dns,随便拷贝一个dns地址出来(例如:172.16.235.5)
kubectl get pod -n kube-system
kubectl get pod -n kube-system -o -wide#安装dig命令(dns解析工具)工具包
yum install bind-utils -y#dns解析mysql
dig @172.16.235.5 mysql-svc.wordpress.svc.cluster.local
dig @172.16.235.5 mysql-svc.wordpress.svc.cluster.local +short#nfs主机编辑配置文件,数据库地址不能配置IP,因为一旦发生重启IP地址会变动
#地址配置:mysql-svc.wordpress.svc.cluster.local
vim wp-config.php#wordpress身份认证的信息通过该地址获取:https://api.wordpress.org/secret-key/1.1/salt/#nfs主机拉取centos镜像
docker pull centos:7.9.2009

2、配置nginx镜像仓储

#nfs主机wordpress目录下新建编辑nginx.repo文件
https://nginx.org/en/linux_packages.html#RHEL
内容如下: 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

3、通过Dockerfile来构建wordpress镜像
内容看文件:dockerfile

#构建镜像
docker build  -t wordpress:v6.0 .

4、harbor 后台新建仓库 wordpress

地址:http://192.168.30.200/
admin
12345

5、推送项目镜像到harbor、并配置集群的镜像仓储

#镜像打标签
docker tag wordpress:v6.0 192.168.30.200/wordpress/wordpress:v6.0#登录镜像仓库,要输入用户名+密码
docker login 192.168.30.200#推送镜像到仓库
docker push 192.168.30.200/wordpress/wordpress:v6.0在集群节点指定Harbor仓库地址
vim /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"insecure-registries": ["http://192.168.30.200"]
}
#重启docker生效
systemctl restart docker
六、部署项目到k8s
#master01新建编辑部署文件 wordpress.yml
vim wordpress.yml#应用到集群
kubectl apply -f wordpress.yml#查看svc
kubectl get svc -n wordpress#查看ingress,查看运行的IP地址(192.168.30.14)
kubectl get pod -n ingress-nginx -o wide#修改本机电脑host
#指定域名
192.168.30.14 web.wordpress.com#nfs服务器查看nginx日志
ls /storageclass/
ls /storageclass/wordpress-ngx-log-pvc-5ed5cdbf-a07e-4c37-9c06-db5b247a4115
tail /storageclass/wordpress-ngx-log-pvc-5ed5cdbf-a07e-4c37-9c06-db5b247a4115/access.log

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

二、Kubernetes(k8s)中部署项目wordpress(php博客项目,数据库mysql)

前期准备 1、关机顺序 2、开机顺序 (1)、k8s-ha1、k8s-ha2 (2)、master01、master02、master03 (3)、node01、node02 一、集群服务对外提供访问,需要通过Ingress代理发布域名 mast01上传 ingress-nginx.yaml node01、node02 上传 ingress-nginx.tar 、kube-webh…...

linux系统Kubernetes工具Service暴露服务

Service ServiceService创建service页面请求测试pod内部请求测试端口解析kube-proxy 使用ipvs 意义pod和Service的关系常用类型ClusterIpNodePortLoadBalancernode内网部署应用,外网访问不到 Service 服务基于ip端口的虚拟主机,定义一组pod的访问规则 Se…...

【算法篇】逐步理解动态规划1(斐波那契数列模型)

目录 斐波那契数列模型 1. 第N个泰波那契数 2.使用最小花费爬楼梯 3.解码方法 学过算法的应该知道,动态规划一直都是一个非常难的模块,无论是状态转移方程的定义还是dp表的填表,都非常难找到思路。在这个算法的支线专题中我会结合很多力…...

软件测试 - postman高级使用

断言 概念:让程序代替人判断测试用例执行的结果是否符合预期的一个过程 特点: postman断言使用js编写,断言写在postman的tests中 tests脚本在发送请求之后执行,会把断言的结果最终在testresult中进行展示 常用的postman提供的…...

数据交换技术

目录 <线路交换> <报文交换> <分组交换> 1.数据报分组交换 2.虚电路分组交换 计算机网络是以数据交换为目的的技术&#xff0c;从交换技术的发展过程来看&#xff0c;主要经历了线 路交换、报文交换、分组交换的过程。 <线路交换> 线路交换又称为…...

FFmpeg-- mp4文件合成1:aac和h264封装(c++实现)

文章目录 流程api核心代码muxer.hmuxer.cppaac 和 h264 封装为视频流,封装为c++的Muxter类 流程 分配视频文件上下文 int Init(const char *url); 创建流,赋值给视频的音频流和视频流 int AddStream(AVCodecContext *codec_ctx); 写视频流的head int SendHeader(); 写视频流的…...

【嵌入式开发 Linux 常用命令系列 1.3 -- 统计目录下有多少个文件】

统计目录下有多少个文件 在 Linux 中&#xff0c;你可以使用 find 命令和 wc&#xff08;word count&#xff09;命令的组合来统计当前目录及其子目录下的文件数量。如果你只对当前目录&#xff08;不包括子目录&#xff09;中的文件数量感兴趣&#xff0c;可以使用 ls 和 wc …...

JMeter 如何并发执行 Python 脚本

要在JMeter中并发执行Python脚本&#xff0c;可以使用Jython脚本或通过调用外部Python脚本的方式实现。 使用Jython脚本并发执行Python脚本的步骤&#xff1a; 1、创建一个线程组&#xff1a;在JMeter界面中&#xff0c;右键点击测试计划&#xff0c;选择 “添加” -> “线…...

第十三届蓝桥杯省赛真题 Java B 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 星期计算试题 B: 山试题 C: 字符统计试题 D: 最少刷题数试题 E \mathrm{E} E : 求阶乘试题 F : \mathrm{F}: F: 最大子矩阵试题 G: 数组切分试题 H: 回忆迷宫试题 I: 红绿灯试题 J 拉箱子 发现宝藏 前些天发现了一个巨牛的人工智能学习…...

Excel 打开后提示:MicrosoftExcel无法计算某个公式。在打开的工作簿中有一个循环引用...

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 MicrosoftExcel无法计算某个公式。在打开的工作簿中有一个循环引用&#xff0c;但无法列出导致循环的引I用。请尝试编辑上次输入的公式&#xff0c;或利用“撤消”命令删除该公式&#xff0c;如下图&…...

【自我提升】计算机领域相关证书

目录 计算机技术与软件专业资格&#xff08;水平&#xff09;考试证书&#xff08;软考&#xff09;Oracle认证Cisco认证微软认证红帽认证AWS认证 计算机技术与软件专业资格&#xff08;水平&#xff09;考试证书&#xff08;软考&#xff09; 计算机技术与软件专业技术资格&a…...

外包干了15天,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;2019年我通过校招踏入了南京一家软件公司&#xff0c;开始了我的职业生涯。那时的我&#xff0c;满怀热血和憧憬&#xff0c;期待着在这个行业中闯出一片天地。然而&#xff0c;随着时间的推移&#xff0c;我发现自己逐渐陷入…...

人工智能(Educoder)-- 搜索技术 -- 启发式搜索

任务描述 本关任务&#xff1a;八数码问题是在一个33的棋盘上有1−8位数字随机分布&#xff0c;以及一个空格&#xff0c;与空格相连的棋子可以滑动到空格中&#xff0c;问题的解是通过空格滑动&#xff0c;使得棋盘转化为目标状态&#xff0c;如下图所示。 为了简化问题的输…...

计算平均分 javascript

养成好习惯&#xff1a;先写注释再写代码 基础版&#xff1a;直接写逻辑&#xff08;平均分总和/个数&#xff09; // 求平均分 var scores [60, 55, 80, 33, 75, 100]; // 求和,相除 var sum 0; var avg;for (var i 0; i < 6; i) {sum scores[i]; }avg sum / 6; con…...

Redis入门到实战-第三弹

Redis入门到实战 Redis数据类型官网地址Redis概述Redis数据类型介绍更新计划 Redis数据类型 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#…...

AnyGo for Mac最新激活版:位置模拟软件打破地域限制

AnyGo for Mac&#xff0c;一款专为Mac用户打造的位置模拟软件&#xff0c;让您能够轻松打破地域限制&#xff0c;畅享无限可能。 软件下载&#xff1a;AnyGo for Mac v7.0.0最新激活版 通过AnyGo&#xff0c;您可以随时随地模拟出任何地理位置&#xff0c;无论是国内热门景点还…...

【Mysql数据库基础07】DDL 数据定义语言

Data Definition Language 1 库的操作1.1 create 创建1.2 alter 修改1.3 drop 删除 2 表的操作2.1 表的创建2.2 表的修改2.2.1 修改表名2.2.2 修改列名2.2.3 修改列的类型和约束2.2.4 添加列2.2.5 删除列 2.3 表的删除2.4 表的复制 3 练习 1 库的操作 1.1 create 创建 create…...

数据库及中表的创建和管理

目录 创建数据库 使用数据库(使用,查看信息) 修改数据库(删除,修改)...

git笔记之撤销、回退、reset方面的笔记

git笔记之撤销、回退、reset方面的笔记 code review! 文章目录 git笔记之撤销、回退、reset方面的笔记1.git 已经commit了&#xff0c;还没push&#xff0c;如何撤销到初始状态git reset --soft HEAD~1git reset HEAD~1&#xff08;等同于 git reset --mixed HEAD~1&#xff0…...

【中间件】docker数据卷

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;中间件 ⛺️稳中求进&#xff0c;晒太阳 1.数据卷&#xff08;容器数据管理&#xff09; 修改nginx的html页面时&#xff0c;需要进入nginx内部。并且因为内部没有编辑器&#xff0c;修改…...

RocketMQ的“三高”架构设计

RocketMQ的“三高”架构设计&#xff0c;主要围绕高可用、高吞吐、高扩展三个维度展开&#xff0c;分别解决服务不中断、性能不瓶颈、规模不设限的核心问题。1 高可用&#xff08;High Availability&#xff09;高可用的目标是确保部分组件故障时&#xff0c;消息服务依然可用&…...

3种突破窗口限制的高效方案:WindowResizer让桌面管理更自由

3种突破窗口限制的高效方案&#xff1a;WindowResizer让桌面管理更自由 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 在数字化办公环境中&#xff0c;窗口尺寸管理直接影响工作效…...

到底要不要用AI写代码?别争了

其实我一直觉得&#xff0c;现在大家讨论 AI 写代码这件事&#xff0c;有点熟悉。因为以前我们也是这么过来的。刚开始写代码那会儿&#xff0c; 不会就打开 百度&#xff0c; 一行一行找答案&#xff0c;复制、试错、再改。一个分号错了能找半天&#xff0c; 中英文标点混了直…...

golang如何实现QPS实时统计_golang QPS实时统计实现方案

用 time.Tick 原子计数器实现秒级QPS统计&#xff1a;每秒tick重置计数器&#xff0c;请求入口仅atomic.Add&#xff0c;轻量无锁&#xff1b;暴露QPS应独立路由避免伪共享&#xff1b;rate.Limiter不适用于观测&#xff0c;高精度需分桶滑动窗口。用 time.Tick 原子计数器做…...

无需昂贵显卡,用快马云端ai快速验证openclaw本地知识库问答原型

最近在尝试搭建一个本地知识库问答系统&#xff0c;发现OpenClaw这个开源多模态大语言模型特别适合这个场景。不过本地部署对硬件要求比较高&#xff0c;我的笔记本显卡根本跑不动。好在发现了InsCode(快马)平台&#xff0c;用它的云端AI算力轻松解决了这个问题。下面分享下我的…...

从零搭建一个病虫害识别系统:我用Albumentations和SE注意力,把YOLOv8的mAP提升了3%

从零搭建病虫害识别系统&#xff1a;Albumentations与SE注意力如何让YOLOv8性能突破瓶颈 田间作物叶片上若隐若现的霉斑、果实表面微小的虫卵——这些农业病虫害的早期特征&#xff0c;往往只有经验丰富的农艺师才能敏锐捕捉。而现在&#xff0c;一套搭载改进版YOLOv8的智能识别…...

快速SEO排名服务需要多长时间见效_快速SEO排名服务有哪些常见的手段

快速SEO排名服务需要多长时间见效 在当今数字化时代&#xff0c;网站的在线可见度对于企业的成功至关重要。快速SEO排名服务应运而生&#xff0c;旨在帮助企业尽快在搜索引擎上获得更好的排名&#xff0c;从而提高流量和业务。但是&#xff0c;很多人都会疑惑&#xff0c;快速…...

SMUDebugTool终极指南:轻松解锁AMD Ryzen处理器的隐藏性能

SMUDebugTool终极指南&#xff1a;轻松解锁AMD Ryzen处理器的隐藏性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...

网易云音乐美化插件全攻略:从核心价值到深度定制的个性化指南

网易云音乐美化插件全攻略&#xff1a;从核心价值到深度定制的个性化指南 【免费下载链接】refined-now-playing-netease &#x1f3b5; 网易云音乐沉浸式播放界面、歌词动画 - BetterNCM 插件 项目地址: https://gitcode.com/gh_mirrors/re/refined-now-playing-netease …...

【无线通信】多载波无线通信系统设计Matlab仿真

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34a;个人信条&#xff1a;格物致知,完整…...