Kubernetes部署WordPress教程介绍
Kubernetes如何部署WordPress实例?作为全球最受欢迎的内容管理系统,WordPress 运行着各种规模的网站,无论是内容量还是网络流量。在Kubernetes上部署 WordPress是实现网站水平扩展并成功处理网站流量激增的有效方法。
本教程介绍了在 Kubernetes 上部署 WordPress 的两种方法 - 使用 Helm 图表和从头开始创建部署。
先决条件
- 一个Kubernetes集群kubectl
- Helm 3
- 系统管理权限
使用 Helm Chart 在 Kubernetes 上部署 WordPress
如何在Kubernetes上部署WordPress实例?Helm charts 带有预配置的应用程序安装,可以使用一些简单的命令进行部署。
- 添加包含要部署的 WordPress Helm 图表的存储库:
helm repo add [repo-name] [repo-address]
系统确认存储库添加成功。该示例使用 Bitnami 图表。
2. 更新本地 Helm 仓库:
helm repo update
3. Kubernetes部署WordPress教程:使用helm install 命令安装图表。
helm install [release-name] [repo-address]
等待图表部署。
4. WordPress 服务使用 LoadBalancer 作为公开服务的方式。如果你使用minikube,请打开另一个终端窗口并键入以下命令来模拟 LoadBalancer:
minikube tunnel
5. minikube 显示Running状态时,将窗口最小化,返回上一窗口。
6. 通过键入以下内容检查部署的准备情况:
kubectl get all
该命令列出并显示 pod、服务和部署的状态。
7. Pod 和部署准备就绪后,使用以下命令导出SERVICE_IP
环境变量:
export SERVICE_IP=$(kubectl get svc --namespace default wp-test-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
8. 现在使用echo 命令显示服务的 IP 地址:
echo "WordPress URL: http://$SERVICE_IP/"
9. 在浏览器的地址栏中输入地址。WordPress 安装开始。
使用持久卷在 Kubernetes 上部署 WordPress
Kubernetes如何部署WordPress实例?使用自定义配置部署 WordPress 时,你需要为 WordPress 和应用程序将使用的数据库创建一系列YAML 文件。下面的示例使用MySQL,但你也可以选择 MariaDB。
1. 使用文本编辑器创建 YAML 文件来为 MySQL 数据库配置存储。
nano mysql-storage.yaml
该文件定义了一个持久存储卷(PV) 并使用 PersistentVolumeClaim (PVC) 声明该存储。该示例使用以下配置:
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
labels:
app: wordpress
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
保存文件并退出。
2. 创建 MySQL 部署配置 YAML。
nano mysql-deployment.yaml
如何在Kubernetes上部署WordPress实例?部署文件包含与容器镜像和存储相关的数据。claimName
底部的声明应与你在步骤 1 中创建的 PVC 的名称相对应。
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress-mysql
labels:
app: wordpress
spec:
selector:
matchLabels:
app: wordpress
tier: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: wordpress
tier: mysql
spec:
containers:
- image: mysql:5.7
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-pass
key: password
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
保存文件并退出。
注意:了解如何使用持久卷在 Kubernetes 上部署 MySQL 数据库实例。
3. Kubernetes部署WordPress教程:为数据库创建服务配置 YAML 。
nano mysql-service.yaml
该文件指定 WordPress 用于连接到服务的端口:
apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql
labels:
app: wordpress
spec:
ports:
- port: 3306
selector:
app: wordpress
tier: mysql
clusterIP: None
保存文件并退出。
4. 现在为 WordPress 本身创建相同的 YAML 文件。从存储分配开始:
nano wordpress-storage.yaml
该示例使用以下配置:
apiVersion: v1
kind: PersistentVolume
metadata:
name: wp-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wp-pv-claim
labels:
app: wordpress
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
保存文件并退出。
5. 创建部署文件:
nano wordpress-deployment.yaml
Kubernetes如何部署WordPress实例?该文件提供了Docker 镜像并将 WordPress 部署与 PVC 连接起来:
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
selector:
matchLabels:
app: wordpress
tier: frontend
strategy:
type: Recreate
template:
metadata:
labels:
app: wordpress
tier: frontend
spec:
containers:
- image: wordpress:5.8-apache
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: wordpress-mysql
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-pass
key: password
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: wordpress-persistent-storage
mountPath: /var/www/html
volumes:
- name: wordpress-persistent-storage
persistentVolumeClaim:
claimName: wp-pv-claim
保存文件并退出。
6. 创建服务 YAML:
nano wordpress-service.yaml
该示例使用 LoadBalancer 来公开服务:
apiVersion: v1
kind: Service
metadata:
name: wordpress
labels:
app: wordpress
spec:
ports:
- port: 80
selector:
app: wordpress
tier: frontend
type: LoadBalancer
保存文件并退出。
7. 创建kustomization.yaml 文件,该文件将用于轻松应用配置:
nano kustomization.yaml
该文件包含两部分:
secretGenerator
生成将登录信息传递给容器的Kubernetes 密钥。resources
部分列出了将参与配置的所有文件。列出你在前面的步骤中创建的文件。
secretGenerator:
- name: mysql-pass
literals:
- password=test123
resources:
- mysql-storage.yaml
- mysql-deployment.yaml
- mysql-service.yaml
- wordpress-storage.yaml
- wordpress-deployment.yaml
- wordpress-service.yaml
保存文件并退出。
8. 使用以下命令应用kustomization.yaml 中列出的文件:
kubectl apply -k ./
系统确认已成功创建秘密、服务、PV、PVC 和部署:
9. 检查 Pod 和部署是否准备就绪:
kubectl get all
10.如果你使用minikube,打开另一个终端窗口并启动minikube隧道来提供负载均衡模拟:
minikube tunnel
仿真运行后,最小化窗口并返回上一个窗口。
11. 如何在Kubernetes上部署WordPress实例?键入以下命令以公开你将用于访问已部署的 WordPress 实例的服务 URL:
minikube service wordpress-service --url
该 URL 显示为命令输出:
注意:如果你不使用 minikube,请使用步骤 9中表中的外部 IP 地址和 WordPress 服务的端口。
12. 复制 URL 并将其粘贴到你的 Web 浏览器中。WordPress 安装开始。
Kubernetes部署WordPress教程结论
Kubernetes如何部署WordPress实例?阅读本教程后,你将学习两种在 Kubernetes 上部署 WordPress 实例的方法。如果你想了解有关管理 WordPress 的更多信息,请阅读25 条性能和优化技巧来加速你的 WordPress。