Kubernetes:37---服務(無法訪問服務的一些原因)

江南、董少發表於2020-12-30
  • 服務是Kubernetes的一個重要概念,也是讓許多開發人員感到困擾的根源。許多開發人員為了弄清楚無法通過服務IP或FQDN連線到他們的pod的原因花費了大量時間
  • 如果無法通過服務訪問pod,應該根據下面的列表進行排查:
    • 首先,確保從叢集內連線到服務的叢集IP,而不是從外部
    • 不要通過ping服務IP來判斷服務是否可訪問(請記住,服務的叢集 IP是虛擬IP,是無法ping通的)
    • 如果已經定義了就緒探針,請確保它返回成功;否則該pod不會成 為服務的一部分
    • 要確認某個容器是服務的一部分,請使用kubectl get endpoints來檢 查相應的端點物件
    • 如果嘗試通過FQDN或其中一部分來訪問服務(例如, myservice.mynamespace.svc.cluster.local或myservice.mynamespace),但 並不起作用,請檢視是否可以使用其叢集 IP而不是FQDN來訪問服務
    • 檢查是否連線到服務公開的埠,而不是目標埠
    • 嘗試直接連線到pod IP以確認pod正在接收正確埠上的連線
    • 如果甚至無法通過pod的IP訪問應用,請確保應用不是僅繫結到本 地主機
  • 之後會在後面"k8s機理"專欄中介紹更多有關服務如何工作的內容。通過了解它們的實現方式,應該可以更輕鬆地對它們進行故障排除

相關文章