From 23aaa92e744cd538768c778c23a753dacd6800ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=85=E8=BF=9B=E8=B6=85?= Date: Thu, 30 Dec 2021 19:30:02 +0800 Subject: [PATCH] [zh] synchronize translate access-cluster.md --- .../access-cluster.md | 208 +----------------- 1 file changed, 4 insertions(+), 204 deletions(-) diff --git a/content/zh/docs/tasks/access-application-cluster/access-cluster.md b/content/zh/docs/tasks/access-application-cluster/access-cluster.md index 52099d3a2a..f680dceb97 100644 --- a/content/zh/docs/tasks/access-application-cluster/access-cluster.md +++ b/content/zh/docs/tasks/access-application-cluster/access-cluster.md @@ -355,214 +355,14 @@ In each case, the credentials of the pod are used to communicate securely with t -## 访问集群中正在运行的服务 {#accessing-services-running-on-the-cluster} -上一节介绍了如何连接 Kubernetes API 服务。本节介绍如何连接到 Kubernetes -集群上运行的其他服务。 -在 Kubernetes 中,[节点](/zh/docs/concepts/architecture/nodes/)、 -[pods](/zh/docs/concepts/workloads/pods/) 和 -[服务](/zh/docs/concepts/services-networking/service/) 都有自己的 IP。 -在许多情况下,集群上的节点 IP、Pod IP 和某些服务 IP 将无法路由, -因此无法从集群外部的计算机(例如桌面计算机)访问它们。 +## 访问集群上运行的服务 {#accessing-services-running-on-the-cluster} - -### 连接的方法 {#ways-to-connect} - -有多种方式可以从集群外部连接节点、Pod 和服务: - -- 通过公共 IP 访问服务。 - - - 类型为 `NodePort` 或 `LoadBalancer` 的服务,集群外部可以访问。 - 请参阅 [服务](/zh/docs/concepts/services-networking/service/) 和 - [kubectl expose](/docs/reference/generated/kubectl/kubectl-commands/#expose) 文档。 - - 取决于你的集群环境,该服务可能仅暴露给你的公司网络,或者也可能暴露给 - 整个互联网。 - 请考虑公开该服务是否安全。它是否进行自己的身份验证? - - 在服务后端放置 Pod。要从一组副本中访问一个特定的 Pod,例如进行调试, - 请在 Pod 上设置一个唯一的标签,然后创建一个选择此标签的新服务。 - - 在大多数情况下,应用程序开发人员不应该通过其 nodeIP 直接访问节点。 - - -- 使用 proxy 动词访问服务、节点或者 Pod。 - - 在访问远程服务之前进行 apiserver 身份验证和授权。 - 如果服务不能够安全地暴露到互联网,或者服务不能获得节点 IP 端口的 - 访问权限,或者是为了调试,那么请使用此选项。 - - 代理可能会给一些 web 应用带来问题。 - - 只适用于 HTTP/HTTPS。 - - 更多详细信息在[这里](#manually-constructing-apiserver-proxy-urls)。 - - -- 从集群中的节点或者 Pod 中访问。 - - - 运行一个 Pod,然后使用 [kubectl exec](/docs/reference/generated/kubectl/kubectl-commands/#exec) - 来连接 Pod 里的 Shell。 - 然后从 Shell 中连接其它的节点、Pod 和服务。 - - 有些集群可能允许你通过 SSH 连接到节点,从那你可能可以访问集群的服务。 - 这是一个非正式的方式,可能可以运行在个别的集群上。 - 浏览器和其它一些工具可能没有被安装。集群的 DNS 可能无法使用。 - - -### 发现内建服务 - -通常来说,集群中会有 kube-system 创建的一些运行的服务。 - -通过 `kubectl cluster-info` 命令获得这些服务列表: - -```shell -kubectl cluster-info -``` - -``` -Kubernetes master is running at https://104.197.5.247 -elasticsearch-logging is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy -kibana-logging is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/kibana-logging/proxy -kube-dns is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/kube-dns/proxy -grafana is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy -heapster is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/monitoring-heapster/proxy -``` - - -这展示了访问每个服务的 proxy-verb URL。 -例如,如果集群启动了集群级别的日志(使用 Elasticsearch),并且传递合适的凭证, -那么可以通过 -`https://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/` -进行访问。日志也能通过 kubectl 代理获取,例如: -`http://localhost:8080/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/`。 -(参阅[使用 Kubernetes API 访问集群](/zh/docs/tasks/administer-cluster/access-cluster-api/) -了解如何传递凭据,或者使用 kubectl proxy) - -#### 手动构建 apiserver 代理 URL {#manually-constructing-apiserver-proxy-urls} - -如上所述,你可以使用 `kubectl cluster-info` 命令来获得服务的代理 URL。 -要创建包含服务端点、后缀和参数的代理 URL,需添加到服务的代理 URL: -`http://`*`kubernetes_master_address`*`/api/v1/namespaces/`*`namespace_name`*`/services/`*`service_name[:port_name]`*`/proxy` - -如果尚未为端口指定名称,则不必在 URL 中指定 *port_name*。 -对于已命名和未命名的端口,也可以使用端口号代替 *port_name*。 - -默认情况下,API server 使用 HTTP 代理你的服务。 -要使用 HTTPS,请在服务名称前加上 `https:`: -`http://`*`kubernetes_master_address`*`/api/v1/namespaces/`*`namespace_name`*`/services/`*`https:service_name:[port_name]`*`/proxy` - -URL 名称段支持的格式为: - -* `` - 使用 http 代理到默认或未命名的端口 -* `:` - 使用 http 代理到指定的端口名称或端口号 -* `https::` - 使用 https 代理到默认或未命名的端口(注意后面的冒号) -* `https::` - 使用 https 代理到指定的端口名称或端口号 - - -##### 示例 - -* 要访问 Elasticsearch 服务端点 `_search?q=user:kimchy`,你需要使用: - `http://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/_search?q=user:kimchy` -* 要访问 Elasticsearch 集群健康信息 `_cluster/health?pretty=true`,你需要使用: - `https://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/_cluster/health?pretty=true` - -```json - { - "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 - } -``` - - -### 使用 web 浏览器访问运行在集群上的服务 - -你可以在浏览器地址栏中输入 apiserver 代理 URL。但是: - -- Web 浏览器通常不能传递令牌,因此你可能需要使用基本(密码)身份验证。 - Apiserver 可以配置为接受基本身份验证,但你的集群可能未进行配置。 -- 某些 Web 应用程序可能无法运行,尤其是那些使用客户端 javascript - 以不知道代理路径前缀的方式构建 URL 的应用程序。