k8s部署wordpress

903 字
5 分钟
k8s部署wordpress

wordpress介绍#

1.wordpress简介#

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

2.wordpress特点#

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

本次实践介绍#

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

环境规划#

hostnameIP地址操作系统版本k8s版本角色
k8s-pixiu0111.0.1.40centos7.9v1.24.12管理节点
k8s-pixiu0211.0.1.41centos7.9v1.24.12工作节点
k8s-pixiu0311.0.1.42centos7.9v1.24.12工作节点

环境准备工作#

1.检查k8s环境#

Terminal window
# 检查k8s的各工作节点状态
NAME STATUS ROLES AGE VERSION
pixiu01 Ready control-plane 39d v1.24.12
pixiu02 Ready <none> 39d v1.24.12
pixiu03 Ready <none> 39d v1.24.12

2.检查系统pod状态#

Terminal window
[root@pixiu01 docker]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-544df655bd-7cvnz 1/1 Running 1 (5d5h ago) 39d
calico-node-2md8v 1/1 Running 1 (5d5h ago) 39d
calico-node-ckq5r 1/1 Running 1 (5d5h ago) 39d
calico-node-vrwfl 1/1 Running 2 (5d5h ago) 39d
coredns-7f74c56694-lk84d 1/1 Running 1 (5d5h ago) 39d
coredns-7f74c56694-ptqx8 1/1 Running 1 (5d5h ago) 39d
csi-nfs-controller-64bc9c5656-858qh 3/3 Running 8 (4h16m ago) 39d
csi-nfs-node-9rt2l 3/3 Running 3 (5d5h ago) 39d
csi-nfs-node-jcnd5 3/3 Running 3 (5d5h ago) 39d
csi-nfs-node-xb2v8 3/3 Running 3 (5d5h ago) 39d
etcd-pixiu01 1/1 Running 1 (5d5h ago) 39d
ingress-nginx-admission-create-wvn2c 0/1 Completed 0 39d
ingress-nginx-admission-patch-j8wm5 0/1 Completed 2 39d
ingress-nginx-controller-6fcbc89bd5-h5cs9 1/1 Running 1 (5d5h ago) 39d
kube-apiserver-pixiu01 1/1 Running 1 (5d5h ago) 39d
kube-controller-manager-pixiu01 1/1 Running 1 (5d5h ago) 39d
kube-proxy-4x82q 1/1 Running 1 (5d5h ago) 39d
kube-proxy-8pw74 1/1 Running 1 (5d5h ago) 39d
kube-proxy-r2sh5 1/1 Running 1 (5d5h ago) 39d
kube-scheduler-pixiu01 1/1 Running 1 (5d5h ago) 39d
metrics-server-v0.5.2-654c5c646-68sqp 2/2 Running 2 (5d5h ago) 39d

创建mysql的secret资源#

创建ns#

kubectl create ns wordpress

创建Secret#

apiVersion: v1
kind: Secret
metadata:
name: env-secret
namespece: wordpress
type: Opaque
data:
# 需要转为base64 字符串
# echo "root"|base64
mysql-root-password: "cm9vdA==" # root
mysql-user: "d29yZHByZXNz" # wordpress
mysql-password: "d29yZHByZXNz" #wordpress

查看Secret#

Terminal window
[root@pixiu01 docker]# kubectl get secrets -n wordpress
NAME TYPE DATA AGE
env-secret Opaque 3 21s

创建mysql 服务#

apiVersion: apps/v1
kind: Deployment
metadata:
namespace: wordpress
name: wordpress-mysql
labels:
app: wordpress-mysql
spec:
replicas: 1
selector:
matchLabels:
app: wordpress-mysql
template:
metadata:
name: wordpress-mysql
labels:
app: wordpress-mysql
spec:
containers:
- name: wordpress-mysql
image: registry.cn-shenzhen.aliyuncs.com/jxqwe/base:mysql-5.7
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: env-secret
key: mysql-root-password
- name: MYSQL_DATABASE
value: "wordpress"
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: env-secret
key: mysql-user
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: env-secret
key: mysql-password
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql-svc
namespace: wordpress
spec:
selector:
app: wordpress-mysql
ports:
- protocol: TCP
port: 3306
targetPort: 3306
type: NodePort

创建wordpress 服务#

apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
name: wordpress
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: "registry.cn-shenzhen.aliyuncs.com/jxqwe/base:wordpress"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
env:
- name: WORDPRESS_DB_HOST
value: wordpress-mysql-svc
- name: WORDPRESS_DB_NAME
value: "wordpress"
- name: WORDPRESS_DB_USER
valueFrom:
secretKeyRef:
name: env-secret
key: mysql-user
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: env-secret
key: mysql-password
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
namespace: wordpress
name: wordpress-svc
spec:
selector:
app: wordpress
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort

效果展示#

将这些yaml 先 apply
# 查看 pod状态
[root@pixiu01 docker]# kubectl get pod -n wordpress
NAME READY STATUS RESTARTS AGE
wordpress-96c47fdbd-bppw8 1/1 Running 0 49s
wordpress-mysql-78bc7df7fd-5qzzz 1/1 Running 0 45s
# 查看svc
[root@pixiu01 docker]# kubectl get svc -n wordpress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress-mysql-svc NodePort 10.254.172.26 <none> 3306:30761/TCP 68s
wordpress-svc NodePort 10.254.107.148 <none> 80:30433/TCP 70s
# 用浏览器服务 11.0.1.40:30433

image-20230704171223498
image-20230704171223498

文章目录