如何在Kubernetes上部署WordPress实例(分步指南)

Kubernetes部署WordPress教程介绍Kubernetes如何部署WordPress实例?作为全球最受欢迎的内容管理系统,WordPress 运行着各种规模的网站,无论是内容量还是网络流量。在Kubernetes上部署 WordPress是实现网站水平扩展并成功处理网站流量激增的有效方法。
本教程介绍了在 Kubernetes 上部署 WordPress 的两种方法 - 使用 Helm 图表和从头开始创建部署。
先决条件

  • 一个Kubernetes集群kubectl
  • Helm 3
  • 系统管理权限
使用 Helm Chart 在 Kubernetes 上部署 WordPress如何在Kubernetes上部署WordPress实例?Helm charts 带有预配置的应用程序安装,可以使用一些简单的命令进行部署。
  1. 添加包含要部署的 WordPress Helm 图表的存储库:
helm repo add [ repo-name] [ repo-address]

系统确认存储库添加成功。该示例使用 Bitnami 图表。
如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
2. 更新本地 Helm 仓库:
helm repo update

如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
3. Kubernetes部署WordPress教程:使用helm install 命令安装图表。
helm install [ release-name] [ repo-address]

等待图表部署。
如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
4. WordPress 服务使用 LoadBalancer 作为公开服务的方式。如果你使用minikube,请打开另一个终端窗口并键入以下命令来模拟 LoadBalancer:
minikube tunnel

【如何在Kubernetes上部署WordPress实例(分步指南)】5. minikube 显示Running状态时,将窗口最小化,返回上一窗口。
如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
6. 通过键入以下内容检查部署的准备情况:
kubectl get all

该命令列出并显示 pod、服务和部署的状态。
如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
Kubernetes部署WordPress教程
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/"

如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
9. 在浏览器的地址栏中输入地址。WordPress 安装开始。
使用持久卷在 Kubernetes 上部署 WordPressKubernetes如何部署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 和部署:
如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
Kubernetes部署WordPress教程
9. 检查 Pod 和部署是否准备就绪:
kubectl get all

如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
10.如果你使用minikube,打开另一个终端窗口并启动minikube隧道来提供负载均衡模拟:
minikube tunnel

仿真运行后,最小化窗口并返回上一个窗口。
11. 如何在Kubernetes上部署WordPress实例?键入以下命令以公开你将用于访问已部署的 WordPress 实例的服务 URL:
minikube service wordpress-service --url

该 URL 显示为命令输出:
如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
注意:如果你不使用 minikube,请使用步骤 9中表中的外部 IP 地址和 WordPress 服务的端口。
12. 复制 URL 并将其粘贴到你的 Web 浏览器中。WordPress 安装开始。
如何在Kubernetes上部署WordPress实例(分步指南)

文章图片
Kubernetes部署WordPress教程结论Kubernetes如何部署WordPress实例?阅读本教程后,你将学习两种在 Kubernetes 上部署 WordPress 实例的方法。如果你想了解有关管理 WordPress 的更多信息,请阅读25 条性能和优化技巧来加速你的 WordPress。

    推荐阅读