二、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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

五、C#归并排序算法

简介 归并排序是一种常见的排序算法,它采用分治法的思想,在排序过程中不断将待排序序列分割成更小的子序列,直到每个子序列中只剩下一个元素,然后将这些子序列两两合并排序,最终得到一个有序的序列。 归并排序实现原…

Android Studio实现内容丰富的安卓校园二手交易平台(带聊天功能)

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号083 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看二手商品列表 3.发布二手商品 4.商品详情 5.聊天功能…

【超全详解】Maven工程配置与常见问题解决指南

Maven工程 目录 Maven工程一、如何检查Maven工程是否配置正确?1、检查路径2、检查基本配置3、其他配置 二、Maven的基本操作基本操作install和package的区别 三、获取别人的Maven工程之后如何修改?四、如何正确写好配置文件?1.寻找配置资源2.…

第六十一回 放冷箭燕青救主 劫法场石秀跳楼-编译安装飞桨paddlepaddle@openKylin+RISCV

卢俊义在水里被张顺抓住,用轿子抬到了梁山。宋江等人下马跪在地上迎接,请他坐第一把交椅。卢俊义宁死不从,大家只好说留他在山寨几天,先让李固带着马车货物回去。吴用对李固说,你的主人已经答应坐第二把交椅了&#xf…

基于python+vue分类信息服务平台移动端的设计与实现flask-django-php-nodejs

分类信息服务平台是在Android操作系统下的应用平台。为防止出现兼容性及稳定性问题,框架选择的是django,Android与后台服务端之间的数据存储主要通过MySQL。用户在使用应用时产生的数据通过 python等语言传递给数据库。通过此方式促进分类信息服务平台信…

51单片机中断信号的种类及应用场景

在嵌入式系统中,中断是一种重要的事件处理机制,它可以在程序执行的任何时候暂停当前任务,转而执行与之相关的特殊任务或事件。51单片机作为一种常见的微控制器,其中断功能在各种应用中起着关键作用。然而,对于初学者和…

【理解机器学习算法】之分类问题的模型评估(ROC-AUC)

ROC曲线(接收者操作特性曲线)和AUC(曲线下面积)是在不同阈值设置下,用于分类问题的性能度量工具。下面是它们所代表的含义以及使用方法: ROC曲线 代表含义:ROC曲线是一个图形化的表示&#xf…

Unity---Lua语言

Lua Binaries Download 13.2 逻辑热更新——Lua1-3_哔哩哔哩_bilibili nil表示空 只有false和nil为false,其他值都为true ..连接两个字符串

浙江IGM机器人K5控制柜维修需要注意哪些问题?

IGM机器人K5控制柜常见故障及维修方法 1、电源故障: 表现为IGM机器人K5控制柜不能开机或突然断电。 检查:检查电源线是否连接良好,有无破损;检查电源模块的输出电压是否正常; 维修方法:如电源模块损坏&…

硬核分享|AI语音识别转文字与自动生成字幕

硬核分享|AI语音识别转文字与自动生成字幕_哔哩哔哩_bilibili 在现代快节奏的生活中,语音转文字工具成为了我们工作和学习中的得力助手。它能够将我们说出的话语迅速转化为文字或者将语音视频自动生成字幕,提供便捷和高效。 语音转文字转字幕工具是一种…

docker学习笔记 三-----docker安装部署

我使用的部署环境是centos 7.9 1、安装依赖工具 yum install -y yum-utils device-mapper-persistent-data lvm2 安装完成如下图 2、添加docker的软件信息源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo url地址为如…

【ReactJS】使用GoJS实现自己的图表App

目录 1:用于绘制自定义图表的JavaScript库:用于绘制UML(或BPMN或ERD …)图表的JavaScript库:2:为什么选择GoJS?3:让我们使用现有的React应用程序:步骤1:步骤2:步骤3:步骤4:推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战1:…

IDEA上的Scala环境搭建

Scala环境搭建 一、搭建Scala开发环境 安装Scala编译器 安装scala-2.12.10.msi 检查scala安装情况 在dos窗口输入scala,检查是否能够进入编译器。进行简单的scala命令计算 在IDEA中进行scala编码 File - Settings - Plugins - MarketPlace中搜索scala插件 安…

RabbitMQ在Java中使用 SpringBoot 从基础到高级

充分利用每一个监听者 需要充分利用每一个消费者,需要在配置文件中加上prefetch配置并设置为1 rabbitmq:listener:simple:prefetch: 1 # 每次只能获取一条消息,处理完成才能获取下一个消息创建交换机和队列 创建队列 "fanout.queue1"&…

集简云新增“文本语音转换”功能,实现智能语音交互

为丰富人工智能领域的应用集成,为用户提供更便捷和智能化的信息获取和视觉创作方式,本周集简云上线了内置应用—文本语音转换。目前支持OpenAI TTS和TTS HD模型,实现文本语音高效智能转换,也可根据你的产品或品牌创建独特的神经网…

二、SpringBoot3 配置文件

本章概要 统一配置管理概述属性配置文件使用YAML 配置文件使用批量配置文件注入多环境配置和使用 2.1 统一配置管理概述 SpringBoot工程下,进行统一的配置管理,你想设置的任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定…

福建科立讯通信 指挥调度管理平台 SQL注入漏洞复现(CVE-2024-2620、CVE-2024-2621)

0x01 产品简介 福建科立讯通信指挥调度管理平台是一个专门针对通信行业的管理平台。该产品旨在提供高效的指挥调度和管理解决方案,以帮助通信运营商或相关机构实现更好的运营效率和服务质量。该平台提供强大的指挥调度功能,可以实时监控和管理通信网络设备、维护人员和工作任…

如何在linux环境上部署单机ES(以8.12.2版本为例)

ES安装(以8.12.2版本为例) 首先创建好对应的文件夹然后在对应的文件夹下执行依次这些命令 1.wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-linux-x86_64.tar.gz 2.wget https://artifacts.elastic.co/downloads/…

【Flask】Flask项目结构初识

1.前提准备 Python版本 # python 3.8.0 # 查看Python版本 python --version 安装第三方 Flask pip install flask # 如果安装失败,可以使用 -i,指定使用国内镜像源 # 清华镜像源:https://pypi.tuna.tsinghua.edu.cn/simple/ 检查 Flask 是…

6个免费的ChatGPT网站

AI 大模型的出现给时代带来了深远的影响: 改变了产业格局:AI 大模型的发展推动了人工智能技术在各行业的广泛应用,改变了传统产业的运作方式,促进了新兴产业的崛起,如智能驾驶、医疗健康、金融科技等。提升了科学研究…