Skip to content

Commit

Permalink
Merge pull request #26159 from howieyuen/dual-stack
Browse files Browse the repository at this point in the history
[zh] resync content/zh/docs/tasks/network/validate-dual-stack.md
  • Loading branch information
k8s-ci-robot authored Jan 20, 2021
2 parents 01d8c0a + 70842f2 commit 55426e8
Showing 1 changed file with 110 additions and 24 deletions.
134 changes: 110 additions & 24 deletions content/zh/docs/tasks/network/validate-dual-stack.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: 验证 IPv4/IPv6 双协议栈
min-kubernetes-server-version: v1.20
content_type: task
---
<!--
Expand Down Expand Up @@ -150,42 +151,45 @@ a00:100::4 pod01
<!--
## Validate Services
Create the following Service without the `ipFamily` field set. When this field is not set, the Service gets an IP from the first configured range via `--service-cluster-ip-range` flag on the kube-controller-manager.
Create the following Service that does not explicitly define `.spec.ipFamilyPolicy`. Kubernetes will assign a cluster IP for the Service from the first configured `service-cluster-ip-range` and set the `.spec.ipFamilyPolicy` to `SingleStack`.
-->
## 验证服务

在不设置 `ipFamily` 字段的情况下创建以下服务
如果未设置此字段,则服务会通过 kube-controller-manager 上的
`--service-cluster-ip-range` 标志从第一个配置的范围中获取 IP
创建以下未显式定义 `.spec.ipFamilyPolicy` 的 Service
Kubernetes 将从首个配置的 `service-cluster-ip-range` 给 Service 分配集群 IP,
并将 `.spec.ipFamilyPolicy` 设置为 `SingleStack`

{{< codenew file="service/networking/dual-stack-default-svc.yaml" >}}

<!--
By viewing the YAML for the Service you can observe that the Service has the `ipFamily` field has set to reflect the address family of the first configured range set via `--service-cluster-ip-range` flag on kube-controller-manager.
<!--
Use `kubectl` to view the YAML for the Service.
-->
通过查看该服务的 YAML ,你可以观察到该服务的 `ipFamily` 字段已被设置。
其取值反映的是通过 kube-controller-manager 的 `--service-cluster-ip-range`
标志所设置的第一个地址范围的地址族。
使用 `kubectl` 查看 Service 的 YAML 定义。

```shell
kubectl get svc my-service -o yaml
```

<!--
The Service has `.spec.ipFamilyPolicy` set to `SingleStack` and `.spec.clusterIP` set to an IPv4 address from the first configured range set via `--service-cluster-ip-range` flag on kube-controller-manager.
-->
该 Service 通过在 kube-controller-manager 的 `--service-cluster-ip-range`
标志设置的第一个配置范围,将 `.spec.ipFamilyPolicy` 设置为 `SingleStack`
`.spec.clusterIP` 设置为 IPv4 地址。

```yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2019-09-03T20:45:13Z"
labels:
app: MyApp
name: my-service
namespace: default
resourceVersion: "485836"
selfLink: /api/v1/namespaces/default/services/my-service
uid: b6fa83ef-fe7e-47a3-96a1-ac212fa5b030
spec:
clusterIP: 10.0.29.179
ipFamily: IPv4
clusterIP: 10.0.217.164
clusterIPs:
- 10.0.217.164
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- port: 80
protocol: TCP
Expand All @@ -199,25 +203,107 @@ status:
```
<!--
Create the following Service with the `ipFamily` field set to `IPv6`.
Create the following Service that explicitly defines `IPv6` as the first array element in `.spec.ipFamilies`. Kubernetes will assign a cluster IP for the Service from the IPv6 range configured `service-cluster-ip-range` and set the `.spec.ipFamilyPolicy` to `SingleStack`.
-->
在 `ipFamily` 字段设置为 `IPv6` 的情况下创建一下服务。
创建以下显示定义 `.spec.ipFamilies` 数组中的第一个元素为 IPv6 的 Service。
Kubernetes 将 `service-cluster-ip-range` 配置的 IPv6 地址范围给 Service 分配集群 IP,
并将 `.spec.ipFamilyPolicy` 设置为 `SingleStack`。

{{< codenew file="service/networking/dual-stack-ipv6-svc.yaml" >}}

<!--
Validate that the Service gets a cluster IP address from the IPv6 address block. You may then validate access to the service via the IP and port.
<!--
Use `kubectl` to view the YAML for the Service.
-->
验证服务是否是 IPv6 地址块获取集群 IP 地址。
然后,你可以通过 IP 和端口验证对服务的访问。
使用 `kubectl` 查看 Service 的 YAML 定义。

```shell
kubectl get svc -l app=MyApp
kubectl get svc my-service -o yaml
```

<!--
The Service has `.spec.ipFamilyPolicy` set to `SingleStack` and `.spec.clusterIP` set to an IPv6 address from the IPv6 range set via `--service-cluster-ip-range` flag on kube-controller-manager.
-->
该 Service 通过在 kube-controller-manager 的 `--service-cluster-ip-range`
标志设置的 IPv6 地址范围,将 `.spec.ipFamilyPolicy` 设置为 `SingleStack`,
将 `.spec.clusterIP` 设置为 IPv6 地址。

```yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: MyApp
name: my-service
spec:
clusterIP: fd00::5118
clusterIPs:
- fd00::5118
ipFamilies:
- IPv6
ipFamilyPolicy: SingleStack
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: MyApp
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
```

<!--
Create the following Service that explicitly defines `PreferDualStack` in `.spec.ipFamilyPolicy`. Kubernetes will assign both IPv4 and IPv6 addresses (as this cluster has dual-stack enabled) and select the `.spec.ClusterIP` from the list of `.spec.ClusterIPs` based on the address family of the first element in the `.spec.ipFamilies` array.
-->
创建以下显式定义 `.spec.ipFamilyPolicy` 为 `PreferDualStack` 的 Service。
Kubernetes 将分配 IPv4 和 IPv6 地址(因为该集群启用了双栈),
并根据 `.spec.ipFamilies` 数组中第一个元素的地址族,
从 `.spec.ClusterIPs` 列表中选择 `.spec.ClusterIP`。

{{< codenew file="service/networking/dual-stack-preferred-svc.yaml" >}}

{{< note >}}
<!--
The `kubectl get svc` command will only show the primary IP in the `CLUSTER-IP` field.
-->
`kubectl get svc` 命令将仅在 `CLUSTER-IP` 字段中显示主 IP。

```shell
kubectl get svc -l app=MyApp
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-service ClusterIP fe80:20d::d06b <none> 80/TCP 9s
```
{{< /note >}}

<!--
Validate that the Service gets cluster IPs from the IPv4 and IPv6 address blocks using `kubectl describe`. You may then validate access to the service via the IPs and ports.
-->
使用 `kubectl describe` 验证服务是否从 IPv4 和 IPv6 地址块中获取了集群 IP。
然后你就可以通过 IP 和端口,验证对服务的访问。

```shell
kubectl describe svc -l app=MyApp
```

```
Name: my-service
Namespace: default
Labels: app=MyApp
Annotations: <none>
Selector: app=MyApp
Type: ClusterIP
IP Family Policy: PreferDualStack
IP Families: IPv4,IPv6
IP: 10.0.216.242
IPs: 10.0.216.242,fd00::af55
Port: <unset> 80/TCP
TargetPort: 9376/TCP
Endpoints: <none>
Session Affinity: None
Events: <none>
```
<!--
### Create a dual-stack load balanced Service
Expand Down

0 comments on commit 55426e8

Please sign in to comment.