From 2632a46eed1703e54b371311aa8049f2c2ed59ba Mon Sep 17 00:00:00 2001 From: windsonsea Date: Tue, 10 Oct 2023 16:35:49 +0800 Subject: [PATCH] [zh] Sync connect-applications-service.md --- .../services/connect-applications-service.md | 100 ++++++++++++++++-- 1 file changed, 89 insertions(+), 11 deletions(-) diff --git a/content/zh-cn/docs/tutorials/services/connect-applications-service.md b/content/zh-cn/docs/tutorials/services/connect-applications-service.md index 1be3682f11cc0..503972197f13e 100644 --- a/content/zh-cn/docs/tutorials/services/connect-applications-service.md +++ b/content/zh-cn/docs/tutorials/services/connect-applications-service.md @@ -55,7 +55,7 @@ Create an nginx Pod, and note that it has a container port specification: 我们在之前的示例中已经做过,然而让我们以网络连接的视角再重做一遍。 创建一个 Nginx Pod,注意其中包含一个容器端口的规约: -{{< code file="service/networking/run-my-nginx.yaml" >}} +{{% code_sample file="service/networking/run-my-nginx.yaml" %}} 你应该能够通过 ssh 登录到集群中的任何一个节点上,并使用诸如 `curl` 之类的工具向这两个 IP 地址发出查询请求。 需要注意的是,容器 **不会** 使用该节点上的 80 端口,也不会使用任何特定的 NAT 规则去路由流量到 Pod 上。 -这意味着可以在同一个节点上运行多个 Nginx Pod,使用相同的 `containerPort`,并且可以从集群中任何其他的 -Pod 或节点上使用 IP 的方式访问到它们。 + +这意味着你可以使用相同的 `containerPort` 在同一个节点上运行多个 Nginx Pod, +并且可以从集群中任何其他的 Pod 或节点上使用为 Pod 分配的 IP 地址访问到它们。 如果你想的话,你依然可以将宿主节点的某个端口的流量转发到 Pod 中,但是出于网络模型的原因,你不必这么做。 如果对此好奇,请参考 [Kubernetes 网络模型](/zh-cn/docs/concepts/cluster-administration/networking/#the-kubernetes-network-model)。 @@ -111,7 +113,7 @@ Pod 或节点上使用 IP 的方式访问到它们。 So we have pods running nginx in a flat, cluster wide, address space. In theory, you could talk to these pods directly, but what happens when a node dies? The pods -die with it, and the Deployment will create new ones, with different IPs. This is +die with it, and the ReplicaSet inside the Deployment will create new ones, with different IPs. This is the problem a Service solves. A Kubernetes Service is an abstraction which defines a logical set of Pods running @@ -127,7 +129,7 @@ You can create a Service for your 2 nginx replicas with `kubectl expose`: 我们有一组在一个扁平的、集群范围的地址空间中运行 Nginx 服务的 Pod。 理论上,你可以直接连接到这些 Pod,但如果某个节点死掉了会发生什么呢? -Pod 会终止,Deployment 将创建新的 Pod,且使用不同的 IP。这正是 Service 要解决的问题。 +Pod 会终止,Deployment 内的 ReplicaSet 将创建新的 Pod,且使用不同的 IP。这正是 Service 要解决的问题。 Kubernetes Service 是集群中提供相同功能的一组 Pod 的抽象表达。 当每个 Service 创建时,会被分配一个唯一的 IP 地址(也称为 clusterIP)。 @@ -140,6 +142,7 @@ Service 中的某些 Pod 上。 ```shell kubectl expose deployment/my-nginx ``` + ``` service/my-nginx exposed ``` @@ -149,7 +152,7 @@ This is equivalent to `kubectl apply -f` the following yaml: --> 这等价于使用 `kubectl create -f` 命令及如下的 yaml 文件创建: -{{< code file="service/networking/nginx-svc.yaml" >}} +{{% code_sample file="service/networking/nginx-svc.yaml" %}} +你可以在 +[Kubernetes examples 项目代码仓库](https://github.com/kubernetes/examples/tree/bc9ca4ca32bb28762ef216386934bef20f1f9930/staging/https-nginx/)中找到 +`default.conf` 示例。 + ``` configmap/nginxconfigmap created ``` + ```shell kubectl get configmaps ``` + ``` NAME DATA AGE nginxconfigmap 1 114s ``` + +你可以使用以下命令来查看 `nginxconfigmap` ConfigMap 的细节: + +```shell +kubectl describe configmap nginxconfigmap +``` + + +输出类似于: + +```console +Name: nginxconfigmap +Namespace: default +Labels: +Annotations: + +Data +==== +default.conf: +---- +server { + listen 80 default_server; + listen [::]:80 default_server ipv6only=on; + + listen 443 ssl; + + root /usr/share/nginx/html; + index index.html; + + server_name localhost; + ssl_certificate /etc/nginx/ssl/tls.crt; + ssl_certificate_key /etc/nginx/ssl/tls.key; + + location / { + try_files $uri $uri/ =404; + } +} + +BinaryData +==== + +Events: +``` + @@ -493,6 +566,7 @@ Now create the secrets using the file: kubectl apply -f nginxsecrets.yaml kubectl get secrets ``` + ``` NAME TYPE DATA AGE nginxsecret kubernetes.io/tls 2 1m @@ -504,7 +578,7 @@ in the secret, and the Service, to expose both ports (80 and 443): --> 现在修改 Nginx 副本以启动一个使用 Secret 中的证书的 HTTPS 服务器以及相应的用于暴露其端口(80 和 443)的 Service: -{{< code file="service/networking/nginx-secure-app.yaml" >}} +{{% code_sample file="service/networking/nginx-secure-app.yaml" %}}