1. 程式人生 > >簡單5步,輕鬆debug K8S服務!

簡單5步,輕鬆debug K8S服務!

> 作者: Ram Rai,效能、可擴充套件性以及軟體架構的愛好者 > > 原文連結: > https://medium.com/better-programming/debug-your-kubernetes-service-in-5-easy-steps-1457974f024c 在Kubernetes中,服務是一個核心概念。在本文中,將介紹如何除錯K8S服務,這些服務是由多個Pod組成的工作負載的抽象介面(主機+埠)。 在我們深入探索debug方法之前,我們先簡單回顧一下網路,這是Kubernetes服務的基礎。 - 在一個pod中的容器共享相同的網路空間和IP。 - 所有的pod都能通過IP彼此通訊。 - 每個節點都能看到所有的Pod,反之亦然。 - Pod可以看到所有的服務。 那麼,在實踐中這些意味著什麼呢? ![](https://oscimg.oschina.net/oscnet/up-00350842280b7035da6f86b3985cd33bfce.png) 在圖中: - 位於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叢集中先前列出的網路要求,`n