博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
k8s集群上线web静态网站
阅读量:4647 次
发布时间:2019-06-09

本文共 3138 字,大约阅读时间需要 10 分钟。

 

环境准备

 

一台部署节点,一台master节点,还有两台节点node1,node2

完好的k8s集群环境

 

思路1:

在node1和node2节点上通过宿主机与容器之间目录映射和端口映射上线静态网站(或动态),然后将映射的目录做成hostpath,通过nfs共享出去。

 

思路二:

在node1和node2节点上通过拷贝宿主机存放静态资源的目录到容器的apache根目录内实现静态网站的上线,并且能通过部署nodeport静态端口访问后端节点的静态网站。

 

 这里我演示第二种方法:

 

部署节点操作:

1)编排httpd.yml文件

容器端口为80,副本数为3.

这里因为我是上线的apache服务,所以使用httpd的镜像,当然也可以使用nginx或者tomcat,但需要注意的是各自的根目录不一样。

 

2)然后执行如下命令创建deployment,生成pod。

kubectl  apply -f  httpd.yml

 

查看pod状态

[root@dlp yml]# kubectl get pod -o wideNAME                                READY     STATUS        RESTARTS   AGE       IP               NODEhttpd-deployment-784d567c4d-2fxb2   1/1       Running       0          10m       172.20.104.29    192.168.253.22httpd-deployment-784d567c4d-bl4zk   1/1       Running       0          44m       172.20.166.163   192.168.253.21httpd-deployment-784d567c4d-pdkhh   1/1       Running       0          45m       172.20.104.28    192.168.253.22

 

node节点:

3)根据pod的name在分别在22和21节点查找容器。

 

 

 

4)创建目录/usr/local/apache2/htdocs ,然后上传一个静态资源包,我这里上传一个飞机大战的小游戏。     #这里我们需要知道的是,这也是httpd容器的根目录。

[root@node1 htdocs]# lsgame.zip[root@node1 htdocs]# unzip game.zip 解压后是这个样子 [root@node1 htdocs]# ls game  jquery-1.8.3.min.js  readme.xls  sky_fight.html  sky.php

 

5)将以上文件全部拷贝到 3)步骤的容器里面的/usr/local/apache2/htdocs目录下。

[root@node2 apache2]# docker cp htdocs/ 9b20bb037dd8:/usr/local/apache2/htdocs

 

6)进入容器的/usr/local/apache2/htdocs目录,查看文件是否拷贝成功,并且将原本的index,html文件移走或者删除。

否则访问的就是此文件下的内容。—————》it work

[root@node2 apache2]# docker exec -it 9b20bb037dd8 /bin/bash

root@httpd-deployment-784d567c4d-2fxb2:/usr/local/apache2# lsbin  build  cgi-bin  conf  error  htdocs  icons  include  logs    modulesroot@httpd-deployment-784d567c4d-2fxb2:/usr/local/apache2# cd htdocs/root@httpd-deployment-784d567c4d-2fxb2:/usr/local/apache2/htdocs# lshtdocs    index.htmltml @httpd-deployment-784d567c4d-2fxb2:/usr/local/apache2/htdocs# rm -rf index.htroot@httpd-deployment-784d567c4d-2fxb2:/usr/local/apache2/htdocs# cd htdocs/root@httpd-deployment-784d567c4d-2fxb2:/usr/local/apache2/htdocs/htdocs# lsgame      images           readme.xls  sky_fight.htmlgame.zip  jquery-1.8.3.min.js  sky.php

 

 7) 以上步骤成功后又回到部署节点编写一个service的编排文件。

 

 

 节点的静态端口设置为26055,service端口为8080.注意框内的run: httpd。要与1)步骤的编排文件的label name对应。

 

 8)启动编排文件,生成service。

kubectl  apply -f  svc.yml

 

9)查看service的状态

[root@dlp yml]# kubectl get svc -o wideNAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE       SELECTORhttpd-svc    NodePort    10.68.90.148   
8080:26055/TCP 22h run=httpdkubernetes ClusterIP 10.68.0.1
443/TCP 1d
nginx-svc2 NodePort 10.68.26.208
8081:30001/TCP 21h run=nginx

 

 10)在不属于k8s集群的任意主机上访问。格式为nodeip + nodeport  。例如:

 

因为是静态网站,所以我们去web浏览器上访问效果更好。

 

 

 

11) 但是这样只是做了一个节点的可用,我们要想将21节点加入服务端。需要将/usr/local/apache/htdocs目录当成nfs的共享目录挂载到其他节点上。并且通过将此目录下的资源拷贝到节点容器内,而不是通过目录映射,为什么呢?

因为通过目录映射的方式会重新生成一个容器,而不是1)步骤通过编排文件生成的pod容器。这样通过nodeport就无法访问静态资源而是通过宿主机映射的端口来访问。

 

12)在21节点上执行3、4、5、6步骤,然后访问浏览器,显示效果如下:

 

 

 

 可以看到集群的节点都实现了静态网站上线,如果集群内的pod down掉k8s集群会根据副本数自动生成新的pod,实现高可用。

转载于:https://www.cnblogs.com/zzzynx/p/11137755.html

你可能感兴趣的文章
[Leetcode] unique paths ii 独特路径
查看>>
HDU 1217 Arbitrage (Floyd + SPFA判环)
查看>>
IntelliJ idea学习资源
查看>>
Django Rest Framework -解析器
查看>>
ExtJs 分组表格控件----监听
查看>>
Hibernate二级缓存配置
查看>>
LoadRunner常用术语
查看>>
关于jedis2.4以上版本的连接池配置,及工具类
查看>>
记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
查看>>
mechanize (1)
查看>>
FactoryBean
查看>>
Coolite动态加载CheckboxGroup,无法在后台中获取
查看>>
如何在我们项目中利用开源的图表(js chart)
查看>>
nfs服务器工作原理
查看>>
C3P0连接池工具类使用
查看>>
SVN常用命令备注
查看>>
孩子教育
查看>>
解决Cacti监控图像断断续续问题
查看>>
结构体的传参理解成员的存储方式
查看>>
python 进程与线程(理论部分)
查看>>