如何從網際網路訪問k8s集群中的服務以及如何排錯

2021-09-24 07:45:43 字數 4979 閱讀 6256

背景客戶的服務申請了pingan.com集團二級網域名稱,並配置到應用的 ingress 中,但是訪問不了

排錯步驟

二級網域名稱pingan.com(本例)屬於外網 dns 記錄,公司辦公網路解析不到位址,因此需要先判斷 dns 定址是否正常。

如果 dns 解析不到 ip 位址,則需要客戶向網路組確認是否成功新增記錄。

確認從網域名稱到服務的網路路徑。

依次判斷網路是否連通,後端服務是否正常。

下面是客戶在servicebot上申請的網域名稱解析:

urlvip

***.pingan.com

***.***.***.***

可以看到解析出了正確位址。

網域名稱到服務的網路路徑:

kubernetes_web-service_flow

過程解釋: 通常客戶的應用需要提供對網際網路的服務,都需要部署在 dmz 網路區域中。

客戶通過網路組申請了公網網域名稱,公網網域名稱對應乙個公網 ip(e.g. ***.28.212.56),公網 ip 將流量**到 vip。

elb(負載均衡)在雲平台上購置,會產生乙個vip,這個vip將前端過來的流量**到客戶的 node 節點上。

在 node 上執行 traefik,監聽 80 埠,接收來自 vip 的請求。 traefik 將接收到的請求丟給apiserver,實際上 traefik 擔任 ingress controller。

traefik 和 kubernetes api 實時地打交道,獲取 ingress 的資訊,從而得知具體的 url 與 service 對應關係。

traefik 將請求**到後端 service。

通過命令驗證:

#

首先要看 vip 是否可訪問

#這裡例子是可訪問的,當然就沒問題了

[root@shb-l0117161 ~]# telnet ***.128.118.241 80

trying ***.128.118.241...

connected to ***.128.118.241.

escape character is '^]'.

exit

複製**

1.驗證vip是否可訪問,注意要在vip所在網段,否則可能沒有開通防火牆。

#

traefik label

#215.128.118.201 是 vip **過來的其中乙個 node

[root@shb-l0075967 ~]# kubectl get nodes -o=wide --show-labels | sed -n '1p;/215\.128\.118\.201/p'

name status roles age version external-ip os-image kernel-version container-runtime labels

215.128.118.201 ready 42d v1.9.1 centos linux 7 (core) 3.10.0-693.21.1.el7.x86_64 docker: caas_log_cloud=installing,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,caas_cluster=shb-dmz-fp-core-stg-106593af,host_name=shb-l0117161,kubernetes.io/hostname=215.128.118.201,lb=traefik

[root@shb-l0075967 ~]# kubectl get pods -o=wide --namespace=kube-system | sed -n '1p;/215\.128\.118\.201/p'

name ready status restarts age ip node

caas-log-helper-2hvqt 1/1 running 0 42d 172.1.115.2 215.128.118.201

traefik-ingress-lb-4z76b 1/1 running 0 5d 215.128.118.201 215.128.118.201

[root@shb-l0075967 ~]#

複製**

2.檢視 vip 的後端 node ip是否有執行 traefik,這裡只檢視了其中乙個節點,如上圖所示的三個節點都必須要有執行才正常。

複製**3.檢視node上 traefik 是否正常監聽,到這一步都正常,且確保防火牆開通的話,那瀏覽器過來的請求就已經到達 k8s 集群中了,剩下的就是 k8s 集群通過 ingress 元件找到具體服務。

複製**4.驗證一下 ingress 中所配置的 url 與 後端 service 的對應關係是否正確。

**ps. 本次舉例的問題最後排查到是三颱負責負載的客戶 node 的其中一台上,flanneld 元件掛了,導致 elb 判斷服務不可用。所以必須保證負載節點所有節點服務一直正常。換句話說,elb 只管負載均衡,不管高可用。 **

ingress簡介:

介紹 traefik: traefik 是一款開源的反向**與負載均衡工具。它最大的優點是能夠與常見的微服務系統直接整合,可以實現自動化動態配置。目前支援docker, swarm, mesos/marathon, mesos, kubernetes, consul, etcd, zookeeper, boltdb, rest api等等後端模型。

k8s集群中 spark訪問hbase中資料

架構系列文章 首先我們需要對hbase的訪問原理非常清楚.可以參考 我們這裡已經在k8s中部署了hdfs和zookeeper以及hbase.部署可以參考 hbase資料分割槽是按照region進行的,分割槽的location就是各個region的location。那麼後續分配executor時可以按...

K8s 從懵圈到熟練 集群網路詳解

作者 聲東 阿里雲售後技術專家 總體上來說,阿里雲 k8s 集群網路配置完成之後,如下圖所示 包括集群 cidr vpc 路由表 節點網路 節點的 podcidr 節點上的虛擬網橋 cni0 連線 pod 和網橋的 veth 等部分。基本上我們可以把這些配置分三種情況來理解 集群配置,節點配置以及 ...

如何在網際網路中隱藏自己

隨著網際網路的普及,人們對網路的依賴越來越大的同時,個人隱私洩露的風險也越來越高。不管是黑客,還是白客,灰客,抑或是普通的上網者,都希望在網際網路上保護洩漏,防止自己的隱私被他人窺竊,有的甚至希望在網際網路上隱藏自己的存在。本文就列舉幾種常用的方法 現在不管是辦理寬頻,還是辦理手機卡都需要實名制,這...