前面我们基本上了解了 Kubernetes 中的一些常见资源对象,接下来我们用一个 WordPress 示例来尽可能将前面的知识点串联起来,我们需要达到的目的是让 WordPress 应用具有高可用、滚动更新的过程中不能中断服务、数据要持久化不能丢失、当应用负载太高的时候能够自动进行扩容、当然还有 HTTPS 访问等等,这些是我们的应用部署到线上环境基本上要具备的一些能力,接下来我们就来一步一步完成这些需求。
原理
首先要部署 WordPress 应用,我们肯定需要知道 WordPress 是如何运行起来的,Wordpress 是一个基于 PHP 和 MySQL 的流行的开源内容管理系统,拥有丰富的插件和模板系统。到这里我们应该就清楚应该如何去运行 WordPress 了,一个能够解析 PHP 的程序,和 MySQL 数据库就可以了,我们要想在 Kubernetes 系统中来运行,肯定需要使用到 Docker 镜像了,对于 WordPress 应用程序本身官方提供了镜像 https://hub.docker.com/_/wordpress,也给出了说明如何运行,可以通过一系列环境变量去指定 MySQL 数据库的配置,只需要将这些参数配置上直接运行即可。我们知道 WordPress 应用本身会频繁的和 MySQL 数据库进行交互,这种情况下如果将二者用容器部署在同一个 Pod 下面是不是要高效很多,因为一个 Pod 下面的所有容器是共享同一个 network namespace 的,下面我们就来部署我们的应用,将我们的应用都部署到 kube-example 这个命名空间下面,所以首先创建一个命名空间:(namespace.yaml)