简单5步,轻松debug K8S服务!
云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
在Kubernetes中,服务是一个核心概念。在本文中,将介绍如何调试K8S服务,这些服务是由多个Pod组成的工作负载的抽象接口(主机+端口)。
在我们深入探索debug方法之前,我们先简单回顾一下网络,这是Kubernetes服务的基础。
- 在一个pod中的容器共享相同的网络空间和IP。
- 所有的pod都能通过IP彼此通信。
- 每个节点都能看到所有的Pod,反之亦然。
- Pod可以看到所有的服务。
那么,在实践中这些意味着什么呢?
在图中:
- 位于Pod1中的容器B可以直接作为localhost寻址容器A
- 容器B可以通过其IP直接寻址Pod2(kubectl get pod -o wide)。我们知道当pod2出现故障时着不是一个可靠的通信渠道,并且一个新的pod可以出现在其位置中。但是我们无法追逐不断变化的目标。
- 接下来,容器B可以通过Service x访问pod 2和pod 3,后者将它们的IP与负载均衡捆绑在一起;因此,在K8S上支持基于微服务的应用程序起着至关重要的作用
尽管对Kubernetes的内部网络结构的检查不在本文的讨论范围内,但我稍后会发布一些参考资料以供大家进一步研究。
对于当下,我还是鼓励你花费一点时间在实践中经历和理解Kubernetes中的网络。例如,你可以启动一个Kubernetes测试pod并且尝试从该pod中访问其他pod、节点和服务。此处显示的命令将在Pod内弹出一个Linux shell。
kubectl run -it networktest --image=alpine bin/ash --restart=Never --rm
现在你在Kubernetes网络空间内并且你可以随意使用wegt、ping、nslookup之类的命令进行实验。例如,测试你的Kubernetes集群中先前列出的网络要求,nslookup <servicename>, ping <PodIP>。
现在让我们回到我们的话题,troubleshooting Kubernetes服务,这实际上是一种网络结构。
Step1:检查服务是否存在
kubectl get svc
如果服务不存在,应该是服务创建出现了故障,因此要去检查你的服务定义。
Step2:测试你的服务
请记住,一个内部的Kubernetes ClusterIP服务是无法在集群外部访问的。因此,有两种方法可以对其进行测试。方法一,你可以启动一个测试Pod,通过SSH进入该pod,然后尝试像这样访问你的服务:
kubectl run -it testpod --image=alpine bin/ash --restart=Never --rm
在本文中我们启动一个alpine Docker镜像作为pod来从其内部测试服务:
works for http services
wget :
Confirm there is a DNS entry for the service!
nslookup
或者,你可以转发到本地计算机并在本地进行测试。
kubectl port-forward 8000:8080
现在,你可以通过localhost:8000访问服务。
Step3:检查服务是否target相关Pod
Kubernetes服务会根据标签selector将入站流量路由到其中一个pod,流量通过其IP路由到目标Pod。所以,请检查服务是否绑定到那些pod。
kubectl describe service | grep Endpoints
执行上述命令之后,你应该看到与列出的工作负载相关的所有Pod的IP。如果没有看到,请执行Step4。
Step4:检查Pod标签
确保在Kubernetes服务中的selector与pod的标签相匹配。
kubectl get pods --show-labels
kubectl describe svc
从下面的截图的中可以看到,pod的标签在右边。四个pod被标记为app=tinywebsite和tier=frontend,这些标签与下面“described”的服务selector相匹配。
在这四个匹配的Pod中,只有三个正在运行,其IP在突出显示的行中被列为服务的端点(endpoint)。你还可以在IP列中看到相同的IP。
Step5:确认服务端口与pod相匹配
最后,确保在你的pod中的代码能够监听到你为服务指定的targetPort(例如,你在上方截图中看到的port8001)!
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时间:2020-06-10
本文作者:Ram Rai
本文来自:“dockone”,了解相关信息可以关注“dockone”
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
可能是最懂架构的投资人——对话阿里云 MVP戚俊
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 戚俊的快速成长离不开恰逢其时的机遇和委以重任的伯乐,毕业一两年受邀创业。当腻了CTO,于是转行VC,作为大老板的副手再次起飞。这位90后技术人的故事,或许能给你新的启迪。 以下为戚俊的个人专访,推荐阅读(约3分钟)。 前夜难耐,曙光难得 我是一个很主动拥抱新事物的人,热衷于学习、实践新技术,从Docker到TensorFlow,只要确定技术对产品有促进作用并且可能成为趋势,我就敢把这些技术应用于产品中,属于架构师里胆子比较肥的人。 在2016年容器技术刚推出的时候,恰逢公司业务需求攀升,我们需要在扩招人员与技术升级中二选一。考虑到扩增团队的成本和风险都较大,我就做了拥抱Docker的决策。不可避免地,最初出现了很多大大小小的问题,不过最后是成功的。纵然有些风险不可控,我的决定也时常仓促大胆,好在结果总是能论证直觉的准确性。 拥抱Docker是创业以来最痛苦的一年,容器经常出问题,造成过不少事故,也直接导致公司的销售承受来自客户的许多压力。有一次容器在晚上9点多崩溃,完全无法使用,...
-
下一篇
正式发布专有云版本,阿里旗下低代码开发平台「宜搭」 如何发力政企数字化转型?
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 36氪获悉,6月9日,低代码应用开发PaaS平台「宜搭」于阿里云线上峰会中正式发布专有云版本和精品应用市场,瞄准政企数字化转型服务。 「宜搭」为阿里巴巴内部孵化的低代码应用开发PaaS平台。36氪多次报道,低代码开发平台是指那些无需编码或通过少量代码就可以快速生成应用程序的工具,其一方面可以降低企业应用开发人力成本,另一方面可以将原有数月甚至数年的开发时间成倍缩短,从而帮助企业降本增效。 宜搭能够实现的效果也是如此。传统模式下需要两周才能开发的表单流程类应用,普通业务人员用宜搭2小时即可通过托拉拽的形式完成开发,大大提高了业务运转效率。 尽管低代码是个新兴技术,但在当下企业数字化转型的浪潮中,这项技术离我们的生活其实并不遥远——疫情期间,宜搭平台支持了阿里内部团队和外部生态伙伴从0到1研发上线了20多个系统,如新冠病毒信息更新、健康打卡系统、疫情信息采集系统、物资互助平台、员工节后办公统计、阿里巴巴防疫直采全球寻源平台等,专门用于抗疫期间的后勤保障支持,有些还作为模板,免费对社会开放。截...
相关文章
文章评论
共有0条评论来说两句吧...



微信收款码
支付宝收款码