二、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.mzph.cn/news/756113.shtml

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

相关文章

鸿蒙开发实战:【网络管理-Socket连接】

介绍 本示例主要演示了Socket在网络通信方面的应用,展示了Socket在两端设备的连接验证、聊天通信方面的应用。 效果预览 使用说明 1.打开应用,点击用户文本框选择要登录的用户,并输入另一个设备的IP地址,点击确定按钮进入已登录…

【C++】用红黑树模拟实现set、map

目录 前言及准备:一、红黑树接口1.1 begin1.2 end1.3 查找1.4 插入1.5 左单旋和右单旋 二、树形迭代器(正向)2.1 前置 三、模拟实现set四、模拟实现map 前言及准备: set、map的底层结构是红黑树,它们的函数通过调用红…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Toggle)

组件提供勾选框样式、状态按钮样式及开关样式。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 仅当ToggleType为Button时可包含子组件。 接口 Toggle(options: { type: ToggleType, is…

一台电脑安装多个版本node,如何切换使用

直接上答案,请安装nvm——nodejs的版本管理工具 官网地址在此:nvm文档手册 - nvm是一个nodejs版本管理工具 - nvm中文网 (uihtm.com) 1.由于我电脑本来就有node14,所以需要先卸载 原来的node,建议在软件目录自带的node文件夹中点…

Java学习笔记NO.20

Java流程控制 1. 用户交互 Scanner Java中的Scanner类用于获取用户输入,可以从标准输入(键盘)读取各种类型的数据。 import java.util.Scanner; public class UserInputExample { public static void main(String[] args) { Scanner sc…

weaviate向量库安装

简介 Weaviate 是一个开源的向量数据库和搜索引擎,专门用于存储、搜索和分析向量数据。它提供了一个简单易用的 REST API,使得用户可以轻松地将向量数据存储到数据库中,并且能够以高效的方式进行相似向量的搜索。 以下是一些 Weaviate 向量…

面向切面的编程实战

面向切面的编程(AOP)就是让哥们写代码的时候更加关注核心业务的实现,将核心业务代码前后的日志等不重要的通过注解的方式,交给其他部分完成,使得代码有更高的可维护性。 具体使用 先定义一个注解 Target(ElementTyp…

[Java、Android面试]_08_强软弱虚四种引用及应用场景

本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注收…

SpringBoot3框架,基础特性

MyBatis整合 导入MyBatis整合的依赖&#xff1a; <!-- <https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter> --> <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-…

电机驱动器不确定性建模

跟踪误差信号和执行器驱动信号在控制系统的设计中也很重要&#xff01;&#xff01;&#xff01; 不确定度可分为扰动信号和动态扰动两类。前者包括输入和输出干扰&#xff08;如飞机上的阵风&#xff09;、传感器噪声和执行器噪声等。后者表示数学模型与系统在运行中的实际动…

Geostationary IR Channel Brightness Temperature - GridSat B1 -- shell下载

进入网页 https://www.ncei.noaa.gov/products/gridded-geostationary-brightness-temperature 然后进入数据目录&#xff0c;通过https的方式进行下载&#xff1a; 点击后进入如下界面&#xff1a; 点击任意年份进行下载 这里以2004年为例&#xff0c;如下所示&#xff1…

【CSS练习】万年历 html+css+js

效果图 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title><style>bod…

实现:mysql-5.7.42 到 mysql-8.2.0 的升级(二进制方式)

实现&#xff1a;mysql-5.7.42 到 mysql-8.2.0 的升级&#xff08;二进制方式&#xff09; 1、操作环境1、查看当前数据库版本2、操作系统版本3、查看 Linux 系统上的 glibc&#xff08;GNU C 库&#xff09;版本&#xff08;**这里很重要&#xff0c;要下载对应的内核mysql版本…

软件设计师

计算机系统知识 浮点数 运算&#xff1a;小阶对齐大阶 海明码 数据位n校验位k&#xff0c;必须满足 2k-1≥nk 吞吐率 p为最长子过程的倒数 数据结构 图 深度遍历时间复杂度&#xff1a; 邻接矩阵n2 邻接表ne 操作系统 进程 信号量P、V、S P申请资源&#xff0c;V释…

Linux 进程管理工具top ps

概述 top 和 ps 是 Linux 系统中两个非常重要的用于管理和监控进程的命令工具。以下是它们的主要功能和区别&#xff1a; top&#xff1a; 动态视图&#xff1a;top 提供了一个实时动态更新的视图&#xff0c;能够持续显示系统中当前正在运行的进程信息及其资源占用情况。 系统…

安卓面试题多线程11-15

11. 如何使用thread dump?你将如何分析Thread dump?在UNIX中你可以使用kill -3,然后thread dump将会打印日志,在windows中你可以使用”CTRL+Break”。非常简单和专业的线程面试问题,但是如果他问你怎样分析它,就会很棘手。🚀🚀🚀🚀🚀🚀12. Java中你怎样唤醒一…

注意力机制 self-attention 的原理探究

一、点积的认识 向量的点积可以表示相似性的原因在于它衡量了两个向量之间的方向是否相似。当两个向量的方向趋于一致时&#xff0c;它们的点积会更大&#xff1b;当两个向量的方向趋于相互垂直时&#xff0c;它们的点积会接近于0。这种性质使得点积在衡量向量之间的相似性和相…

聚合函数和GROUP BY

1、聚合函数 1.1 聚合函数概念 聚合函数是用于对一组数值进行计算并返回单一数值作为结果的函数。在数据库查询中&#xff0c;它们通常用于对数据进行汇总和统计分析。常见的聚合函数包括 SUM、AVG、COUNT、MAX 和 MIN 等。 1.2 函数介绍 1.2.1 SUM&#xff08;求和&#x…

Devops-02-Jpom 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件

拓展阅读 Devops-01-devops 是什么&#xff1f; Devops-02-Jpom 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 代码质量管理 SonarQube-01-入门介绍 项目管理平台-01-jira 入门介绍 缺陷跟踪管理系统&#xff0c;为针对缺陷管理、任务追踪和项目管理的商业…

ins中扰动分析举例

扰动分析很重要&#xff0c;搞明白扰动分析&#xff0c;基本上就可以清楚了误差模型。 什么是扰动分析&#xff1a; 简单理解 测量值 真值 误差 这里的误差就是与测量直接对应的误差&#xff0c;例如 把误差分离出来 误差 测量值 - 真值 &#xff…