Change:
This is a Bug Report Chinese page contentzhdocstutorialsstateless-applicationexpose-external-ip- outdated <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: Chinese page contentzhdocstutorialsstateless-applicationexpose-external-ip- is different with English version page. Proposed Solution: Update Chinese page Page to Update: contentzhdocstutorialsstateless-applicationexpose-external-ip- <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--<!--Additional Information:--
/language zh
Issues go stale after 90d of inactivity. Mark the issue as fresh with . Stale issues rot after an additional 30d of inactivity and eventually close. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle stale
Stale issues rot after 30d of inactivity. Mark the issue as fresh with . Rotten issues close after an additional 30d of inactivity. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle rotten
/remove-lifecycle rotten
/assign

Discussion:
content_type: tutorial weight: 10 --- <!-- <del> --- </del> title: Exposing an External IP Address to Access an Application in a Cluster content_type: tutorial weight: 10 <del> --- </del> --> <!-- overview -->

--> 此页面显示如何创建公开外部 IP 地址的 Kubernetes 服务对象。 ## {{% heading "prerequisites" %}} <!-- * Install [kubectl](/docs/tasks/tools/install-kubectl/).

* 安装 [kubectl](/zh/docs/tasks/tools/install-kubectl/). <del> * 使用 Google Kubernetes Engine 或 Amazon Web Services 等云供应商创建 Kubernetes 群集。 本教程创建了一个[外部负载均衡器](/zh/docs/tasks/access-application-cluster/create-external-load-balancer/)，需要云供应商。 </del> <ins> * 使用 Google Kubernetes Engine 或 Amazon Web Services 等云供应商创建 Kubernetes 集群。 本教程创建了一个[外部负载均衡器](/zh/docs/tasks/access-application-cluster/create-external-load-balancer/)， 需要云供应商。 </ins> * 配置 `kubectl` 与 Kubernetes API 服务器通信。有关说明，请参阅云供应商文档。 ## {{% heading "objectives" %}} <!-- * Run five instances of a Hello World application. * Create a Service object that exposes an external IP address. * Use the Service object to access the running application. --> * 运行 Hello World 应用程序的五个实例。 * 创建一个公开外部 IP 地址的 Service 对象。 * 使用 Service 对象访问正在运行的应用程序。 <!-- lessoncontent --> <!--

--> 1. 在集群中运行 Hello World 应用程序： <del> {{< codenew file="service/load-balancer-example.yaml" >}} ```shell kubectl apply -f https://k8s.io/examples/service/load-balancer-example.yaml ``` <!-- The preceding command creates a [Deployment](/docs/concepts/workloads/controllers/deployment/) object and an associated [ReplicaSet](/docs/concepts/workloads/controllers/replicaset/) object. The ReplicaSet has five [Pods](/docs/concepts/workloads/pods/pod/), each of which runs the Hello World application. --> 前面的命令创建一个 [Deployment](/zh/docs/concepts/workloads/controllers/deployment/) 对象和一个关联的 [ReplicaSet](/zh/docs/concepts/workloads/controllers/replicaset/)对象。 ReplicaSet 有五个 [Pod](/zh/docs/concepts/workloads/pods/pod/)，每个都运行 Hello World 应用程序。 </del> <ins> {{< codenew file="service/load-balancer-example.yaml" >}} ```shell kubectl apply -f https://k8s.io/examples/service/load-balancer-example.yaml ``` <!-- The preceding command creates a {{< glossary_tooltip text="Deployment" term_id="deployment" >}} and an associated {{< glossary_tooltip term_id="replica-set" text="ReplicaSet" >}}. The ReplicaSet has five {{< glossary_tooltip text="Pods" term_id="pod" >}} each of which runs the Hello World application. --> 前面的命令创建一个 {{< glossary_tooltip text="Deployment" term_id="deployment" >}} 对象和一个关联的 {{< glossary_tooltip term_id="replica-set" text="ReplicaSet" >}} 对象。 ReplicaSet 有五个 {{< glossary_tooltip text="Pods" term_id="pod" >}}， 每个都运行 Hello World 应用程序。 </ins> <!-- 1. Display information about the Deployment: --> 2. 显示有关 Deployment 的信息： <del> kubectl get deployments hello-world kubectl describe deployments hello-world </del> <ins> ```shell kubectl get deployments hello-world kubectl describe deployments hello-world ``` </ins> <!-- 1. Display information about your ReplicaSet objects: --> 3. 显示有关 ReplicaSet 对象的信息： <del> kubectl get replicasets kubectl describe replicasets </del> <ins> ```shell kubectl get replicasets kubectl describe replicasets ``` </ins> <!-- 1. Create a Service object that exposes the deployment: --> <del> 4. 创建公开 deployment 的 Service 对象： </del> <ins> 4. 创建公开 Deployment 的 Service 对象： </ins> <del> kubectl expose deployment hello-world --type=LoadBalancer --name=my-service </del> <ins> ```shell kubectl expose deployment hello-world --type=LoadBalancer --name=my-service ``` </ins> <!-- 1. Display information about the Service: --> 5. 显示有关 Service 的信息： <del> kubectl get services my-service </del> <ins> ```shell kubectl get services my-service ``` </ins> <del> <!-- </del> <ins> <!-- </ins> The output is similar to this: <del> --> </del> <ins> --> </ins> 输出类似于： <del> NAME         TYPE        CLUSTER-IP     EXTERNAL-IP      PORT(S)    AGE my-service   ClusterIP   10.3.245.137   104.198.205.71   8080/TCP   54s <!-- {{< note >}} The `type=LoadBalancer` service is backed by external cloud providers, which is not covered in this example, please refer to [this page](/docs/concepts/services-networking/service/#loadbalancer) for the details. {{< /note >}} --> 注意：`type=LoadBalancer` 服务由外部云服务提供商提供支持，本例中不包含此部分，详细信息请参考[此页](/docs/concepts/services-networking/service/#loadbalancer) <!-- {{< note >}} If the external IP address is shown as <pending>, wait for a minute and enter the same command again. {{< /note >}} --> 注意：如果外部 IP 地址显示为 <pending>，请等待一分钟再次输入相同的命令。 </del> <ins> ``` NAME         TYPE        CLUSTER-IP     EXTERNAL-IP      PORT(S)    AGE my-service   ClusterIP   10.3.245.137   104.198.205.71   8080/TCP   54s ``` <!-- {{< note >}} The `type=LoadBalancer` service is backed by external cloud providers, which is not covered in this example, please refer to [this page](/docs/concepts/services-networking/service/#loadbalancer) for the details. {{< /note >}} --> 提示：`type=LoadBalancer` 服务由外部云服务提供商提供支持，本例中不包含此部分， 详细信息请参考[此页](/docs/concepts/services-networking/service/#loadbalancer) <!-- {{< note >}} If the external IP address is shown as <pending>, wait for a minute and enter the same command again. {{< /note >}} --> 提示：如果外部 IP 地址显示为 <pending>，请等待一分钟再次输入相同的命令。 </ins> <!-- 1. Display detailed information about the Service: --> 6. 显示有关 Service 的详细信息： <del> kubectl describe services my-service </del> <ins> ```shell kubectl describe services my-service ``` </ins> <del> <!-- </del> <ins> <!-- </ins> The output is similar to this: <del> --> </del> <ins> --> </ins> 输出类似于： <del> Name:           my-service Namespace:      default Labels:         run=load-balancer-example Annotations:    <none> Selector:       run=load-balancer-example Type:           LoadBalancer IP:             10.3.245.137 LoadBalancer Ingress:   104.198.205.71 Port:           <unset> 8080/TCP NodePort:       <unset> 32377/TCP Endpoints:      10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more... Session Affinity:   None Events:         <none> <!-- </del> <ins> ``` Name:           my-service Namespace:      default Labels:         run=load-balancer-example Annotations:    <none> Selector:       run=load-balancer-example Type:           LoadBalancer IP:             10.3.245.137 LoadBalancer Ingress:   104.198.205.71 Port:           <unset> 8080/TCP NodePort:       <unset> 32377/TCP Endpoints:      10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more... Session Affinity:   None Events:         <none> ``` <!-- </ins> Make a note of the external IP address (`LoadBalancer Ingress`) exposed by your service. In this example, the external IP address is 104.198.205.71. Also note the value of `Port` and `NodePort`. In this example, the `Port` is 8080 and the `NodePort` is 32377. <del> --> </del> <ins> --> </ins> 记下服务公开的外部 IP 地址（`LoadBalancer Ingress`)。 在本例中，外部 IP 地址是 104.198.205.71。还要注意 `Port` 和 `NodePort` 的值。 在本例中，`Port` 是 8080，`NodePort` 是32377。 <!-- 1. In the preceding output, you can see that the service has several endpoints: 10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more. These are internal

这些都是正在运行 Hello World 应用程序的 pod 的内部地址。 要验证这些是 pod 地址，请输入以下命令： <del> kubectl get pods --output=wide </del> <ins> ```shell kubectl get pods --output=wide ``` </ins> <del> <!-- </del> <ins> <!-- </ins> The output is similar to this: <del> --> </del> <ins> --> </ins> 输出类似于： <del> NAME                         ...  IP         NODE hello-world-2895499144-1jaz9 ...  10.0.1.6   gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-2e5uh ...  10.0.1.8   gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-9m4h1 ...  10.0.0.6   gke-cluster-1-default-pool-e0b8d269-5v7a hello-world-2895499144-o4z13 ...  10.0.1.7   gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-segjf ...  10.0.2.5   gke-cluster-1-default-pool-e0b8d269-cpuc </del> <ins> ``` NAME                         ...  IP         NODE hello-world-2895499144-1jaz9 ...  10.0.1.6   gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-2e5uh ...  10.0.1.8   gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-9m4h1 ...  10.0.0.6   gke-cluster-1-default-pool-e0b8d269-5v7a hello-world-2895499144-o4z13 ...  10.0.1.7   gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-segjf ...  10.0.2.5   gke-cluster-1-default-pool-e0b8d269-cpuc ``` </ins> <!-- 1. Use the external IP address (`LoadBalancer Ingress`) to access the Hello World application: --> 8. 使用外部 IP 地址（`LoadBalancer Ingress`）访问 Hello World 应用程序: <del> curl http://<external-ip>:<port> </del> <ins> ```shell curl http://<external-ip>:<port> ``` </ins> <del> <!-- </del> <ins> <!-- </ins> where `<external-ip>` is the external IP address (`LoadBalancer Ingress`) of your Service, and `<port>` is the value of `Port` in your Service description. If you are using minikube, typing `minikube service my-service` will automatically open the Hello World application in a browser. <del> --> </del> <ins> --> </ins> 其中 `<external-ip>` 是您的服务的外部 IP 地址（`LoadBalancer Ingress`）， `<port>` 是您的服务描述中的 `port` 的值。 如果您正在使用 minikube，输入 `minikube service my-service` 将在浏览器中自动打开 Hello World 应用程序。 <del> <!-- </del> <ins> <!-- </ins> The response to a successful request is a hello message: <del> --> </del> <ins> --> </ins> 成功请求的响应是一条问候消息： <del> Hello Kubernetes! </del> <ins> ``` Hello Kubernetes! ``` </ins> ## {{% heading "cleanup" %}} <!-- To delete the Service, enter this command: --> 要删除服务，请输入以下命令： <del> kubectl delete services my-service </del> <ins> ```shell kubectl delete services my-service ``` </ins> <!-- To delete the Deployment, the ReplicaSet, and the Pods that are running

--> 要删除正在运行 Hello World 应用程序的 Deployment，ReplicaSet 和 Pod，请输入以下命令： <del> kubectl delete deployment hello-world </del> <ins> ```shell kubectl delete deployment hello-world ``` </ins> ## {{% heading "whatsnext" %}} <!-- Learn more about [connecting applications with services](/docs/concepts/services-networking/connect-applications-service/). --> <del> 了解更多关于[将应用程序与服务连接](/zh/docs/concepts/services-networking/connect-applications-service/)。 </del> <ins> 进一步了解[将应用程序与服务连接](/zh/docs/concepts/services-networking/connect-applications-service/)。 </ins>