新聞中心
訪問集群上運行的服務(wù)
本文展示了如何連接 Kubernetes 集群上運行的服務(wù)。

肅寧網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
在開始之前
你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:
- Katacoda
- 玩轉(zhuǎn) Kubernetes
要獲知版本信息,請輸入 ?kubectl version?。
訪問集群上運行的服務(wù)
在 Kubernetes 里,節(jié)點、 Pod 和 服務(wù) 都有自己的 IP。 許多情況下,集群上的節(jié)點 IP、Pod IP 和某些服務(wù) IP 是路由不可達(dá)的, 所以不能從集群之外訪問它們,例如從你自己的臺式機。
連接方式
你有多種可選方式從集群外連接節(jié)點、Pod 和服務(wù):
- 通過公網(wǎng) IP 訪問服務(wù)
- 使用類型為 ?
NodePort?或 ?LoadBalancer?的服務(wù),可以從外部訪問它們。 - 取決于你的集群環(huán)境,你可以僅把服務(wù)暴露在你的企業(yè)網(wǎng)絡(luò)環(huán)境中,也可以將其暴露在 因特網(wǎng)上。需要考慮暴露的服務(wù)是否安全,它是否有自己的用戶認(rèn)證?
- 將 Pod 放置于服務(wù)背后。如果要訪問一個副本集合中特定的 Pod,例如用于調(diào)試目的, 請給 Pod 指定一個獨特的標(biāo)簽并創(chuàng)建一個新服務(wù)選擇該標(biāo)簽。
- 大部分情況下,都不需要應(yīng)用開發(fā)者通過節(jié)點 IP 直接訪問節(jié)點。
- 通過 Proxy 動詞訪問服務(wù)、節(jié)點或者 Pod
- 在訪問遠(yuǎn)程服務(wù)之前,利用 API 服務(wù)器執(zhí)行身份認(rèn)證和鑒權(quán)。 如果你的服務(wù)不夠安全,無法暴露到因特網(wǎng)中,或者需要訪問節(jié)點 IP 上的端口, 又或者出于調(diào)試目的,可使用這種方式。
- 代理可能給某些應(yīng)用帶來麻煩
- 此方式僅適用于 HTTP/HTTPS
- 從集群中的 node 或者 pod 訪問。
- 從集群中的一個節(jié)點或 Pod 訪問
- 運行一個 Pod,然后使用 kubectl exec 連接到它的 Shell。從那個 Shell 連接其他的節(jié)點、Pod 和 服務(wù)
- 某些集群可能允許你 SSH 到集群中的節(jié)點。你可能可以從那兒訪問集群服務(wù)。 這是一個非標(biāo)準(zhǔn)的方式,可能在一些集群上能工作,但在另一些上卻不能。 瀏覽器和其他工具可能已經(jīng)安裝也可能沒有安裝。集群 DNS 可能不會正常工作。
發(fā)現(xiàn)內(nèi)置服務(wù)
典型情況下,kube-system 名字空間中會啟動集群的幾個服務(wù)。 使用 ?kubectl cluster-info? 命令獲取這些服務(wù)的列表:
kubectl cluster-info
輸出類似于:
Kubernetes master is running at https://192.0.2.1
elasticsearch-logging is running at https://192.0.2.1/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy
kibana-logging is running at https://192.0.2.1/api/v1/namespaces/kube-system/services/kibana-logging/proxy
kube-dns is running at https://192.0.2.1/api/v1/namespaces/kube-system/services/kube-dns/proxy
grafana is running at https://192.0.2.1/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
heapster is running at https://192.0.2.1/api/v1/namespaces/kube-system/services/monitoring-heapster/proxy
這一輸出顯示了用 proxy 動詞訪問每個服務(wù)時可用的 URL。例如,此集群 (使用 Elasticsearch)啟用了集群層面的日志。如果提供合適的憑據(jù),可以通過 ?https://192.0.2.1/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/? 訪問,或通過一個 ?kubectl proxy? 來訪問: ?http://localhost:8080/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/?。
手動構(gòu)建 API 服務(wù)器代理 URLs
如前所述,你可以使用 ?kubectl cluster-info? 命令取得服務(wù)的代理 URL。 為了創(chuàng)建包含服務(wù)末端、后綴和參數(shù)的代理 URLs,你可以在服務(wù)的代理 URL 中添加: ?http://kubernetes_master_address/api/v1/namespaces/namespace_name/services/service_name[:port_name]/proxy ?
如果還沒有為你的端口指定名稱,你可以不用在 URL 中指定 port_name。 對于命名和未命名端口,你還可以使用端口號代替 port_name。
默認(rèn)情況下,API 服務(wù)器使用 HTTP 為你的服務(wù)提供代理。 要使用 HTTPS,請在服務(wù)名稱前加上 ?https:?: ?http://? URL 的 ?? 段支持的格式為:
- ?
? - 使用 http 代理到默認(rèn)或未命名端口 - ?
? - 使用 http 代理到指定的端口名稱或端口號: - ?
https:? - 使用 https 代理到默認(rèn)或未命名端口(注意尾隨冒號): - ?
https:? - 使用 https 代理到指定的端口名稱或端口號:
示例
- 如要訪問 Elasticsearch 服務(wù)末端 ?
_search?q=user:kimchy?,你可以使用:
http://192.0.2.1/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/_search?q=user:kimchy
_cluster/health?pretty=true?,你會使用:https://192.0.2.1/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/_cluster/health?pretty=true
健康信息與下面的例子類似:
{
"cluster_name" : "kubernetes_logging",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 5,
"active_shards" : 5,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 5
}
_cluster/health?pretty=true?,你會使用:https://192.0.2.1/api/v1/namespaces/kube-system/services/https:elasticsearch-logging:/proxy/_cluster/health?pretty=true
通過 Web 瀏覽器訪問集群中運行的服務(wù)
你或許能夠?qū)?nbsp;API 服務(wù)器代理的 URL 放入瀏覽器的地址欄,然而:
- Web 服務(wù)器通常不能傳遞令牌,所以你可能需要使用基本(密碼)認(rèn)證。 API 服務(wù)器可以配置為接受基本認(rèn)證,但你的集群可能并沒有這樣配置。
- 某些 Web 應(yīng)用可能無法工作,特別是那些使用客戶端 Javascript 構(gòu)造 URL 的 應(yīng)用,所構(gòu)造的 URL 可能并不支持代理路徑前綴。
本文名稱:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes訪問集群上運行的服務(wù)
分享網(wǎng)址:http://fisionsoft.com.cn/article/ccosshs.html


咨詢
建站咨詢
