云原生之在kubernetes环境下部署wordpress

news2025/1/12 8:57:47

云原生之在kubernetes环境下部署wordpress

  • 一、wordpress介绍
    • 1.wordpress简介
    • 2.wordpress特点
  • 二、kubernetes集群介绍
    • 1.k8s简介
    • 2.k8s架构图
  • 三、本次实践介绍
    • 1.本次实践简介
    • 2.本次环境规划
  • 四、环境准备工作
    • 1.检查k8s环境
    • 2.检查系统pod状态
  • 五、创建mysql的secret资源
    • 1.创建部署目录
    • 2.创建密码文件
    • 3.创建命名空间
    • 4.创建secret
    • 5.查看secret
  • 六、编辑wordpress.yaml文件
    • 1.编辑wordpress.yaml文件
    • 2.创建wordpress服务
    • 3.查看wordpress的pod状态
    • 4.查看wordpress的service
  • 七、wordpress的初始化
    • 1.进入wordpress的初始安装界面
    • 2.设置网站信息
  • 八、访问wordpress
    • 1.访问wordpress首页
    • 2.访问wordpress后台管理

一、wordpress介绍

1.wordpress简介

WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的网志。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证下授权发布。

2.wordpress特点

  • 免费、开源,建站成本低;
  • WordPress 功能强大、扩展性强。插件众多,易于扩充功能,基本上一个完整网站该有的功能,通过第三方插件都能实现;
  • WordPress搭建的网站对SEO搜索引擎友好,搜索引擎收录快,网站排名靠前;
  • 备份和网站迁移方便,使用站内工具导出后,使用WordPress Importer插件就能方便地将内容导入新网站;
  • 部署、使用、维护都很简单,方便管理;
  • 有强大的社区支持,有上万的开发者贡献和审查wordpress,所以wordpress更新非常快,也比较安全。

二、kubernetes集群介绍

1.k8s简介

kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

2.k8s架构图

kubernetes集群架构示意图

在这里插入图片描述

三、本次实践介绍

1.本次实践简介

1.本次实践环境为个人测试学习环境,生产环境请谨慎使用;
2.本次实践是在k8s环境中,部署wordpress服务;
3.可以成功在在局域网内访问wordpres的web页面。

2.本次环境规划

本次实践规划环境介绍

hostnameIP地址操作系统版本k8s版本角色
k8s-master192.168.3.201centos7.6v1.23.1master节点
k8s-node01192.168.3.202centos7.6v1.23.1worker节点
k8s-node02192.168.3.203centos7.6v1.23.1worker节点

四、环境准备工作

1.检查k8s环境

检查k8s的各工作节点状态

[root@k8s-master ~]#  kubectl get nodes
NAME         STATUS   ROLES                  AGE    VERSION
k8s-master   Ready    control-plane,master   289d   v1.23.1
k8s-node01   Ready    <none>                 289d   v1.23.1
k8s-node02   Ready    <none>                 289d   v1.23.1

2.检查系统pod状态

检查k8s集群中各系统组件的pod状态,确保都处于正常状态。

[root@k8s-master ~]# kubectl get pods -n kube-system 
NAME                                       READY   STATUS    RESTARTS        AGE
calico-kube-controllers-7bc6547ffb-2nf66   1/1     Running   18 (13m ago)    289d
calico-node-8c4pn                          1/1     Running   17 (2d8h ago)   289d
calico-node-f28qq                          1/1     Running   18 (12m ago)    289d
calico-node-wmc2j                          1/1     Running   18 (13m ago)    289d
coredns-6d8c4cb4d-6gm4x                    1/1     Running   18 (13m ago)    289d
coredns-6d8c4cb4d-7vxlz                    1/1     Running   18 (13m ago)    289d
etcd-k8s-master                            1/1     Running   18 (13m ago)    289d
kube-apiserver-k8s-master                  1/1     Running   18 (13m ago)    289d
kube-controller-manager-k8s-master         1/1     Running   18 (13m ago)    289d
kube-proxy-8dfw8                           1/1     Running   18 (13m ago)    289d
kube-proxy-ghzrv                           1/1     Running   18 (12m ago)    289d
kube-proxy-j867z                           1/1     Running   17 (2d8h ago)   289d
kube-scheduler-k8s-master                  1/1     Running   18 (13m ago)    289d

五、创建mysql的secret资源

1.创建部署目录

创建wordpress部署目录

[root@k8s-master ~]# mkdir -p /data/wordpress
[root@k8s-master ~]# cd /data/wordpress/
[root@k8s-master wordpress]# 

2.创建密码文件

创建mysql的相关密码文件

cat << EOF > mysql_pw.txt
username=wordpress
password=wordoress
>EOF

3.创建命名空间

创建一个wordpress的命名空间

kubectl create namespace wordpress

4.创建secret

创建secret资源

[root@k8s-master wordpress]# kubectl --namespace=wordpress  create secret generic mysecret --from-env-file=./mysql_pw.txt
secret/mysecret created


5.查看secret

[root@k8s-master wordpress]#  kubectl get secrets  -n wordpress 
NAME                  TYPE                                  DATA   AGE
default-token-clz9g   kubernetes.io/service-account-token   3      29m
mysecret              Opaque                                2      19s


六、编辑wordpress.yaml文件

1.编辑wordpress.yaml文件

该yaml文件包括wordpress服务和数据库服务两部分,存储采用的本地存储hostpath方式。

[root@k8s-master wordpress]# kubectl apply -f wordpress.yaml 
service/wordpress unchanged
deployment.apps/wordpress configured
service/wordpress-mysql unchanged
statefulset.apps/wordpress-mysql unchanged
[root@k8s-master wordpress]# cat wordpress.yaml 
---



apiVersion: v1
kind: Service
metadata:
  name: wordpress
  namespace: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - protocol: TCP
      targetPort: 80
      port: 80
      nodePort: 30020
  selector:
    app: wordpress
  type: NodePort

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  namespace: wordpress
  labels:
    app: wordpress
spec:
  replicas: 2
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
        - name: wordpress
          image: wordpress
          ports:
            - containerPort: 80
          env:
            - name: WORDPRESS_DB_HOST
              value: wordpress-mysql.wordpress.svc.cluster.local
            - name: WORDPRESS_DB_USER
              value: wordpress
            - name:  WORDPRESS_DB_PASSWORD
              valueFrom:      
                secretKeyRef:
                  name: mysecret
                  key: password
          volumeMounts:
            - mountPath: "/var/www/html"
              name: wordpress-data
      volumes:
        - name: wordpress-data
          hostPath:
            path: /data/wordpress/data         

---

apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  namespace: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: wordpress-mysql
  namespace: wordpress
  labels:
    app: wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  serviceName: "wordpress-mysql"
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
    spec:
      containers:
        - name: mysql
          image: mysql:5.7
          env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: password
            - name: MYSQL_DATABASE
              value: wordpress
            - name: MYSQL_USER
              valueFrom:      
                secretKeyRef:
                  name: mysecret
                  key: username
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: password
             
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - mountPath: /var/lib/mysql
              name: mysql-storage
      volumes:
        - name: mysql-storage
          hostPath:
            path: /var/lib/mysql


2.创建wordpress服务

应用wordpress.yaml文件

[root@k8s-master wordpress]# kubectl apply -f wordpress.yaml 
service/wordpress unchanged
deployment.apps/wordpress unchanged
service/wordpress-mysql unchanged
statefulset.apps/wordpress-mysql unchanged

3.查看wordpress的pod状态

检查wordpress的相关pod状态

[root@k8s-master wordpress]# kubectl get pods -n wordpress 
NAME                        READY   STATUS    RESTARTS   AGE
wordpress-758b776dd-5fkg5   1/1     Running   0          5m9s
wordpress-758b776dd-j8s66   1/1     Running   0          4m53s
wordpress-mysql-0           1/1     Running   0          25m

4.查看wordpress的service

查看wordpress对外访问端口为30020

[root@k8s-master wordpress]# kubectl get service -n wordpress 
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
wordpress         NodePort    10.98.58.28     <none>        80:30020/TCP   35m
wordpress-mysql   ClusterIP   10.106.221.76   <none>        3306/TCP       14m

七、wordpress的初始化

1.进入wordpress的初始安装界面

访问地址:http://192.168.3.202:30020/wp-admin/install.php
可以选择系统中文语言或者英语,这里是选择英语。

在这里插入图片描述

2.设置网站信息

自定义网站信息,设置网站名及网站管理员密码等信息。

在这里插入图片描述
在这里插入图片描述

八、访问wordpress

1.访问wordpress首页

访问地址:http://192.168.3.202:30020/

在这里插入图片描述

2.访问wordpress后台管理

后台管理地址:http://192.168.3.202:30020/wp-admin/
输入之前设置的管理员和密码,进入ordpress后台管理。

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

OpenCV_contrib配置教程(详细版)

文章目录 一&#xff1a;前提准备1&#xff1a;OpenCV4.5.1、OpenCV_contrib4.5.1扩展库下载2&#xff1a;Cmake下载地址Download 二&#xff1a;cmake配置1&#xff1a;2&#xff1a; 三&#xff1a;vs2017编译OpenCV build文件四&#xff1a;环境配置 个人笔记&#xff1a; …

如何构建编译gopacket包的测试用例?(gopacket抓取数据包、类似于tcpdump、Wireshark)

本篇文章介绍一下&#xff0c;如何构建gopacket测试用例 1、构建过程中遇到的问题 问题1&#xff1a; -bash: ./gopacket-main: /lib/ld-musl-x86_64.so.1: bad ELF interpreter: No such file or directory问题2&#xff1a; #14 3.150 # github.com/google/gopacket/pcap …

Zimbra 远程代码执行漏洞(CVE-2019-9670)环境搭建

漏洞简介 Zimbra是著名的开源系统&#xff0c;提供了一套开源协同办公套件包括WebMail&#xff0c;日历&#xff0c;通信录&#xff0c;Web文档管理和创作。一体化地提供了邮件收发、文件共享、协同办公、即时聊天等一系列解决方案。此漏洞的主要利用手法是通过 XXE (XML 外部…

【附代码】SSVEP解码算法 - 多变量同步指数(MSI)

1 算法来源 该算法来自电子科技大学张杨松博士,针对该算法的计算在张博士的博士论文中有详细介绍,有兴趣的读者可以下载阅读,本文重点在对该方法的代码实现。Zhang, Yangsong, et al. “Multivariate synchronization index for frequency recognition of SSVEP-based brain…

JS和CSS实现的原生轮播图

文章目录 &#x1f357; 前言&#x1f356; JSCSS实现滑动轮播图&#x1f354; 纯CSS实现滑动轮播图&#x1f37f; JSCSS实现浅入浅出轮播图&#x1f96a; JSCSS实现滑动带遮罩轮播图&#x1f9c0; JSCSS实现卡片式轮播图 &#x1f357; 前言 图片来自百度图片&#xff0c;可以…

分析解决【No module named ‘triton‘】的问题

&#xff08;一&#xff09;现象 在Windows11下训练Stable-Diffusion的LoRA模型的时候&#xff0c;总是重复提示&#xff1a; A matching Triton is not available, some optimizations will not be enabled. Error caught was: No module named ‘triton’ 意思是&#xff1a…

RocketMQ之 Consumer,消费者消费原理解析

B站 https://www.bilibili.com/video/BV1rX4y1z72v在线学习文档 https://d9bp4nr5ye.feishu.cn/wiki/wikcnjjvso9uytlgVJBfKcJh1Kq 今天我们阅读源码的目的&#xff1a;在SpringBoot项目中&#xff0c;RocketMQ是如何通过 RocketMQMessageListener 来进行消费的。 在SpringBoot…

Python数据结构-----leetcode用队列实现栈

目录 前言&#xff1a; 方法步骤 示例 Python代码实现 225. 用队列实现栈 前言&#xff1a; 上一期学习了怎么去通过两个栈来实现队列&#xff0c;同样这一期我就来讲讲怎么去通过两个队列来实现栈的功能&#xff0c;一起来学习吧。&#xff08;上一期链接Python数据结构--…

【Git基础】常用git命令(一)

文章目录 1. 创建仓库1.1 创建仓库1.2 git add和git commit① git add② git commit③ 工作区、暂存区和仓库 2. 创建git服务器2.1 服务器&#xff1a;2.2 本地2.3 修改配置信息 3. git基础原理3.1 四个区域3.2 工作流程3.3 文件的四种状态① git rm② git checkout 4.优雅的提…

setup的两个注意点

setup的两个注意点 首先&#xff0c;我们原本在v2中&#xff0c;父组件给子组件传递参数时&#xff0c;使用props来接收&#xff0c;当然除了这个方法外&#xff0c;我们还可以通过$attr来接收&#xff0c;只不过使用$atter就不能对父组件传来的参数进行类型的限定&#xff0c…

你是一个资深API接口爬虫程序员,现在需要你介绍一下如何通过商品id来获取商品数据并读取出来

获取商品数据通常需要使用API接口&#xff0c;根据接口文档中的说明传递商品id参数&#xff0c;并使用相应的请求方式&#xff08;通常为GET请求&#xff09;向API服务器发送请求即可。 以下是一个获取商品数据的示例请求&#xff1a; 首先打开API接口文档&#xff0c;找到获…

小航助学答题系统编程等级考试scratch二级真题2023年3月(含题库答题软件账号)

青少年编程等级考试scratch真题答题考试系统请点击 电子学会-全国青少年编程等级考试真题Scratch一级&#xff08;2019年3月&#xff09;在线答题_程序猿下山的博客-CSDN博客_小航答题助手 1.小猫的程序如图所示&#xff0c;积木块的颜色与球的颜色一致。点击绿旗执行程序后&a…

USB TO SPI / USB TO I2C 软件概要 7 --- 专业版调试器

所需设备&#xff1a; 1、USB 转 SPI / I2C 适配器&#xff1b; 软件概述&#xff1a; SPI类: USB TO SPI 1.0-Slave SPI从机软件&#xff0c;适合单步调试&#xff0c;支持SPI工作模式0、1、2、3&#xff0c;自动跟随主机通讯速率&#xff0c;自动接收数据&#xff1b; …

【算法宇宙——在故事中学算法】背包dp之完全背包问题

学习者不灵丝相传&#xff0c;而自杖明月相反&#xff0c;子来此事却无得失。 文章目录 前言正文小明的探险之旅&#xff08;2&#xff09;最后的优化代码 前言 尽管计算机是门严谨的学科&#xff0c;但正因为严谨&#xff0c;所以要有趣味才能看得下去。在笔者的前几篇算法类…

C#基础学习--LINQ

什么是LINQ 从对象获取数据的方法一直都是作为程序的一部分而设计的&#xff0c;然而使用LINQ可以很轻松的查询对象集合 LINQ提供程序 匿名类型 匿名类型经常用于LINQ查询的结果之中 匿名类型的对象创建表达式&#xff1a; using System; using System.Collections; using …

BiFormer:基于双层路由注意力的视觉Transformer

文章目录 摘要1、简介2、相关工作3、我们的方法:BiFormer3.1、预备知识&#xff1a;注意力3.2、双层路由注意(BRA)3.3、BRA的复杂性分析 4、实验4.1、ImageNet-1K图像分类4.2. 目标检测与实例分割4.3. 基于ADE20K的语义分割4.4、消融研究4.5、注意图可视化 5、局限性和未来工作…

C++ -3- 类和对象(中) | (三)END

文章目录 6.日期类的实现构造函数赋值运算符 “”前置、后置日期 - 日期日期类实现—代码汇总流插入流提取 7.const成员const 与 权限放大 8.取地址及const取地址操作符重载 6.日期类的实现 #pragma once #include <stdbool.h> #include <iostream> using namespa…

vue vue-json-viewer 展示 JSON 格式数据

1、下载 vue-json-viewer npm 下载 vue-json-viewer &#xff1a; // Vue2 npm install vue-json-viewer2 --save // Vue3 npm install vue-json-viewer3 --saveyarn 下载 vue-json-viewer &#xff1a; // Vue2 yarn add vue-json-viewer2 // Vue3 yarn add vue-json-view…

基于LS1028 TSN 交换机软件系统设计与实现(三)

NXP 推出 OpenIL 作为用于工业领域的 Linux 发行版&#xff0c; OpenIL 新增的部分中 含有&#xff1a;支持实时的操作系统的扩展和支持工业厂房中自动化 OEM 的 Time-Sensitive 网络。 OpenIL 作为开放型的工业 Linux 系统最大的优势便是将实时计算在网络中 的…

JavaWeb——UDP的报文结构和注意事项

目录 一、UDP特点 1、无连接 2、不可靠 3、面向数据报 4、全双工通信 二、UDP报文结构 1、报头 2、载荷 三、端口 四、报文长度 五、校验和 1、定义 六、注意事项 1、UDP只有接收缓冲区、没有发送缓冲区 2、UDP大小受限 3、基于UDP的应用层协议 4、MTU对UDP协议…