基于k8s重做WordPress 网站实验(chrono《kubernetes入门实战课》笔记整理)

 

【实验目的&拓扑说明】

之前docker篇结束的时候,用三个镜像做了三个docker来运行WordPress 网站,相当于是手工编排了一下三个docker。现在用K8S来自动编排一下,实现这个网站的功能。整体思路为:将网站和数据库封装为两个POD,因为都是在线业务,所以这个实验用不到job、cronjob了。网络要做整体代理,所以在k8s之外用nginx做整体网络的反向代理。如下图所示:

 【配置步骤】

1、配置MariaDB pod。

1)对于数据库名、用户名、密码等,使用 ConfigMap来做配置,为此需要定义一个 maria-cm 对象:

 

 2)配置 Pod 对象 maria-pod,把配置信息注入 Pod,让 MariaDB 运行时从环境变量读取这些信息:

 

 3)加载kubectl apply -f maria-cm.yml和maria-pod.yml,先运行cm,再运行pod。之后查看cm和pod状态

 

 

 

 插播:这里我遇到两个小问题,导致我镜像没有拉起来

a pod状态为CreateContainerConfigError:我忘记kubectl apply -f cm对象了,运行了cm后,再运行对应pod,就runing了;

b 报错ImagePullBackOff:用describe看,发现是没有空间了,我df -h看还真的没有了,这也是今天发了一篇博文空间满了怎么办的原因。。我这个虚拟机就是用来做k8s实验的,所以肯定都是docker引起的,基本没有别的什么可以删除的,所以操作docker system prune -a,把不用的镜像都直接删除了,因为好多都是我实验过程中的,已经不用的,然后省出来1G多,重新运行pod,就running了。

2、配置wordpress pod。

1)定义cm。在这个 ConfigMap 里要注意的是“HOST”字段,它必须是 MariaDB Pod 的 IP 地址,如果不写正确 WordPress 会无法正常连接数据库,本实验中应为172.17.0.3:

 

 

 2)定义wp的pod:

 

 

 3)加载kubectl apply -f maria-cm.yml和maria-pod.yml,先运行cm,再运行pod。之后查看cm和pod状态

3、映射端口号,让服务在集群外可见。

上面可以看到,k8s的网络都是内部的私网,外部无法访问。要想暴露服务,就是把端口映射到外部。可以用kubectl port-forward临时来调试和测试。如果想关闭端口转发,需要敲命令 fg ,它会把后台的任务带回到前台,然后就可以简单地用“Ctrl + C”来停止转发了。

 

 

 4、创建反向代理的nginx,让网站对外提供服务。

这是因为 WordPress 网站使用了 URL 重定向,直接使用“8080”会导致跳转故障,所以为了让网站正常工作,我们还应该在 Kubernetes 之外启动 Nginx 反向代理,保证外界看到的仍然是“80”端口号。nginx配置文件如下,比如本地新建一个proxy.conf,内容如下:

 

 

 docker pull先把nginx:alpine拉下来,然后运行这个nginx镜像:docker run -d --rm -p 80:80 -v `pwd`/proxy.conf:/etc/nginx/conf.d/default.conf  nginx:latest

 

5、接下来就可以访问本地的80端口打开网页了,但是我这里失败了,显示502,还得查查原因。宿主机可以ping通nginx这个docker,但是ping不同pod的172.17.0.4和3,但是从pod又可以ping通宿主机。。。这个实验重在操作理解结构,网络的原因慢慢再理解下吧。

 

 

 

 

 

 

【最近k8s课程的总结】

 

 

posted @ 2022-12-07 11:10  1234roro  阅读(96)  评论(0)    收藏  举报