k8s里面的项目怎么暴露端口让用户访问_K8S上的ELK和应用日志上报实战

52a7b3d5fb3e2420d0c666a24cd8d0ef.png

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

e080e9e75071d676e277c5375faa0dfd.png

一共有两个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服务,如下图:

d68e671b3bb69377a08cb08809af717e.png

部署应用

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服务,如下图:

root@willzhao-Vostro-3267:/usr/local/work/elkk8s# kubectl describe pod elk
Name: elkhost-54c9bbd8d5-ffq68
Namespace: default
Node: willzhao-vostro-3267/192.168.31.89
Start Time: Mon, 30 Apr 2018 16:22:04 +0800
Labels: name=elkhost
pod-template-hash=1075668481
Annotations: http://kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"elkhost-54c9bbd8d5","uid":"9096cde8-4c4f-11e8-a776-024f8a041a1a"...
Status: Running
...

设置kibana

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

f67eec3b634b8538945807634710307f.png

如下图设置:

20b9e24782c211e26452562e34520fce.png

继续设置,如下图:

cac1f522ef4572035ca22bbaf9be23e1.png

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

e62993fff526e4e2606cb55aeb154fab.png

web应用扩容

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

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

kubectl scale deployment elkwebdemo --replicas=3

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

root@willzhao-Vostro-3267:~# kubectl scale deployment elkwebdemo --replicas=3
deployment "elkwebdemo" scaled
root@willzhao-Vostro-3267:~# kubectl get pod
NAME                         READY     STATUS    RESTARTS   AGE
elkhost-944bcbcd4-8vpbs      1/1       Running   0          1h
elkwebdemo-dddbcfc6f-crzcp   1/1       Running   0          11s
elkwebdemo-dddbcfc6f-tsppk   1/1       Running   0          11s
elkwebdemo-dddbcfc6f-x4pk6   1/1       Running   0          1h

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

aceea0073e9ac0a7f63f7d570289a124.png

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

c46cdf09f608eba71b3bcdec0858fc59.png

参考于:http://www.magedu.com/79190.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值