云原生之在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.本次环境规划
本次实践规划环境介绍
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: 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后台管理。