来源:DevOps

ID:Idevops168

本次实战的基础结构如下图所示:

一共有两个Pod:ELK和web应用;

ELK的Pod会暴露两个服务,一个暴露logstash的5044端口,给filebeat用,另一个暴露kibana的5601端口,给搜索日志的用户访问的时候用;

web应用暴露一个服务,给用户通过浏览器访问;

实战步骤简介

部署ELK的pod和服务;

部署web应用的pod和服务;

web应用的pod从一个扩展为三个;

体验ELK;

部署ELK

我们从ELK Sever开始部署吧:

1. ssh登录到可以执行kubectl命令的机器上去;

2. 创建elk的部署脚本elkhost.yaml,内容如下:

如上所示,暴露了两个端口:kibana的5601和logstash的5044;

3. 在elkhost.yaml所在目录执行命令kubectl create -f elkhost.yaml,即可创建elk对应的pod,如下:

4. 将kibana的5601端口以NodePort的方式对外暴露,这样外部就可以通过节点IP地址来访问kibana服务了,创建部署脚本elkkibana-svc.yaml,kibana的服务通过node节点的30001端口对外暴露,内容如下:

5. 将logstash的5044端口以ClusterIP的方式对外暴露,这样其他pod的filebeat就可以通过服务名加5044端口来访问logstash服务了,创建部署脚本elkhost-svc.yaml,logstash的服务通过5044端口对K8S内部的pod暴露,内容如下:

6. 在elkhost-svc.yaml所在目录执行命令kubectl create -f elkhost-svc.yaml && kubectl create -f elkkibana-svc.yaml,即可创建elkhost和elkkibana这两个服务,如下:

7. 执行命令查看elkhost的pod部署在K8S的哪个node节点上:

如上所示,Node: willzhao-vostro-3267/192.168.31.89显示了这个pod部署的节点IP是192.168.31.89;

8. 打开浏览器,输入192.168.31.89:30001,即可访问到Kibana服务,如下图:

部署应用

ELK Sever已经OK,接下来部署web应用:

1. 创建elkwebdemo的部署脚本elkwebdemo.yaml,内容如下:

2. 在elkwebdemo.yaml所在目录执行命令kubectl create -f elkwebdemo.yaml,即可创建elk对应的pod,如下:

3. 创建elk对外服务的部署脚本elkwebdemo-svc.yaml,web的服务通过node节点的30002端口对外暴露,内容如下:

5. 在elkwebdemo-svc.yaml所在目录执行命令kubectl create -f elkwebdemo-svc.yaml,即可创建elkwebdemo对应的pod,如下:

6. 执行命令查看elkwebdemo的pod部署在K8S的哪个node节点上:

如上所示,Node: willzhao-vostro-3267/192.168.31.89显示了这个pod部署的节点IP是192.168.31.89;

7. 打开浏览器,输入http://192.168.31.89:30002/hello/tom,即可访问到web服务,如下图:

设置kibana

再次打开kibana页面,如下图所示,点击红框中的“Discover”,发现已经搜集到了上报的日志,如绿框所示:

如下图设置:

继续设置,如下图:

再此点击左上角的”Discover”,既可开始搜索web应用日志,如下图:

web应用扩容

现在我们模拟生产环境的在线扩容:

1. 将web应用从一个扩展到三个,执行以下命令:

2. 可以看到web应用对应的pod已经扩展了,如下所示:

3. 为了能多上报一些日志,在浏览器上多刷新几次这个地址:http://192.168.31.89:30002/hello/tom 
4. 回到kibana页面,如下图,点击红框中的“host”,展开的信息显示,这些日志来自三个host:

5. 打开K8S的dashboard页面看一下容器信息,如下图,可以见到三个web容器的hostname和kibana中的host是一样的:

最新文章

  1. Flex Builder快捷键
  2. Remove-Azureaccount (Can't get Azure credentials to stick in Powershel)
  3. 地址(Address)——统一资源表示(URI)——WCF学习笔记(2)
  4. .net4.5 await async 简化之后的异步编程模型
  5. SQL Server中如何用mdf,ldf文件还原数据库
  6. 不知道算不算另类的ASP.NET MVC4 Ajax分页
  7. pyqt信号事件相关网址说明及python相关
  8. ruby on rails创建的页面訪问很慢
  9. 二、Windows基础数据类型
  10. JS标签的各种事件的举例
  11. 64位ubuntu安装N64模拟器mupen64
  12. 学习ELk之----02. Elastic Search操作入门
  13. windows下Mysql8.0.12安装详解
  14. 和我一起使用webpack构建react项目
  15. Django自定义装饰器
  16. MarkerOpter marker操作类
  17. DocFetcher 本机文件搜索工具
  18. label标签的显示和隐式关联问题
  19. supervisor 使用教程(转)
  20. python keras 神经网络框架 的使用以及实例

热门文章

  1. Linux-tcpdump command
  2. python 标准库 —— 线程与同步(threading、multiprocessing)
  3. FFMPEG实现H264的解码(从源代码角度)
  4. SPOJ705 Distinct Substrings (后缀自动机&后缀数组)
  5. ACM学习历程—HYSBZ 2818 Gcd(欧拉函数 || 莫比乌斯反演)
  6. JS图表工具 ---- Highcharts
  7. 2008上交:Day of Week
  8. Python selenium 三种等待方法
  9. Mac For Mongodb安装启动、停止及启动授权
  10. C# 判断路径和文件存在