Kubernetes实战模拟一(wordpress基础版)
Kubernetes实战模拟二(wordpress高可用)
Kubernetes实战模拟三(wordpress健康检查和服务质量QoS)
Kubernetes实战模拟四(wordpress升级更新)
Kubernetes是现在比较流行的容器化软件。我们日常也比较使用的多,我们都是慢慢的从陌生到熟悉的进阶,只有不断的学习,才能有收获。
Kubernetes专栏:https://blog.csdn.net/heian_99/category_9652886.html
Kubernetes官网地址:https://kubernetes.io/
这个专栏,模拟Kubernetes的日常发布流程。
源码地址:https://github.com/nangongchengfeng/Kubernetes/tree/main/wordpress-example
里面包含多个版本,现在是演示v1版本。
环境
Kubernetes:v1.18.3
docker:19.03.9
mysql:5.7
wordpress:5.3.2-apache
版本1
思路:由于wordpress和mysql需要进行交互。版本1就把wordpress和mysql集成到一个pod运行,测试访问效果
原理
Wordpress
Wordpress 是一个基于 PHP 和 MySQL 的流行的开源内容管理系统,拥有丰富的插件和模板系统。一个能够解析 PHP 的程序和 MySQL 数据库。官方提供了镜像 https://hub.docker.com/_/wordpress
可以通过一系列环境变量去指定 MySQL 数据库的配置,只需要将这些参数配置上直接运行即可。
我们知道 Wordpress 应用本身会频繁的和 MySQL 数据库进行交互,这种情况下如果将二者用容器部署在同一个 Pod 下面是不是要高效很多
因为一个 Pod 下面的所有容器是共享同一个 network namespace 的,下面我们就来部署我们的应用
命名空间:(namespace.yaml)
|
|
应用清单:(deployment.yaml)
|
|
由于我们这里 MySQL 和 Wordpress 在同一个 Pod 下面,所以在 Wordpress 中我们指定数据库地址的时候是用的 localhost:3306
,因为这两个容器已经共享同一个 network namespace 了,这点很重要,然后如果我们要想把这个服务暴露给外部用户还得创建一个 Service 或者 Ingress 对象
NodePort 类型的 Service:(service.yaml)
|
|
因为只需要暴露 Wordpress 这个应用,所以只匹配了一个名为 wdport
的端口,现在我们来创建上面的几个资源对象
|
|
接下来就是等待拉取镜像,启动 Pod:
|
|
测试
当 Pod 启动完成后,可以通过上面的 http://<任意节点IP>:30892
这个 NodePort 端口来访问应用了
安装界面
问题
(1)pod中没有先后顺序
(2)单节点问题,没有高可用
(3)Wordpress 是无状态服务器,如果增加节点,mysql也会增加,数据不独立
(4)数据没有持久化
等等一些列的问题。
此版本1,为最简单的问题,我们将在此版本上改进架构,不断的优化