> 文章列表 > 云原生之在kubernetes环境下部署wordpress

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

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

云原生之在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集群架构示意图

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

三、本次实践介绍

1.本次实践简介

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

2.本次环境规划

本次实践规划环境介绍

hostname IP地址 操作系统版本 k8s版本 角色
k8s-master 192.168.3.201 centos7.6 v1.23.1 master节点
k8s-node01 192.168.3.202 centos7.6 v1.23.1 worker节点
k8s-node02 192.168.3.203 centos7.6 v1.23.1 worker节点

四、环境准备工作

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: wordpressnamespace: wordpresslabels:app: wordpress
spec:ports:- protocol: TCPtargetPort: 80port: 80nodePort: 30020selector:app: wordpresstype: NodePort---apiVersion: apps/v1
kind: Deployment
metadata:name: wordpressnamespace: wordpresslabels:app: wordpress
spec:replicas: 2selector:matchLabels:app: wordpresstemplate:metadata:labels:app: wordpressspec:containers:- name: wordpressimage: wordpressports:- containerPort: 80env:- name: WORDPRESS_DB_HOSTvalue: wordpress-mysql.wordpress.svc.cluster.local- name: WORDPRESS_DB_USERvalue: wordpress- name:  WORDPRESS_DB_PASSWORDvalueFrom:      secretKeyRef:name: mysecretkey: passwordvolumeMounts:- mountPath: "/var/www/html"name: wordpress-datavolumes:- name: wordpress-datahostPath:path: /data/wordpress/data         ---apiVersion: v1
kind: Service
metadata:name: wordpress-mysqlnamespace: wordpresslabels:app: wordpress
spec:ports:- port: 3306selector:app: wordpresstier: mysql---apiVersion: apps/v1
kind: StatefulSet
metadata:name: wordpress-mysqlnamespace: wordpresslabels:app: wordpress
spec:replicas: 1selector:matchLabels:app: wordpresstier: mysqlserviceName: "wordpress-mysql"template:metadata:labels:app: wordpresstier: mysqlspec:containers:- name: mysqlimage: mysql:5.7env:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mysecretkey: password- name: MYSQL_DATABASEvalue: wordpress- name: MYSQL_USERvalueFrom:      secretKeyRef:name: mysecretkey: username- name: MYSQL_PASSWORDvalueFrom:secretKeyRef:name: mysecretkey: passwordports:- containerPort: 3306name: mysqlvolumeMounts:- mountPath: /var/lib/mysqlname: mysql-storagevolumes:- name: mysql-storagehostPath: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
可以选择系统中文语言或者英语,这里是选择英语。

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

2.设置网站信息

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

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

八、访问wordpress

1.访问wordpress首页

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

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

2.访问wordpress后台管理

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

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