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

2021年11月20日02:17:20 发表评论 1,022 次浏览

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

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 上部署 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 和部署:

如何在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。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: