wordpress mysql 应用_示例:使用持久卷部署WordPress和MySQL

示例:使用持久卷部署WordPress和MySQL

浏览 0

扫码

分享

2019-10-27 17:16:54

origin_last_modified:2019-03-25 17:06(#13174) 译文原文 英文原文

版权声明:本文为 码农文档 原创译文,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接和本声明。

公告:如果您也想加入翻译队伍,或者您有相关中文文档想要贡献给大家,请联系coderdocument@163.com ,谢谢!

本教程向你展示了如何使用Minikube部署WordPress站点和MySQL数据库。两个应用程序都使用持久卷和持久卷声明来存储数据。

持久卷(PV)是集群中的一段存储,由管理员手动提供,或由Kubernetes使用StorageClass动态提供。持久卷声明(PVC)是用户对存储的请求,可以通过PV来实现。持久卷和持久卷声明独立于Pod的生命周期,它们在重新启动、重新调度甚至删除Pod时也能保存数据。

@alert_danger@警告:该部署不适合生产环境,因为它使用单实例WordPress和MySQL pod。考虑使用WordPress Helm Chart在生产环境中部署WordPress。

@alert_info@注意:本教程中提供的文件使用GA部署API,并且只适用于kubernetes v1.9及更高版本。如果你希望在Kubernetes的早期版本中使用本教程,请适当地更新API版本,或者参考本教程的早期版本。

目标

创建持久卷声明和持久卷

创建一个拥有以下内容的 kustomization.yaml文件:

Secret 生成器

MySQL 资源配置

WordPress 资源配置

通过 kubectl apply -k ./应用kustomization目录

清理

开始之前

你需要有一个Kubernetes集群,并且必须配置kubectl命令行工具来与集群通信。如果你还没有集群,你可以使用Minikube创建一个集群,或者你可以使用一个Kubernetes游乐场:

要检查版本,请输入kubectl version。

本页所示的示例适用于kubectl 1.14及以上版本。

下载以下配置文件:

创建持久卷声明和持久卷

MySQL和Wordpress都需要一个持久卷来存储数据。它们的持久卷声明将在部署步骤中创建。

许多集群环境都安装了默认的StorageClass。如果在持久卷声明中没有指定StorageClass,则使用集群的默认StorageClass。

创建持久卷声明时,会根据StorageClass配置动态供应一个持久卷。

@alert_danger@警告:在本地集群中,默认的StorageClass使用hostPath供应者。hostPath卷只适合于开发和测试。对于hostPath卷,数据驻留在Pod调度的节点上的/tmp中,不会在节点之间移动。如果Pod死亡并被调度到集群中的另一个节点,或者节点被重新启动,数据将丢失。

@alert_info@注意:如果启动一个需要使用hostPath供应者的集群,则必须在控制器管理器组件中设置--enable-hostpath-provisioner 选项。

@alert_info@注意:如果您有一个Kubernetes集群运行在谷歌Kubernetes引擎上,请遵循以下指南。

创建kustomization.yaml

添加Secret生成器

Secret是存储敏感数据(如密码或密钥)的对象。从v1.14开始,kubectl就支持使用kustomization文件管理Kubernetes对象。你可以通过 kustomization.yaml中的生成器创建一个Secret。

在来自以下命令的kustomization.yaml中添加一个Secret生成器。你需要将 YOUR_PASSWORD 替换为你想要使用的密码。

为MySQL和WordPress添加资源配置

下面的清单描述了一个单实例MySQL部署。MySQL容器将持久卷挂载在/var/lib/mysql。 MYSQL_ROOT_PASSWORD环境变量根据Secret设置数据库密码。

clippy.svg

apiVersion: v1

kind: Service

metadata:

name: wordpress-mysql

labels:

app: wordpress

spec:

ports:

- port: 3306

selector:

app: wordpress

tier: mysql

clusterIP: None

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mysql-pv-claim

labels:

app: wordpress

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 20Gi

---

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2

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.6

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

下载MySQL部署配置文件。 clippy.svg

curl -LO https://k8s.io/examples/application/wordpress/mysql-deployment.yaml

下载WordPress配置文件。 clippy.svg

curl -LO https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml

把它们添加至 kustomization.yaml文件: clippy.svg

cat <>./kustomization.yaml

resources:

- mysql-deployment.yaml

- wordpress-deployment.yaml

EOF

应用与验证

kustomization.yaml 包含用于部署WordPress站点和MySQL数据库的所有资源。你可以通过以下方式应用该目录:

clippy.svg

kubectl apply -k ./

现在你可以验证所有对象是否存在。

运行以下命令,验证Secret是否存在: clippy.svg

kubectl get secrets

输出应该如下: clippy.svg

NAME TYPE DATA AGE

mysql-pass-c57bb4t7mf Opaque 1 9s

验证是否已动态供应了持久卷。 clippy.svg

kubectl get pvc

@alert_info@注意:配置和绑定PV可能需要几分钟的时间。

输出应该如下: clippy.svg

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE

mysql-pv-claim Bound pvc-8cbd7b2e-4044-11e9-b2bb-42010a800002 20Gi RWO standard 77s

wp-pv-claim Bound pvc-8cd0df54-4044-11e9-b2bb-42010a800002 20Gi RWO standard 77s

运行以下命令验证Pod是否正在运行: clippy.svg

kubectl get pods

@alert_info@注意:Pod变为运行状态可能需要几分钟的时间。

输出应该如下: clippy.svg

NAME READY STATUS RESTARTS AGE

wordpress-mysql-1894417608-x5dzt 1/1 Running 0 40s

通过运行以下命令来验证服务是否正在运行: clippy.svg

kubectl get services wordpress

输出应该如下: clippy.svg

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

wordpress ClusterIP 10.0.0.89 80:32406/TCP 4m

@alert_info@注意:Minikube只能通过NodePort暴露服务。EXTERNAL-IP总是处于状态。

运行以下命令获取WordPress服务的IP地址: clippy.svg

minikube service wordpress --url

输出应该如下: clippy.svg

http://1.2.3.4:32406

复制IP地址,并在浏览器中加载页面以查看站点。

你应该会看到WordPress设置页面类似于下面的截图。

bb55376317dfd0e92d7ba7d723c8a685.png

@alert_info@注意:不要把你的WordPress安装放在这个页面上。如果其他用户发现它,他们可以在你的实例上建立一个网站,并使用它来提供恶意内容。通过创建用户名和密码安装WordPress,或者删除实例。

清理

运行以下命令删除Secret、部署、服务和持久卷声明: clippy.svg

kubectl delete -k ./

接下来

了解有关内省与调试的更多信息

了解有关作业的更多信息

了解有关端口转发的更多信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值