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 是一样的:
来源: http://www.bubuko.com/infodetail-3008160.html