From 21b1e83147332372935e606adba9c6bc5bec5cdd Mon Sep 17 00:00:00 2001
From: Joe Marty
Date: Thu, 4 Mar 2021 09:54:52 -0600
Subject: [PATCH 001/129] Clarify sources of voluntary disruptions
See issue #22391
---
content/en/docs/concepts/workloads/pods/disruptions.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/content/en/docs/concepts/workloads/pods/disruptions.md b/content/en/docs/concepts/workloads/pods/disruptions.md
index d0a8bbf5a9..04c35e0322 100644
--- a/content/en/docs/concepts/workloads/pods/disruptions.md
+++ b/content/en/docs/concepts/workloads/pods/disruptions.md
@@ -80,12 +80,14 @@ Here are some ways to mitigate involuntary disruptions:
[multi-zone cluster](/docs/setup/multiple-zones).)
The frequency of voluntary disruptions varies. On a basic Kubernetes cluster, there are
-no voluntary disruptions at all. However, your cluster administrator or hosting provider
+no automated voluntary disruptions (only user-triggered ones). However, your cluster administrator or hosting provider
may run some additional services which cause voluntary disruptions. For example,
rolling out node software updates can cause voluntary disruptions. Also, some implementations
of cluster (node) autoscaling may cause voluntary disruptions to defragment and compact nodes.
Your cluster administrator or hosting provider should have documented what level of voluntary
-disruptions, if any, to expect.
+disruptions, if any, to expect. Certain configuration options, such as
+[using PriorityClasses](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/)
+in your pod spec can also cause voluntary (and involuntary) disruptions.
## Pod disruption budgets
From 2edc0b8e5963862917d3543e48c3aaf36eb81048 Mon Sep 17 00:00:00 2001
From: k-wall
Date: Mon, 8 Mar 2021 19:45:15 +0000
Subject: [PATCH 002/129] Document behaviour when optionally referenced
configmap appears after the pod starts
---
.../configure-pod-container/configure-pod-configmap.md | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md b/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md
index 40987152e8..6432b10c93 100644
--- a/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md
+++ b/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md
@@ -624,9 +624,15 @@ Like before, all previous files in the `/etc/config/` directory will be deleted.
You can project keys to specific paths and specific permissions on a per-file
basis. The [Secrets](/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod) user guide explains the syntax.
+### Optional References
+
+A ConfigMap reference may be marked "optional". If the ConfigMap is non-existent, the mounted volume will be empty. If the ConfigMap exists, but the referenced key is non-existent the path will be absent beneath the mount point.
+
### Mounted ConfigMaps are updated automatically
-When a ConfigMap already being consumed in a volume is updated, projected keys are eventually updated as well. Kubelet is checking whether the mounted ConfigMap is fresh on every periodic sync. However, it is using its local ttl-based cache for getting the current value of the ConfigMap. As a result, the total delay from the moment when the ConfigMap is updated to the moment when new keys are projected to the pod can be as long as kubelet sync period (1 minute by default) + ttl of ConfigMaps cache (1 minute by default) in kubelet. You can trigger an immediate refresh by updating one of the pod's annotations.
+When a mounted ConfigMap is updated, the projected content is eventually updated too. This applies in the case where an optionally referenced ConfigMap comes into existence after a pod has started.
+
+Kubelet is checking whether the mounted ConfigMap is fresh on every periodic sync. However, it is using its local ttl-based cache for getting the current value of the ConfigMap. As a result, the total delay from the moment when the ConfigMap is updated to the moment when new keys are projected to the pod can be as long as kubelet sync period (1 minute by default) + ttl of ConfigMaps cache (1 minute by default) in kubelet. You can trigger an immediate refresh by updating one of the pod's annotations.
{{< note >}}
A container using a ConfigMap as a [subPath](/docs/concepts/storage/volumes/#using-subpath) volume will not receive ConfigMap updates.
From 5ee23f2c7c19e7d7bb5be54cf11093fbf0093cc1 Mon Sep 17 00:00:00 2001
From: huyuqing
Date: Mon, 29 Mar 2021 16:27:10 +0800
Subject: [PATCH 003/129] Fix line separation in concepts/architecture/nodes
---
content/ru/docs/concepts/architecture/nodes.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/content/ru/docs/concepts/architecture/nodes.md b/content/ru/docs/concepts/architecture/nodes.md
index 7c10f75e1b..075c3140f5 100644
--- a/content/ru/docs/concepts/architecture/nodes.md
+++ b/content/ru/docs/concepts/architecture/nodes.md
@@ -235,8 +235,9 @@ ConditionUnknown, когда узел становится недоступны
например, из-за того, что узел упал), и затем позже выселяет все поды с узла
(используя мягкое (graceful) завершение) если узел продолжает быть недоступным.
(По умолчанию таймауты составляют 40 секунд, чтобы начать сообщать `ConditionUnknown`,
-и 5 минут после, чтобы начать выселять поды.) Контроллер узла проверяет состояние каждого узла
-каждые `--node-monitor-period` секунд.
+и 5 минут после, чтобы начать выселять поды.)
+
+Контроллер узла проверяет состояние каждого узла каждые `--node-monitor-period` секунд.
#### Сердцебиения
@@ -274,8 +275,9 @@ Kubelet отвечает за создание и обновление `NodeStat
если кластер небольшой (т.е. количество узлов меньше или равно
`--large-cluster-size-threshold` - по умолчанию, 50), то выселения прекращаются,
в противном случае скорость выселения снижается до
-`--secondary-node-eviction-rate` (по умолчанию, 0.01) в секунду. Причина, по которой
-эти политики реализуются для каждой зоны доступности, заключается в том,
+`--secondary-node-eviction-rate` (по умолчанию, 0.01) в секунду.
+
+Причина, по которой эти политики реализуются для каждой зоны доступности, заключается в том,
что одна зона доступности может стать отделенной от мастера, в то время как другие
остаются подключенными. Если ваш кластер не охватывает несколько зон доступности
облачного провайдера, то существует только одна зона доступности (весь кластер).
From a8adf49a78d31674285f5812ae75b0b58b05324d Mon Sep 17 00:00:00 2001
From: Zoltan Vajda
Date: Tue, 30 Mar 2021 14:24:34 +0200
Subject: [PATCH 004/129] Fix typo in worker.py example script
---
content/en/examples/application/job/redis/worker.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/en/examples/application/job/redis/worker.py b/content/en/examples/application/job/redis/worker.py
index b8abbee917..c3523a4e21 100644
--- a/content/en/examples/application/job/redis/worker.py
+++ b/content/en/examples/application/job/redis/worker.py
@@ -8,7 +8,7 @@ host="redis"
# import os
# host = os.getenv("REDIS_SERVICE_HOST")
-q = rediswq.RedisWQ(name="job2", host="redis")
+q = rediswq.RedisWQ(name="job2", host=host)
print("Worker with sessionID: " + q.sessionID())
print("Initial queue state: empty=" + str(q.empty()))
while not q.empty():
From bc9a3a215ed536428dfd03220b2b4245ad342117 Mon Sep 17 00:00:00 2001
From: wwgfhf <51694849+wwgfhf@users.noreply.github.com>
Date: Wed, 31 Mar 2021 19:27:20 +0800
Subject: [PATCH 005/129] Update kubespray.md
---
content/zh/docs/setup/production-environment/tools/kubespray.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/zh/docs/setup/production-environment/tools/kubespray.md b/content/zh/docs/setup/production-environment/tools/kubespray.md
index eabd14c7f5..3fcc0a6ef7 100644
--- a/content/zh/docs/setup/production-environment/tools/kubespray.md
+++ b/content/zh/docs/setup/production-environment/tools/kubespray.md
@@ -39,7 +39,7 @@ Kubespray 是一个由 [Ansible](https://docs.ansible.com/) playbooks、[清单
* 支持大多数流行的 Linux 发行版
* Ubuntu 16.04、18.04、20.04
* CentOS / RHEL / Oracle Linux 7、8
- * Debian Buster,Jessie,Stretch,Wheezy
+ * Debian Buster、Jessie、Stretch、Wheezy
* Fedora 31、32
* Fedora CoreOS
* openSUSE Leap 15
From c50b15e44097bbd68c6dd158ad7e4a2caea5cbaf Mon Sep 17 00:00:00 2001
From: wwgfhf <51694849+wwgfhf@users.noreply.github.com>
Date: Wed, 31 Mar 2021 19:36:25 +0800
Subject: [PATCH 006/129] Update container-runtimes.md
---
.../zh/docs/setup/production-environment/container-runtimes.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/zh/docs/setup/production-environment/container-runtimes.md b/content/zh/docs/setup/production-environment/container-runtimes.md
index 99739e8b10..f93b9b4136 100644
--- a/content/zh/docs/setup/production-environment/container-runtimes.md
+++ b/content/zh/docs/setup/production-environment/container-runtimes.md
@@ -136,7 +136,7 @@ sudo sysctl --system
-->
本节包含使用 containerd 作为 CRI 运行时的必要步骤。
-使用以下命令在系统上安装容器:
+使用以下命令在系统上安装 Containerd:
安装和配置的先决条件:
From 72d48798b00e3547e61a50607e3370c187748b8c Mon Sep 17 00:00:00 2001
From: wwgfhf <51694849+wwgfhf@users.noreply.github.com>
Date: Wed, 31 Mar 2021 19:41:33 +0800
Subject: [PATCH 007/129] Update high-availability.md
---
.../production-environment/tools/kubeadm/high-availability.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/zh/docs/setup/production-environment/tools/kubeadm/high-availability.md b/content/zh/docs/setup/production-environment/tools/kubeadm/high-availability.md
index b0247ec776..d03c1e7e76 100644
--- a/content/zh/docs/setup/production-environment/tools/kubeadm/high-availability.md
+++ b/content/zh/docs/setup/production-environment/tools/kubeadm/high-availability.md
@@ -30,7 +30,7 @@ control plane nodes and etcd members are separated.
-->
本文讲述了使用 kubeadm 设置一个高可用的 Kubernetes 集群的两种不同方式:
-- 使用堆控制平面节点。这种方法所需基础设施较少。etcd 成员和控制平面节点位于同一位置。
+- 使用具有堆叠的控制平面节点。这种方法所需基础设施较少。etcd 成员和控制平面节点位于同一位置。
- 使用外部集群。这种方法所需基础设施较多。控制平面的节点和 etcd 成员是分开的。
+拒绝所有的请求。由于它没有实际意义,已废弃。
+
### AlwaysPullImages {#alwayspullimages}
-拒绝所有的请求。由于没有实际意义,已废弃。
-
### CertificateApproval
+该准入控制器监测没有请求任何特定 Ingress 类的 `Ingress` 对象的创建,并自动向其添加默认 Ingress 类。
+这样,没有任何特殊 Ingress 类需求的用户根本不需要关心它们,它们将获得默认 Ingress 类。
+
+
+当未配置默认 Ingress 类时,此准入控制器不执行任何操作。如果将多个 Ingress 类标记为默认 Ingress 类,
+它将拒绝任何创建 `Ingress` 的操作,并显示错误。
+要修复此错误,管理员必须重新检查其 `IngressClass` 对象,并仅将其中一个标记为默认(通过注解
+"ingressclass.kubernetes.io/is-default-class")。
+此准入控制器会忽略所有 `Ingress` 更新操作,仅响应创建操作。
+
+
+关于 Ingress 类以及如何将 Ingress 类标记为默认的更多信息,请参见
+[ingress](/zh/docs/concepts/services-networking/ingress/)。
+
### DefaultStorageClass {#defaultstorageclass}
-该准入控制器为 Pod 设置默认的容忍度,在 5 分钟内容忍 `notready:NoExecute` 和
+该准入控制器基于 k8s-apiserver 输入参数 `default-not-ready-toleration-seconds` 和
+`default-unreachable-toleration-seconds` 为 Pod 设置默认的容忍度,以容忍 `notready:NoExecute` 和
`unreachable:NoExecute` 污点。
(如果 Pod 尚未容忍 `node.kubernetes.io/not-ready:NoExecute` 和
`node.kubernetes.io/unreachable:NoExecute` 污点的话)
+`default-not-ready-toleration-seconds` 和 `default-unreachable-toleration-seconds` 的默认值是 5 分钟。
-### DenyExecOnPrivileged {#denyexeconprivileged}
-
-{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
-
-
-如果一个 pod 拥有一个特权容器,该准入控制器将拦截所有在该 pod 中执行 exec 命令的请求。
-
-
-此功能已合并至 [DenyEscalatingExec](#denyescalatingexec)。
-而 DenyExecOnPrivileged 准入插件已被废弃,并将在 v1.18 被移除。
-
-
-建议使用基于策略的准入插件(例如 [PodSecurityPolicy](#podsecuritypolicy) 和自定义准入插件),
-该插件可以针对特定用户或名字空间,还可以防止创建权限过高的 Pod。
-
-### DenyEscalatingExec {#denyescalatingexec}
+### DenyEscalatingExec {#denyescalatingexec}
{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
@@ -336,17 +346,64 @@ attach 命令。这包括在特权模式运行的 Pod,可以访问主机 IPC
和访问主机 PID 名字空间的 Pod 。
-DenyExecOnPrivileged 准入插件已被废弃,并将在 v1.18 被移除。
+DenyExecOnPrivileged 准入插件已被废弃。
建议使用基于策略的准入插件(例如 [PodSecurityPolicy](#podsecuritypolicy) 和自定义准入插件),
该插件可以针对特定用户或名字空间,还可以防止创建权限过高的 Pod。
+### DenyExecOnPrivileged {#denyexeconprivileged}
+
+{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
+
+
+如果一个 pod 拥有一个特权容器,该准入控制器将拦截所有在该 pod 中执行 exec 命令的请求。
+
+
+此功能已合并至 [DenyEscalatingExec](#denyescalatingexec)。
+而 DenyExecOnPrivileged 准入插件已被废弃。
+
+
+建议使用基于策略的准入插件(例如 [PodSecurityPolicy](#podsecuritypolicy) 和自定义准入插件),
+该插件可以针对特定用户或名字空间,还可以防止创建权限过高的 Pod。
+
+### DenyServiceExternalIPs
+
+
+该准入控制器拒绝 `Service` 字段 `externalIPs` 的所有新规使用。 此功能非常强大(允许网络流量拦截),
+并且无法很好地受策略控制。 启用后,群集用户将无法创建使用 `externalIPs` 的新服务,也无法在现有
+`Service` 对象上向 `externalIPs` 添加新值。 `externalIPs` 的现有使用不受影响,用户可以从现有
+`Service` 对象上的 `externalIPs` 中删除值。
+
+
+大多数用户根本不需要此功能,集群管理员应考虑将其禁用。
+确实需要使用此功能的集群应考虑使用一些自定义策略来管理其的使用。
+
### EventRateLimit {#eventratelimit}
{{< feature-state for_k8s_version="v1.13" state="alpha" >}}
@@ -437,7 +494,7 @@ for more details.
如果你禁用了 MutatingAdmissionWebhook,那么还必须使用 `--runtime-config` 标志禁止
-`admissionregistration.k8s.io/v1beta1` 组/版本中的 `MutatingWebhookConfiguration`
+`admissionregistration.k8s.io/v1` 组/版本中的 `MutatingWebhookConfiguration`
对象(版本 >=1.9 时,这两个对象都是默认启用的)。
+该准入控制器检查传入的 `PersistentVolumeClaim` 调整大小请求,对其执行额外的验证操作。
+
+{{< note >}}
+
+对调整卷大小的支持是一种 Alpha 特性。管理员必须将特性门控 `ExpandPersistentVolumes`
+设置为 `true` 才能启用调整大小。
+{{< /note >}}
+
+
+启用 `ExpandPersistentVolumes` 特性门控之后,建议将 `PersistentVolumeClaimResize`
+准入控制器也启用。除非 PVC 的 `StorageClass` 明确地将 `allowVolumeExpansion` 设置为
+`true` 来显式启用调整大小。否则,默认情况下该准入控制器会阻止所有对 PVC 大小的调整。
+
+例如:由以下 `StorageClass` 创建的所有 `PersistentVolumeClaim` 都支持卷容量扩充:
+
+```yaml
+apiVersion: storage.k8s.io/v1
+kind: StorageClass
+metadata:
+ name: gluster-vol-default
+provisioner: kubernetes.io/glusterfs
+parameters:
+ resturl: "http://192.168.10.100:8080"
+ restuser: ""
+ secretNamespace: ""
+ secretName: ""
+allowVolumeExpansion: true
+```
+
+
+关于持久化卷申领的更多信息,请参见
+[PersistentVolumeClaims](/zh/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)。
+
### PersistentVolumeLabel {#persistentvolumelabel}
{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
@@ -959,10 +1060,12 @@ PersistentVolumeLabel 已被废弃,标记持久卷已由
### PodNodeSelector {#podnodeselector}
+{{< feature-state for_k8s_version="v1.5" state="alpha" >}}
+
-该准入控制器通过读取名字空间注解和全局配置,来为名字空间中可以可以使用的节点选择器
+该准入控制器通过读取名字空间注解和全局配置,来为名字空间中可以使用的节点选择器
设置默认值并实施限制。
1. 如果 `Namespace` 的注解带有键 `scheduler.alpha.kubernetes.io/node-selector`,
@@ -1056,7 +1159,7 @@ Conflicts result in rejection.
2. 如果名字空间缺少此类注解,则使用 `PodNodeSelector` 插件配置文件中定义的
`clusterDefaultNodeSelector` 作为节点选择算符。
3. 评估 Pod 节点选择算符和名字空间节点选择算符是否存在冲突。存在冲突将导致拒绝。
-4. 评估 pod 节点选择算符和名字空间的白名单定义的插件配置文件是否存在冲突。
+4. 评估 Pod 节点选择算符和特定于名字空间的被允许的选择算符所定义的插件配置文件是否存在冲突。
存在冲突将导致拒绝。
{{< note >}}
@@ -1068,55 +1171,6 @@ PodNodeSelector 允许 Pod 强制在特定标签的节点上运行。
另请参阅 PodTolerationRestriction 准入插件,该插件可防止 Pod 在特定污点的节点上运行。
{{< /note >}}
-### PersistentVolumeClaimResize {#persistentvolumeclaimresize}
-
-
-该准入控制器检查传入的 `PersistentVolumeClaim` 调整大小请求,对其执行额外的验证操作。
-
-{{< note >}}
-
-对调整卷大小的支持是一种 Alpha 特性。管理员必须将特性门控 `ExpandPersistentVolumes`
-设置为 `true` 才能启用调整大小。
-{{< /note >}}
-
-
-启用 `ExpandPersistentVolumes` 特性门控之后,建议将 `PersistentVolumeClaimResize`
-准入控制器也启用。除非 PVC 的 `StorageClass` 明确地将 `allowVolumeExpansion` 设置为
-`true` 来显式启用调整大小。否则,默认情况下该准入控制器会阻止所有对 PVC 大小的调整。
-
-例如:由以下 `StorageClass` 创建的所有 `PersistentVolumeClaim` 都支持卷容量扩充:
-
-```yaml
-apiVersion: storage.k8s.io/v1
-kind: StorageClass
-metadata:
- name: gluster-vol-default
-provisioner: kubernetes.io/glusterfs
-parameters:
- resturl: "http://192.168.10.100:8080"
- restuser: ""
- secretNamespace: ""
- secretName: ""
-allowVolumeExpansion: true
-```
-
-
-关于持久化卷申领的更多信息,请参见
-[PersistentVolumeClaims](/zh/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)。
-
### PodSecurityPolicy {#podsecuritypolicy}
`StorageObjectInUseProtection` 插件将 `kubernetes.io/pvc-protection` 或
`kubernetes.io/pv-protection` finalizers 添加到新创建的持久化卷声明(PVC)
@@ -1302,8 +1363,6 @@ This admission controller {{< glossary_tooltip text="taints" term_id="taint" >}}
### ValidatingAdmissionWebhook {#validatingadmissionwebhook}
-{{< feature-state for_k8s_version="v1.13" state="beta" >}}
-
如果你禁用了 ValidatingAdmissionWebhook,还必须通过 `--runtime-config` 标志来禁用
-`admissionregistration.k8s.io/v1beta1` 组/版本中的 `ValidatingWebhookConfiguration`
+`admissionregistration.k8s.io/v1` 组/版本中的 `ValidatingWebhookConfiguration`
对象(默认情况下在 1.9 版和更高版本中均处于启用状态)。
From df213b8437f5c9107240527790e1879a121dbcc6 Mon Sep 17 00:00:00 2001
From: Mengjiao Liu
Date: Mon, 19 Apr 2021 18:41:57 +0800
Subject: [PATCH 019/129] [zh] Update CronJob example from batch/v1beta1 to
batch/v1
---
content/zh/examples/application/job/cronjob.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/zh/examples/application/job/cronjob.yaml b/content/zh/examples/application/job/cronjob.yaml
index 816d682f28..da905a9048 100644
--- a/content/zh/examples/application/job/cronjob.yaml
+++ b/content/zh/examples/application/job/cronjob.yaml
@@ -1,4 +1,4 @@
-apiVersion: batch/v1beta1
+apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
From 0b64e26b14341511beebeeca84c097edae90dccc Mon Sep 17 00:00:00 2001
From: ravisantoshgudimetla
Date: Thu, 22 Apr 2021 19:42:17 -0400
Subject: [PATCH 020/129] Remove unsupported windows OS versions
Kubernetes supports 1.21,1.20 and 1.19 versions. Windows 1903 support ended on Dec 19, 2020 as mentioned at
https://docs.microsoft.com/en-us/windows-server/get-started/windows-server-release-info#windows-server-current-versions-by-servicing-option
This commit cleans the docs to reflect it.
Co-authored-by: Mark Rossetti
---
.../windows/intro-windows-in-kubernetes.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md b/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
index a2055ce425..00d2b46bf0 100644
--- a/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
+++ b/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
@@ -38,11 +38,10 @@ In this document, when we talk about Windows containers we mean Windows containe
Refer to the following table for Windows operating system support in Kubernetes. A single heterogeneous Kubernetes cluster can have both Windows and Linux worker nodes. Windows containers have to be scheduled on Windows nodes and Linux containers on Linux nodes.
| Kubernetes version | Windows Server LTSC releases | Windows Server SAC releases |
-| --- | --- | --- |
-| *Kubernetes v1.17* | Windows Server 2019 | Windows Server ver 1809 |
-| *Kubernetes v1.18* | Windows Server 2019 | Windows Server ver 1809, Windows Server ver 1903, Windows Server ver 1909 |
+| --- | --- | --- | --- |
| *Kubernetes v1.19* | Windows Server 2019 | Windows Server ver 1909, Windows Server ver 2004 |
| *Kubernetes v1.20* | Windows Server 2019 | Windows Server ver 1909, Windows Server ver 2004 |
+| *Kubernetes v1.21* | Windows Server 2019 | Windows Server ver 2004, Windows Server ver 20H2 |
{{< note >}}
Information on the different Windows Server servicing channels including their support models can be found at [Windows Server servicing channels](https://docs.microsoft.com/en-us/windows-server/get-started-19/servicing-channels-19).
From 8cbee312b485b6e02c4eb217017b57c2fea89e74 Mon Sep 17 00:00:00 2001
From: Mengjiao Liu
Date: Fri, 23 Apr 2021 16:34:52 +0800
Subject: [PATCH 021/129] [zh] Sync
content/zh/docs/concepts/configuration/configmap.md
---
content/zh/docs/concepts/configuration/configmap.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/content/zh/docs/concepts/configuration/configmap.md b/content/zh/docs/concepts/configuration/configmap.md
index 1f2f34b1e3..7851c880d3 100644
--- a/content/zh/docs/concepts/configuration/configmap.md
+++ b/content/zh/docs/concepts/configuration/configmap.md
@@ -349,7 +349,7 @@ When a ConfigMap currently consumed in a volume is updated, projected keys are e
The kubelet checks whether the mounted ConfigMap is fresh on every periodic sync.
However, the kubelet uses its local cache for getting the current value of the ConfigMap.
The type of the cache is configurable using the `ConfigMapAndSecretChangeDetectionStrategy` field in
-the [KubeletConfiguration struct](https://github.com/kubernetes/kubernetes/blob/{{< param "docsbranch" >}}/staging/src/k8s.io/kubelet/config/v1beta1/types.go).
+the [KubeletConfiguration struct](/docs/reference/config-api/kubelet-config.v1beta1/).
-->
#### 被挂载的 ConfigMap 内容会被自动更新
@@ -386,15 +386,15 @@ ConfigMaps consumed as environment variables are not updated automatically and r
-->
## 不可变更的 ConfigMap {#configmap-immutable}
-{{< feature-state for_k8s_version="v1.19" state="beta" >}}
+{{< feature-state for_k8s_version="v1.21" state="stable" >}}
-Kubernetes Beta 特性 _不可变更的 Secret 和 ConfigMap_ 提供了一种将各个
+Kubernetes 特性 _不可变更的 Secret 和 ConfigMap_ 提供了一种将各个
Secret 和 ConfigMap 设置为不可变更的选项。对于大量使用 ConfigMap 的
集群(至少有数万个各不相同的 ConfigMap 给 Pod 挂载)而言,禁止更改
ConfigMap 的数据有以下好处:
From dd60f06954afee31be4fe1a97c7ab8ebcac081b7 Mon Sep 17 00:00:00 2001
From: ravisantoshgudimetla
Date: Fri, 23 Apr 2021 18:05:28 -0400
Subject: [PATCH 022/129] Update pause image
---
.../windows/intro-windows-in-kubernetes.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md b/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
index 00d2b46bf0..0cf09f0ad9 100644
--- a/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
+++ b/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
@@ -58,7 +58,7 @@ Windows containers with process isolation have strict compatibility rules, [wher
#### Pause Image
-Microsoft maintains a Windows pause infrastructure container at `mcr.microsoft.com/oss/kubernetes/pause:1.4.1`.
+Microsoft maintains a Windows pause infrastructure container at `mcr.microsoft.com/oss/kubernetes/pause:3.4.1`.
#### Compute
@@ -483,9 +483,9 @@ Your main source of help for troubleshooting your Kubernetes cluster should star
nssm start flanneld
# Register kubelet.exe
- # Microsoft releases the pause infrastructure container at mcr.microsoft.com/oss/kubernetes/pause:1.4.1
+ # Microsoft releases the pause infrastructure container at mcr.microsoft.com/oss/kubernetes/pause:3.4.1
nssm install kubelet C:\k\kubelet.exe
- nssm set kubelet AppParameters --hostname-override= --v=6 --pod-infra-container-image=mcr.microsoft.com/oss/kubernetes/pause:1.4.1 --resolv-conf="" --allow-privileged=true --enable-debugging-handlers --cluster-dns= --cluster-domain=cluster.local --kubeconfig=c:\k\config --hairpin-mode=promiscuous-bridge --image-pull-progress-deadline=20m --cgroups-per-qos=false --log-dir= --logtostderr=false --enforce-node-allocatable="" --network-plugin=cni --cni-bin-dir=c:\k\cni --cni-conf-dir=c:\k\cni\config
+ nssm set kubelet AppParameters --hostname-override= --v=6 --pod-infra-container-image=mcr.microsoft.com/oss/kubernetes/pause:3.4.1 --resolv-conf="" --allow-privileged=true --enable-debugging-handlers --cluster-dns= --cluster-domain=cluster.local --kubeconfig=c:\k\config --hairpin-mode=promiscuous-bridge --image-pull-progress-deadline=20m --cgroups-per-qos=false --log-dir= --logtostderr=false --enforce-node-allocatable="" --network-plugin=cni --cni-bin-dir=c:\k\cni --cni-conf-dir=c:\k\cni\config
nssm set kubelet AppDirectory C:\k
nssm start kubelet
@@ -600,7 +600,7 @@ Your main source of help for troubleshooting your Kubernetes cluster should star
1. `kubectl port-forward` fails with "unable to do port forwarding: wincat not found"
- This was implemented in Kubernetes 1.15 by including wincat.exe in the pause infrastructure container `mcr.microsoft.com/oss/kubernetes/pause:1.4.1`. Be sure to use these versions or newer ones.
+ This was implemented in Kubernetes 1.15 by including wincat.exe in the pause infrastructure container `mcr.microsoft.com/oss/kubernetes/pause:3.4.1`. Be sure to use these versions or newer ones.
If you would like to build your own pause infrastructure container be sure to include [wincat](https://github.com/kubernetes-sigs/sig-windows-tools/tree/master/cmd/wincat).
1. My Kubernetes installation is failing because my Windows Server node is behind a proxy
@@ -616,7 +616,7 @@ Your main source of help for troubleshooting your Kubernetes cluster should star
In a Kubernetes Pod, an infrastructure or "pause" container is first created to host the container endpoint. Containers that belong to the same pod, including infrastructure and worker containers, share a common network namespace and endpoint (same IP and port space). Pause containers are needed to accommodate worker containers crashing or restarting without losing any of the networking configuration.
- The "pause" (infrastructure) image is hosted on Microsoft Container Registry (MCR). You can access it using `mcr.microsoft.com/oss/kubernetes/pause:1.4.1`. For more details, see the [DOCKERFILE](https://github.com/kubernetes-sigs/windows-testing/blob/master/images/pause/Dockerfile).
+ The "pause" (infrastructure) image is hosted on Microsoft Container Registry (MCR). You can access it using `mcr.microsoft.com/oss/kubernetes/pause:3.4.1`. For more details, see the [DOCKERFILE](https://github.com/kubernetes-sigs/windows-testing/blob/master/images/pause/Dockerfile).
### Further investigation
From 06e7be5ff3c4f73be806a415a9f6fc32286b32a5 Mon Sep 17 00:00:00 2001
From: Tim Bannister
Date: Mon, 5 Apr 2021 14:16:29 +0100
Subject: [PATCH 023/129] Allow localization teams to review their own strings
---
data/i18n/de/OWNERS | 13 ++
data/i18n/de/de.toml | 203 +++++++++++++++++++++++++++++++
data/i18n/en/OWNERS | 13 ++
data/i18n/en/en.toml | 226 +++++++++++++++++++++++++++++++++++
data/i18n/es/OWNERS | 13 ++
data/i18n/es/es.toml | 203 +++++++++++++++++++++++++++++++
data/i18n/fr/OWNERS | 13 ++
data/i18n/fr/fr.toml | 143 ++++++++++++++++++++++
data/i18n/hi/OWNERS | 13 ++
data/i18n/hi/hi.toml | 195 ++++++++++++++++++++++++++++++
data/i18n/id/OWNERS | 13 ++
data/i18n/id/id.toml | 227 +++++++++++++++++++++++++++++++++++
data/i18n/it/OWNERS | 11 ++
data/i18n/it/it.toml | 197 +++++++++++++++++++++++++++++++
data/i18n/ja/OWNERS | 13 ++
data/i18n/ja/ja.toml | 203 +++++++++++++++++++++++++++++++
data/i18n/ko/OWNERS | 13 ++
data/i18n/ko/ko.toml | 232 ++++++++++++++++++++++++++++++++++++
data/i18n/nl/nl.toml | 197 +++++++++++++++++++++++++++++++
data/i18n/no/no.toml | 68 +++++++++++
data/i18n/pl/OWNERS | 13 ++
data/i18n/pl/pl.toml | 197 +++++++++++++++++++++++++++++++
data/i18n/pt/OWNERS | 11 ++
data/i18n/pt/pt-br.toml | 240 +++++++++++++++++++++++++++++++++++++
data/i18n/pt/pt.toml | 225 +++++++++++++++++++++++++++++++++++
data/i18n/ru/OWNERS | 13 ++
data/i18n/ru/ru.toml | 201 +++++++++++++++++++++++++++++++
data/i18n/uk/OWNERS | 13 ++
data/i18n/uk/uk.toml | 255 +++++++++++++++++++++++++++++++++++++++
data/i18n/vi/OWNERS | 13 ++
data/i18n/vi/vi.toml | 197 +++++++++++++++++++++++++++++++
data/i18n/zh/OWNERS | 13 ++
data/i18n/zh/zh.toml | 230 ++++++++++++++++++++++++++++++++++++
i18n/de.toml | 204 +-------------------------------
i18n/en.toml | 227 +----------------------------------
i18n/es.toml | 204 +-------------------------------
i18n/fr.toml | 144 +---------------------
i18n/hi.toml | 196 +-----------------------------
i18n/id.toml | 228 +----------------------------------
i18n/it.toml | 198 +------------------------------
i18n/ja.toml | 204 +-------------------------------
i18n/ko.toml | 233 +-----------------------------------
i18n/nl.toml | 198 +------------------------------
i18n/no.toml | 69 +----------
i18n/pl.toml | 198 +------------------------------
i18n/pt-br.toml | 241 +------------------------------------
i18n/ru.toml | 202 +------------------------------
i18n/uk.toml | 256 +---------------------------------------
i18n/vi.toml | 198 +------------------------------
i18n/zh.toml | 231 +-----------------------------------
50 files changed, 3847 insertions(+), 3414 deletions(-)
create mode 100644 data/i18n/de/OWNERS
create mode 100644 data/i18n/de/de.toml
create mode 100644 data/i18n/en/OWNERS
create mode 100644 data/i18n/en/en.toml
create mode 100644 data/i18n/es/OWNERS
create mode 100644 data/i18n/es/es.toml
create mode 100644 data/i18n/fr/OWNERS
create mode 100644 data/i18n/fr/fr.toml
create mode 100644 data/i18n/hi/OWNERS
create mode 100644 data/i18n/hi/hi.toml
create mode 100644 data/i18n/id/OWNERS
create mode 100644 data/i18n/id/id.toml
create mode 100644 data/i18n/it/OWNERS
create mode 100644 data/i18n/it/it.toml
create mode 100644 data/i18n/ja/OWNERS
create mode 100644 data/i18n/ja/ja.toml
create mode 100644 data/i18n/ko/OWNERS
create mode 100644 data/i18n/ko/ko.toml
create mode 100644 data/i18n/nl/nl.toml
create mode 100644 data/i18n/no/no.toml
create mode 100644 data/i18n/pl/OWNERS
create mode 100644 data/i18n/pl/pl.toml
create mode 100644 data/i18n/pt/OWNERS
create mode 100644 data/i18n/pt/pt-br.toml
create mode 100644 data/i18n/pt/pt.toml
create mode 100644 data/i18n/ru/OWNERS
create mode 100644 data/i18n/ru/ru.toml
create mode 100644 data/i18n/uk/OWNERS
create mode 100644 data/i18n/uk/uk.toml
create mode 100644 data/i18n/vi/OWNERS
create mode 100644 data/i18n/vi/vi.toml
create mode 100644 data/i18n/zh/OWNERS
create mode 100644 data/i18n/zh/zh.toml
mode change 100644 => 120000 i18n/de.toml
mode change 100644 => 120000 i18n/en.toml
mode change 100644 => 120000 i18n/es.toml
mode change 100644 => 120000 i18n/fr.toml
mode change 100644 => 120000 i18n/hi.toml
mode change 100644 => 120000 i18n/id.toml
mode change 100644 => 120000 i18n/it.toml
mode change 100644 => 120000 i18n/ja.toml
mode change 100644 => 120000 i18n/ko.toml
mode change 100644 => 120000 i18n/nl.toml
mode change 100644 => 120000 i18n/no.toml
mode change 100644 => 120000 i18n/pl.toml
mode change 100644 => 120000 i18n/pt-br.toml
mode change 100644 => 120000 i18n/ru.toml
mode change 100644 => 120000 i18n/uk.toml
mode change 100644 => 120000 i18n/vi.toml
mode change 100644 => 120000 i18n/zh.toml
diff --git a/data/i18n/de/OWNERS b/data/i18n/de/OWNERS
new file mode 100644
index 0000000000..63d33cd516
--- /dev/null
+++ b/data/i18n/de/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for German.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-de-reviews
+
+approvers:
+- sig-docs-de-owners
+
+labels:
+- language/de
diff --git a/data/i18n/de/de.toml b/data/i18n/de/de.toml
new file mode 100644
index 0000000000..cd4c3d7924
--- /dev/null
+++ b/data/i18n/de/de.toml
@@ -0,0 +1,203 @@
+# i18n strings for the German (main) site.
+
+[deprecation_warning]
+other = " Die Dokumentation wird nicht mehr aktiv gepflegt. Die aktuell angezeigte Version ist eine statische Momentaufnahme. Aktuelle Dokumentation finden Sie unter "
+
+[deprecation_file_warning]
+other = "Veraltet"
+
+[objectives_heading]
+other = "Ziele"
+
+[cleanup_heading]
+other = "Aufräumen"
+
+[prerequisites_heading]
+other = "Bevor Sie beginnen"
+
+[subscribe_button]
+other = "Abonnieren"
+
+[whatsnext_heading]
+other = "Nächste Schritte"
+
+[feedback_heading]
+other = "Feedback"
+
+[feedback_question]
+other = "War diese Seite hilfreich?"
+
+[feedback_yes]
+other = "Ja"
+
+[feedback_no]
+other = "Nein"
+
+[latest_version]
+other = "aktuelle Version."
+
+[version_check_mustbe]
+other = "Ihr Kubernetes-Server benötigt die Version "
+
+[version_check_mustbeorlater]
+other = "Ihr Kubernetes-Server benötigt mindestens die Version "
+
+[version_check_tocheck]
+other = "Um die Version zu überprüfen, geben Sie Folgendes ein "
+
+[caution]
+other = "Achtung:"
+
+[note]
+other = "Hinweis:"
+
+[warning]
+other = "Warnung:"
+
+[main_read_about]
+other = "Mehr Informationen"
+
+[main_read_more]
+other = "Weiterlesen"
+
+[main_github_invite]
+other = "Interested in hacking on the core Kubernetes code base?"
+
+[main_github_view_on]
+other = "Auf GitHub ansehen"
+
+[main_github_create_an_issue]
+other = "Problem berichten"
+
+[main_community_explore]
+other = "Entdecke die Community"
+
+[main_kubernetes_features]
+other = "Kubernetes Features"
+
+[main_cncf_project]
+other = """Wir sind ein CNCF Abschlussprojekt
"""
+
+[main_kubeweekly_baseline]
+other = "Möchten Sie die neuesten Nachrichten von Kubernetes erhalten? Melden Sie sich für KubeWeekly an."
+
+[main_kubernetes_past_link]
+other = "Frühere Newsletter anzeigen"
+
+[main_kubeweekly_signup]
+other = "Abonnieren"
+
+[main_contribute]
+other = "Contribute"
+
+[main_edit_this_page]
+other = "Diese Seite bearbeiten"
+
+[main_page_history]
+other ="Seitenverlauf"
+
+[main_page_last_modified_on]
+other = "Letzte Änderung am"
+
+[main_by]
+other = "durch"
+
+[main_documentation_license]
+other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+
+# Labels for the docs portal home page.
+[docs_label_browse]
+other = "Dokumention durchsuchen"
+
+[docs_label_contributors]
+other = "Mitwirkende"
+
+[docs_label_users]
+other = "Users"
+
+[docs_label_i_am]
+other = "ICH BIN..."
+
+
+# layouts > blog > pager
+
+[layouts_blog_pager_prev]
+other = "<< Zurück"
+
+[layouts_blog_pager_next]
+other = "Vor >>"
+
+# layouts > blog > list
+
+[layouts_case_studies_list_tell]
+other = "Erzählen Sie Ihre Geschichte"
+
+# layouts > docs > glossary
+
+[layouts_docs_glossary_description]
+other = "Dieses Glossar soll eine umfassende, standardisierte Liste der Kubernetes-Terminologie darstellen. Es enthält technische Begriffe, die für K8 spezifisch sind, sowie allgemeinere Begriffe, die einen nützlichen Kontext bieten."
+
+[layouts_docs_glossary_filter]
+other = "Begriffe nach ihren Tags filtern"
+
+[layouts_docs_glossary_select_all]
+other = "Alle auswählen"
+
+[layouts_docs_glossary_deselect_all]
+other = "Alle abwählen"
+
+[layouts_docs_glossary_aka]
+other = "Auch bekannt als"
+
+[layouts_docs_glossary_click_details_before]
+other = "Klicken Sie auf die"
+
+[layouts_docs_glossary_click_details_after]
+other = "Indikatoren unten, um eine längere Erklärung für einen bestimmten Begriff zu erhalten."
+
+# layouts > docs > search
+
+[layouts_docs_search_fetching]
+other = "Ergebnisse werden abgerufen..."
+
+# layouts > partial > feedback
+
+[layouts_docs_partials_feedback_thanks]
+other = "Danke für die Rückmeldung. Wenn Sie eine spezifische, beantwortbare Frage zur Verwendung von Kubernetes haben, stellen Sie diese unter "
+
+[layouts_docs_partials_feedback_issue]
+other = "Öffnen Sie ein Problem im GitHub-Repo, wenn Sie möchten "
+
+[layouts_docs_partials_feedback_problem]
+other = "Ein Problem melden"
+
+[layouts_docs_partials_feedback_or]
+other = "oder"
+
+[layouts_docs_partials_feedback_improvement]
+other = "Eine Verbesserung vorschlagen"
+
+
+# Community links
+[community_twitter_name]
+other = "Twitter"
+[community_github_name]
+other = "GitHub"
+[community_slack_name]
+other = "Slack"
+[community_stack_overflow_name]
+other = "Stack Overflow"
+[community_forum_name]
+other = "Forum"
+[community_events_calendar]
+other = "Veranstaltungskalender"
+
+# UI elements
+[ui_search_placeholder]
+other = "Suchen"
+
+[input_placeholder_email_address]
+other = "E-Mail-Addresse"
\ No newline at end of file
diff --git a/data/i18n/en/OWNERS b/data/i18n/en/OWNERS
new file mode 100644
index 0000000000..39cf7550c6
--- /dev/null
+++ b/data/i18n/en/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Upstream (English) localized strings.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-en-reviews
+
+approvers:
+- sig-docs-en-owners
+
+labels:
+- language/en
diff --git a/data/i18n/en/en.toml b/data/i18n/en/en.toml
new file mode 100644
index 0000000000..c6f24f8e2e
--- /dev/null
+++ b/data/i18n/en/en.toml
@@ -0,0 +1,226 @@
+# i18n strings for the English (main) site.
+# NOTE: Please keep the entries in alphabetical order when editing
+[caution]
+other = "Caution:"
+
+[cleanup_heading]
+other = "Cleaning up"
+
+[community_events_calendar]
+other = "Events Calendar"
+
+[community_forum_name]
+other = "Forum"
+
+[community_github_name]
+other = "GitHub"
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[community_youtube_name]
+other = "YouTube"
+
+[deprecation_title]
+other = "You are viewing documentation for Kubernetes version:"
+
+[deprecation_warning]
+other = " documentation is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date documentation, see the "
+
+[deprecation_file_warning]
+other = "Deprecated"
+
+[docs_label_browse]
+other = "Browse Docs"
+
+[docs_label_contributors]
+other = "Contributors"
+
+[docs_label_i_am]
+other = "I AM..."
+
+[docs_label_users]
+other = "Users"
+
+[docs_version_current]
+other = "(this documentation)"
+
+[docs_version_latest_heading]
+other = "Latest version"
+
+[docs_version_other_heading]
+other = "Older versions"
+
+[error_404_were_you_looking_for]
+other = "Were you looking for:"
+
+[examples_heading]
+other = "Examples"
+
+[feedback_heading]
+other = "Feedback"
+
+[feedback_no]
+other = "No"
+
+[feedback_question]
+other = "Was this page helpful?"
+
+[feedback_yes]
+other = "Yes"
+
+[input_placeholder_email_address]
+other = "email address"
+
+[latest_version]
+other = "latest version."
+
+[layouts_blog_pager_prev]
+other = "<< Prev"
+
+[layouts_blog_pager_next]
+other = "Next >>"
+
+[layouts_case_studies_list_tell]
+other = "Tell your story"
+
+[layouts_docs_glossary_aka]
+other = "Also known as"
+
+[layouts_docs_glossary_description]
+other = "This glossary is intended to be a comprehensive, standardized list of Kubernetes terminology. It includes technical terms that are specific to Kubernetes, as well as more general terms that provide useful context."
+
+[layouts_docs_glossary_deselect_all]
+other = "Deselect all"
+
+[layouts_docs_glossary_click_details_after]
+other = "indicators below to get a longer explanation for any particular term."
+
+[layouts_docs_glossary_click_details_before]
+other = "Click on the"
+
+[layouts_docs_glossary_filter]
+other = "Filter terms according to their tags"
+
+[layouts_docs_glossary_select_all]
+other = "Select all"
+
+[layouts_docs_partials_feedback_improvement]
+other = "suggest an improvement"
+
+[layouts_docs_partials_feedback_issue]
+other = "Open an issue in the GitHub repo if you want to "
+
+[layouts_docs_partials_feedback_or]
+other = "or"
+
+[layouts_docs_partials_feedback_problem]
+other = "report a problem"
+
+[layouts_docs_partials_feedback_thanks]
+other = "Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on"
+
+[layouts_docs_search_fetching]
+other = "Fetching results..."
+
+[main_by]
+other = "by"
+
+[main_cncf_project]
+other = """We are a CNCF graduated project"""
+
+[main_community_explore]
+other = "Explore the community"
+
+[main_contribute]
+other = "Contribute"
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+
+[main_documentation_license]
+other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+
+[main_github_invite]
+other = "Interested in hacking on the core Kubernetes code base?"
+
+[main_github_view_on]
+other = "View On GitHub"
+
+[main_kubernetes_features]
+other = "Kubernetes Features"
+
+[main_kubeweekly_baseline]
+other = "Interested in receiving the latest Kubernetes news? Sign up for KubeWeekly."
+
+[main_kubernetes_past_link]
+other = "View past newsletters"
+
+[main_kubeweekly_signup]
+other = "Subscribe"
+
+[main_page_history]
+other ="Page History"
+
+[main_page_last_modified_on]
+other = "Page last modified on"
+
+[main_read_about]
+other = "Read about"
+
+[main_read_more]
+other = "Read more"
+
+[note]
+other = "Note:"
+
+[objectives_heading]
+other = "Objectives"
+
+[options_heading]
+other = "Options"
+
+[post_create_issue]
+other = "Create an issue"
+
+[prerequisites_heading]
+other = "Before you begin"
+
+[seealso_heading]
+other = "See Also"
+
+[subscribe_button]
+other = "Subscribe"
+
+[synopsis_heading]
+other = "Synopsis"
+
+[thirdparty_message]
+other = """This section links to third party projects that provide functionality required by Kubernetes. The Kubernetes project authors aren't responsible for these projects. This page follows CNCF website guidelines by listing projects alphabetically. To add a project to this list, read the content guide before submitting a change."""
+
+[ui_search_placeholder]
+other = "Search"
+
+[version_check_mustbe]
+other = "Your Kubernetes server must be version "
+
+[version_check_mustbeorlater]
+other = "Your Kubernetes server must be at or later than version "
+
+[version_check_tocheck]
+other = "To check the version, enter "
+
+[version_menu]
+other = "Versions"
+
+[warning]
+other = "Warning:"
+
+[whatsnext_heading]
+other = "What's next"
diff --git a/data/i18n/es/OWNERS b/data/i18n/es/OWNERS
new file mode 100644
index 0000000000..40b7c2ebd5
--- /dev/null
+++ b/data/i18n/es/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Spanish.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-es-reviews
+
+approvers:
+- sig-docs-es-owners
+
+labels:
+- language/es
diff --git a/data/i18n/es/es.toml b/data/i18n/es/es.toml
new file mode 100644
index 0000000000..c232ce7c27
--- /dev/null
+++ b/data/i18n/es/es.toml
@@ -0,0 +1,203 @@
+# i18n strings for the Spanish (main) site.
+
+[deprecation_warning]
+other = " ya no mantiene activamente la documentación. La versión que está viendo actualmente es una instantánea estática. Para la documentación actualizada, visita la "
+
+[deprecation_file_warning]
+other = "Descontinuado"
+
+[objectives_heading]
+other = "Objetivos"
+
+[cleanup_heading]
+other = "Limpieza de recursos"
+
+[prerequisites_heading]
+other = "Antes de empezar"
+
+[subscribe_button]
+other = "Suscribir"
+
+[whatsnext_heading]
+other = "Siguientes pasos"
+
+[feedback_heading]
+other = "Comentarios"
+
+[feedback_question]
+other = "¿Esta página le ha sido de ayuda?"
+
+[feedback_yes]
+other = "Sí"
+
+[feedback_no]
+other = "No"
+
+[latest_version]
+other = "última versión."
+
+[version_check_mustbe]
+other = "Su versión de Kubernetes debe ser "
+
+[version_check_mustbeorlater]
+other = "Su versión de Kubernetes debe ser como mínimo "
+
+[version_check_tocheck]
+other = "Para comprobar la versión, introduzca "
+
+[caution]
+other = "Precaución:"
+
+[note]
+other = "Nota:"
+
+[warning]
+other = "Advertencia:"
+
+[main_read_about]
+other = "Leer"
+
+[main_read_more]
+other = "Leer más"
+
+[main_github_invite]
+other = "¿Está interesado en participar en el código base de Kubernetes?"
+
+[main_github_view_on]
+other = "Ver en GitHub"
+
+[main_github_create_an_issue]
+other = "Abrir un Issue"
+
+[main_community_explore]
+other = "Explorar la comunidad"
+
+[main_kubernetes_features]
+other = "Características de Kubernetes"
+
+[main_cncf_project]
+other = """Somos un proyecto graduado de la CNCF"""
+
+[main_kubeweekly_baseline]
+other = "¿Interesado en recibir las últimas noticias de Kubernetes? Suscríbase a KubeWeekly."
+
+[main_kubernetes_past_link]
+other = "Ver boletines anteriores"
+
+[main_kubeweekly_signup]
+other = "Suscríbase"
+
+[main_contribute]
+other = "Contribuir"
+
+[main_edit_this_page]
+other = "Editar esta página"
+
+[main_page_history]
+other ="Historial cambios"
+
+[main_page_last_modified_on]
+other = "Página modificada por última vez el "
+
+[main_by]
+other = "por"
+
+[main_documentation_license]
+other = """Los autores de Kubernetes | Documentación distribuida bajo CC BY 4.0"""
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. Todos los derechos reservados. The Linux Foundation tiene marcas registradas y utiliza marcas registradas. Para obtener una lista de marcas registradas por The Linux Foundation, visita Trademark Usage page"""
+
+# Labels for the docs portal home page.
+[docs_label_browse]
+other = "Explorar la documentación"
+
+[docs_label_contributors]
+other = "Contribuidores"
+
+[docs_label_users]
+other = "Usuarios"
+
+[docs_label_i_am]
+other = "Yo soy..."
+
+# layouts > blog > pager
+
+[layouts_blog_pager_prev]
+other = "<< Anterior"
+
+[layouts_blog_pager_next]
+other = "Siguiente >>"
+
+# layouts > blog > list
+
+[layouts_case_studies_list_tell]
+other = "Cuéntanos tu historia"
+
+# layouts > docs > glossary
+
+[layouts_docs_glossary_description]
+other = "Este glosario tiene la intención de ser una lista completa y estandarizada de la terminología de Kubernetes. Incluye términos técnicos que son específicos de k8s, así como términos más generales que proporcionan un contexto."
+
+[layouts_docs_glossary_filter]
+other = "Filtrar terminos por categoría:"
+
+[layouts_docs_glossary_select_all]
+other = "Seleccionar todos"
+
+[layouts_docs_glossary_deselect_all]
+other = "Elmininar selección"
+
+[layouts_docs_glossary_aka]
+other = "Also known as"
+
+[layouts_docs_glossary_click_details_before]
+other = "Haz click en el símbolo"
+
+[layouts_docs_glossary_click_details_after]
+other = "para obtener información detallada sobre el término."
+
+# layouts > docs > search
+
+[layouts_docs_search_fetching]
+other = "Obteniendo resultados.."
+
+# layouts > partial > feedback
+
+[layouts_docs_partials_feedback_thanks]
+other = "Muchas gracias por el feedback. Si tienes alguna pregunta específica sobre como usar Kubernetes, puedes preguntar en"
+
+[layouts_docs_partials_feedback_issue]
+other = "Abre un issue en el repositorio de GitHub si quieres"
+
+[layouts_docs_partials_feedback_problem]
+other = "reportar un problema"
+
+[layouts_docs_partials_feedback_or]
+other = "o"
+
+[layouts_docs_partials_feedback_improvement]
+other = "sugerir alguna mejora"
+
+# Community links
+[community_twitter_name]
+other = "Twitter"
+[community_github_name]
+other = "GitHub"
+[community_slack_name]
+other = "Slack"
+[community_stack_overflow_name]
+other = "Stack Overflow"
+[community_forum_name]
+other = "Foro"
+[community_events_calendar]
+other = "Calendario de eventos"
+[community_youtube_name]
+other = "YouTube"
+
+# UI elements
+[ui_search_placeholder]
+other = "Buscar"
+
+[input_placeholder_email_address]
+other = "dirección de correo electrónico"
\ No newline at end of file
diff --git a/data/i18n/fr/OWNERS b/data/i18n/fr/OWNERS
new file mode 100644
index 0000000000..baeda53bd4
--- /dev/null
+++ b/data/i18n/fr/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for French.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-fr-reviews
+
+approvers:
+- sig-docs-fr-owners
+
+labels:
+- language/fr
diff --git a/data/i18n/fr/fr.toml b/data/i18n/fr/fr.toml
new file mode 100644
index 0000000000..4cfc419cb7
--- /dev/null
+++ b/data/i18n/fr/fr.toml
@@ -0,0 +1,143 @@
+# i18n strings for the French (main) site.
+
+[deprecation_warning]
+other = " documentation non maintenue. Vous consultez une version statique. Pour une documentation à jour, veuillez consulter: "
+
+[objectives_heading]
+other = "Objectifs"
+
+[cleanup_heading]
+other = "Cleanup"
+
+[prerequisites_heading]
+other = "Pré-requis"
+
+[subscribe_button]
+other = "Souscrire"
+
+[whatsnext_heading]
+other = "A suivre"
+
+[feedback_heading]
+other = "Feedback"
+
+[feedback_question]
+other = "Cette page est elle utile ?"
+
+[feedback_yes]
+other = "Oui"
+
+[feedback_no]
+other = "Non"
+
+[latest_version]
+other = "dernière version."
+
+[version_check_mustbe]
+other = "Votre serveur Kubernetes doit être version "
+
+[version_check_mustbeorlater]
+other = "Votre serveur Kubernetes doit être au moins à la version "
+
+[version_check_tocheck]
+other = "Pour consulter la version, entrez "
+
+[caution]
+other = "Avertissement:"
+
+[note]
+other = "Note:"
+
+[warning]
+other = "Attention:"
+
+[main_read_about]
+other = "A propos"
+
+[main_read_more]
+other = "Autres ressources"
+
+[main_github_invite]
+other = "Souhaitez vous contribuer au code de Kubernetes ?"
+
+[main_github_view_on]
+other = "Voir sur GitHub"
+
+[main_github_create_an_issue]
+other = "Ouvrez un ticket"
+
+[main_community_explore]
+other = "Explorez la communauté"
+
+[main_kubernetes_features]
+other = "Fonctionnalités Kubernetes"
+
+[main_cncf_project]
+other = """Nous sommes un projet CNCF diplômé"""
+
+[main_kubeweekly_baseline]
+other = "Intéressez pour recevoir les dernières informations sur Kubernetes ? Abonnez-vous à KubeWeekly."
+
+[main_kubernetes_past_link]
+other = "Voir les newsletters précédentes"
+
+[main_kubeweekly_signup]
+other = "S'abonner"
+
+[main_contribute]
+other = "Contribuer"
+
+[main_edit_this_page]
+other = "Editez cette page"
+
+[main_page_history]
+other ="Historique"
+
+[main_page_last_modified_on]
+other = "Dernière modification le"
+
+[main_by]
+other = "de"
+
+[main_documentation_license]
+other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+
+# Labels for the docs portal home page.
+[docs_label_browse]
+other = "Parcourir la documentation"
+
+[docs_label_contributors]
+other = "Contributeurs"
+
+[docs_label_users]
+other = "Utilisateurs"
+
+[docs_label_i_am]
+other = "JE SUIS..."
+
+[examples_heading]
+other = "Exemples"
+
+# Community links
+[community_twitter_name]
+other = "Twitter"
+[community_github_name]
+other = "GitHub"
+[community_slack_name]
+other = "Slack"
+[community_stack_overflow_name]
+other = "Stack Overflow"
+[community_forum_name]
+other = "Forum"
+[community_events_calendar]
+other = "Calendrier"
+
+# UI elements
+[ui_search_placeholder]
+other = "Recherche"
+
+[input_placeholder_email_address]
+other = "adresse email"
diff --git a/data/i18n/hi/OWNERS b/data/i18n/hi/OWNERS
new file mode 100644
index 0000000000..4e43a2939e
--- /dev/null
+++ b/data/i18n/hi/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Hindi.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-hi-reviews
+
+approvers:
+- sig-docs-hi-owners
+
+labels:
+- language/hi
diff --git a/data/i18n/hi/hi.toml b/data/i18n/hi/hi.toml
new file mode 100644
index 0000000000..2e5d6ad331
--- /dev/null
+++ b/data/i18n/hi/hi.toml
@@ -0,0 +1,195 @@
+# i18n strings for the English (main) site.
+
+[deprecation_warning]
+other = " documentation is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date documentation, see the "
+
+[deprecation_file_warning]
+other = "Deprecated"
+
+[objectives_heading]
+other = "Objectives"
+
+[cleanup_heading]
+other = "Cleaning up"
+
+[prerequisites_heading]
+other = "Before you begin"
+
+[whatsnext_heading]
+other = "What's next"
+
+[feedback_heading]
+other = "Feedback"
+
+[feedback_question]
+other = "Was this page helpful?"
+
+[feedback_yes]
+other = "Yes"
+
+[feedback_no]
+other = "No"
+
+[latest_version]
+other = "latest version."
+
+[version_check_mustbe]
+other = "Your Kubernetes server must be version "
+
+[version_check_mustbeorlater]
+other = "Your Kubernetes server must be at or later than version "
+
+[version_check_tocheck]
+other = "To check the version, enter "
+
+[caution]
+other = "Caution:"
+
+[note]
+other = "Note:"
+
+[warning]
+other = "Warning:"
+
+[main_read_about]
+other = "Read about"
+
+[main_read_more]
+other = "Read more"
+
+[main_github_invite]
+other = "Interested in hacking on the core Kubernetes code base?"
+
+[main_github_view_on]
+other = "View On GitHub"
+
+[main_github_create_an_issue]
+other = "Create an Issue"
+
+[main_community_explore]
+other = "Explore the community"
+
+[main_kubernetes_features]
+other = "Kubernetes Features"
+
+[main_cncf_project]
+other = """We are a CNCF graduated project"""
+
+[main_kubeweekly_baseline]
+other = "Interested in receiving the latest Kubernetes news? Sign up for KubeWeekly."
+
+[main_kubernetes_past_link]
+other = "View past newsletters"
+
+[main_kubeweekly_signup]
+other = "Subscribe"
+
+[main_contribute]
+other = "Contribute"
+
+[main_edit_this_page]
+other = "Edit This Page"
+
+[main_page_history]
+other ="Page History"
+
+[main_page_last_modified_on]
+other = "Page last modified on"
+
+[main_by]
+other = "by"
+
+[main_documentation_license]
+other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+
+# Labels for the docs portal home page.
+[docs_label_browse]
+other = "Browse Docs"
+
+[docs_label_contributors]
+other = "Contributors"
+
+[docs_label_users]
+other = "Users"
+
+[docs_label_i_am]
+other = "I AM..."
+
+# layouts > blog > pager
+
+[layouts_blog_pager_prev]
+other = "<< Prev"
+
+[layouts_blog_pager_next]
+other = "Next >>"
+
+# layouts > blog > list
+
+[layouts_case_studies_list_tell]
+other = "Tell your story"
+
+# layouts > docs > glossary
+
+[layouts_docs_glossary_description]
+other = "This glossary is intended to be a comprehensive, standardized list of Kubernetes terminology. It includes technical terms that are specific to K8s, as well as more general terms that provide useful context."
+
+[layouts_docs_glossary_filter]
+other = "Filter terms according to their tags"
+
+[layouts_docs_glossary_select_all]
+other = "Select all"
+
+[layouts_docs_glossary_deselect_all]
+other = "Deselect all"
+
+[layouts_docs_glossary_aka]
+other = "Also known as"
+
+[layouts_docs_glossary_click_details_before]
+other = "Click on the"
+
+[layouts_docs_glossary_click_details_after]
+other = "indicators below to get a longer explanation for any particular term."
+
+# layouts > docs > search
+
+[layouts_docs_search_fetching]
+other = "Fetching results.."
+
+# layouts > partial > feedback
+
+[layouts_docs_partials_feedback_thanks]
+other = "Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on"
+
+[layouts_docs_partials_feedback_issue]
+other = "Open an issue in the GitHub repo if you want to "
+
+[layouts_docs_partials_feedback_problem]
+other = "report a problem"
+
+[layouts_docs_partials_feedback_or]
+other = "or"
+
+[layouts_docs_partials_feedback_improvement]
+other = "suggest an improvement"
+
+# Community links
+[community_twitter_name]
+other = "Twitter"
+[community_github_name]
+other = "GitHub"
+[community_slack_name]
+other = "Slack"
+[community_stack_overflow_name]
+other = "Stack Overflow"
+[community_forum_name]
+other = "Forum"
+[community_events_calendar]
+other = "Events Calendar"
+
+# UI elements
+[ui_search_placeholder]
+other = "Search"
diff --git a/data/i18n/id/OWNERS b/data/i18n/id/OWNERS
new file mode 100644
index 0000000000..98a4ead779
--- /dev/null
+++ b/data/i18n/id/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Bahasa.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-id-reviews
+
+approvers:
+- sig-docs-id-owners
+
+labels:
+- language/id
diff --git a/data/i18n/id/id.toml b/data/i18n/id/id.toml
new file mode 100644
index 0000000000..101ea071ff
--- /dev/null
+++ b/data/i18n/id/id.toml
@@ -0,0 +1,227 @@
+# i18n strings for the Indonesian version of the site (https://kubernetes.io/id/)
+# NOTE: Please keep the entries in alphabetical order when editing
+
+[caution]
+other = "Perhatian:"
+
+[cleanup_heading]
+other = "Bersihkan"
+
+[community_events_calendar]
+other = "Kalender Acara"
+
+[community_forum_name]
+other = "Forum"
+
+[community_github_name]
+other = "GitHub"
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[community_youtube_name]
+other = "YouTube"
+
+[deprecation_title]
+other = "Kamu sedang menampilkan dokumentasi untuk Kubernetes versi:"
+
+[deprecation_warning]
+other = " dokumentasi sudah tidak dirawat lagi. Versi yang kamu lihat ini hanyalah snapshot statis. Untuk dokumentasi terkini, lihat "
+
+[deprecation_file_warning]
+other = "Sudah usang"
+
+[docs_label_browse]
+other = "Telusuri Dokumentasi"
+
+[docs_label_contributors]
+other = "Kontributor"
+
+[docs_label_i_am]
+other = "AKU..."
+
+[docs_label_users]
+other = "Pengguna"
+
+[docs_version_current]
+other = "(dokumentasi ini)"
+
+[docs_version_latest_heading]
+other = "Versi terbaru"
+
+[docs_version_other_heading]
+other = "Versi lama"
+
+[error_404_were_you_looking_for]
+other = "Apakah kamu sedang mencari:"
+
+[examples_heading]
+other = "Contoh"
+
+[feedback_heading]
+other = "Masukan"
+
+[feedback_no]
+other = "Tidak"
+
+[feedback_question]
+other = "Apakah halaman ini membantu?"
+
+[feedback_yes]
+other = "Ya"
+
+[input_placeholder_email_address]
+other = "alamat email"
+
+[latest_version]
+other = "versi terbaru."
+
+[layouts_blog_pager_prev]
+other = "<< Sebelumnya"
+
+[layouts_blog_pager_next]
+other = "Selanjutnya >>"
+
+[layouts_case_studies_list_tell]
+other = "Ceritakan kisahmu"
+
+[layouts_docs_glossary_aka]
+other = "Dikenal juga sebagai"
+
+[layouts_docs_glossary_description]
+other = "Glosarium ini dimaksudkan sebagai daftar terminologi Kubernetes yang komprehensif dan terstandardisasi. Glosarium ini mencakup istilah-istilah teknis yang spesifik digunakan di Kubernetes, serta beberapa istilah umum untuk membantu memberikan konteks."
+
+[layouts_docs_glossary_deselect_all]
+other = "Hapus semua pilihan"
+
+[layouts_docs_glossary_click_details_after]
+other = "indikator di bawah ini untuk mendapatkan penjelasan yang lebih lengkap untuk istilah tertentu."
+
+[layouts_docs_glossary_click_details_before]
+other = "Klik pada"
+
+[layouts_docs_glossary_filter]
+other = "Filter istilah sesuai dengan penandanya"
+
+[layouts_docs_glossary_select_all]
+other = "Pilih semua"
+
+[layouts_docs_partials_feedback_improvement]
+other = "beri saran perbaikan"
+
+[layouts_docs_partials_feedback_issue]
+other = "Buat isu di repositori GitHub jika kamu ingin "
+
+[layouts_docs_partials_feedback_or]
+other = "atau"
+
+[layouts_docs_partials_feedback_problem]
+other = "laporkan problem"
+
+[layouts_docs_partials_feedback_thanks]
+other = "Terima kasih atas masukannya. Jika kamu mempunyai pertanyaan yang spesifik terkait bagaimana menggunakan Kubernetes, tanyakanlah di "
+
+[layouts_docs_search_fetching]
+other = "Mengambil hasil..."
+
+[main_by]
+other = "oleh"
+
+[main_cncf_project]
+other = """Kami merupakan proyek yang lulus dari CNCF"""
+
+[main_community_explore]
+other = "Jelajahi komunitas"
+
+[main_contribute]
+other = "Bantu"
+
+[main_copyright_notice]
+other = """Linux Foundation ®. Hak cipta dilindungi. Linux Foundation telah mendaftarkan merek dagang dan pengunaannya. Perinciannya bisa dilihat pada halaman penggunaan merek dagang"""
+
+[main_documentation_license]
+other = """Para Pencipta Kubernetes | Dokumentasi didistribusikan di bawah CC BY 4.0"""
+
+[main_github_invite]
+other = "Tertarik untuk mengulik kode dari Kubernetes?"
+
+[main_github_view_on]
+other = "Lihat di GitHub"
+
+[main_kubernetes_features]
+other = "Fitur Kubernetes"
+
+[main_kubeweekly_baseline]
+other = "Tertarik untuk mendapatkan info terbaru tentang Kubernetes? Daftarkan dirimu ke KubeWeekly."
+
+[main_kubernetes_past_link]
+other = "Lihat buletin edisi sebelumnya"
+
+[main_kubeweekly_signup]
+other = "Langganan"
+
+[main_page_history]
+other ="Riwayat laman"
+
+[main_page_last_modified_on]
+other = "Halaman diubah terakhir kali pada"
+
+[main_read_about]
+other = "Baca tentang"
+
+[main_read_more]
+other = "Baca lebih lanjut"
+
+[note]
+other = "Catatan:"
+
+[objectives_heading]
+other = "Tujuan"
+
+[options_heading]
+other = "Opsi"
+
+[post_create_issue]
+other = "Buat isu"
+
+[prerequisites_heading]
+other = "Sebelum kamu memulai"
+
+[seealso_heading]
+other = "Lihat juga"
+
+[subscribe_button]
+other = "Langganan"
+
+[synopsis_heading]
+other = "Sinopsis"
+
+[thirdparty_message]
+other = """Bagian ini tertaut ke proyek-proyek pihak ketiga yang menyediakan fungsionalitas yang dibutuhkan oleh Kubernetes. Pencipta proyek Kubernetes tidak bertanggung jawab atas proyek-proyek tersebut. Laman ini mengikuti pedoman website CNCF dengan membuat daftar proyek menurut abjad. Untuk menambakan proyek ke dalam daftar ini, bacalah panduan sebelum mengirimkan perubahan."""
+
+[ui_search_placeholder]
+other = "Cari"
+
+[version_check_mustbe]
+other = "Kubernetes servermu harus dalam versi "
+
+[version_check_mustbeorlater]
+other = "Kubernetes servermu harus dalam versi yang sama atau lebih baru dari "
+
+[version_check_tocheck]
+other = "Untuk melihat versi, tekan "
+
+[version_menu]
+other = "Versi"
+
+[warning]
+other = "Peringatan:"
+
+[whatsnext_heading]
+other = "Selanjutnya"
diff --git a/data/i18n/it/OWNERS b/data/i18n/it/OWNERS
new file mode 100644
index 0000000000..e2a59b255f
--- /dev/null
+++ b/data/i18n/it/OWNERS
@@ -0,0 +1,11 @@
+# Localized strings for Italian.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-it-reviews
+
+approvers:
+- sig-docs-it-owners
+
+labels:
+- language/it
\ No newline at end of file
diff --git a/data/i18n/it/it.toml b/data/i18n/it/it.toml
new file mode 100644
index 0000000000..7c0970dfaa
--- /dev/null
+++ b/data/i18n/it/it.toml
@@ -0,0 +1,197 @@
+# i18n strings for the Italian site.
+# NOTE: Please keep the entries in alphabetical order when editing
+
+[caution]
+other = "Attenzione: "
+
+[cleanup_heading]
+other = "In pulizia"
+
+[community_events_calendar]
+other = "Calendario Eventi"
+
+[community_forum_name]
+other = "Forum"
+
+[community_github_name]
+other = "GitHub"
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[community_youtube_name]
+other = "YouTube"
+
+[deprecation_warning]
+other = " documentazione non è più manutenuta. La versione che stai visualizzando in questo momento è archiviata. Per una versione aggiornata, guarda "
+
+[deprecation_file_warning]
+other = "Deprecata"
+
+[docs_label_browse]
+other = "Sfoglia documenti"
+
+[docs_label_contributors]
+other = "Contributors"
+
+[docs_label_i_am]
+other = "Io Sono..."
+
+[docs_label_users]
+other = "Utenti"
+
+[feedback_heading]
+other = "Feedback"
+
+[feedback_no]
+other = "No"
+
+[feedback_question]
+other = "Questa pagina è stata di aiuto?"
+
+[feedback_yes]
+other = "Sì"
+
+[input_placeholder_email_address]
+other = "indirizzo email"
+
+[latest_version]
+other = "ultima versione."
+
+[layouts_blog_pager_prev]
+other = "<< Precedente"
+
+[layouts_blog_pager_next]
+other = "Succesiva >>"
+
+[layouts_case_studies_list_tell]
+other = "Racconta il tuo use case"
+
+[layouts_docs_glossary_aka]
+other = "Anche noto come"
+
+[layouts_docs_glossary_description]
+other = "Questo glossario vuole essere un aiuto per standardizzare la terminologia usata per Kubernetes. Include termini tecnici che sono specifici di Kubernetes, così come termini più generali che sono utili per dare un contesto."
+
+[layouts_docs_glossary_deselect_all]
+other = "Deseleziona tutto"
+
+[layouts_docs_glossary_click_details_after]
+other = "per il significato di questo termine."
+
+[layouts_docs_glossary_click_details_before]
+other = "Fare click sull'icona"
+
+[layouts_docs_glossary_filter]
+other = "Filtra i termini sulla base delle loro etichette"
+
+[layouts_docs_glossary_select_all]
+other = "Seleziona tutto"
+
+[layouts_docs_partials_feedback_improvement]
+other = "suggerire un miglioramento"
+
+[layouts_docs_partials_feedback_issue]
+other = "Apri un issue sul repository GitHub se vuoi "
+
+[layouts_docs_partials_feedback_or]
+other = "o"
+
+[layouts_docs_partials_feedback_problem]
+other = "riportare un problema"
+
+[layouts_docs_partials_feedback_thanks]
+other = "Grazie per il feedback. Se hai una domanda specifica su Kubernetes, chiedi su"
+
+[layouts_docs_search_fetching]
+other = "Caricando i risultati..."
+
+[main_by]
+other = "di"
+
+[main_cncf_project]
+other = """Kubernetes è un progetto CNCF"""
+
+[main_community_explore]
+other = "Explora la community"
+
+[main_contribute]
+other = "Contribuire"
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. Tutti i diritti riservati. The Linux Foundation ha marchi registrati e utilizza marchi commerciali. Per un elenco dei marchi di Linux Foundation, consulta la pagina sull'utilizzo dei marchi"""
+
+[main_documentation_license]
+other = """Gli autori di Kubernetes | Documentazione distribuita sotto CC BY 4.0"""
+
+[main_edit_this_page]
+other = "Modifica questa pagina"
+
+[main_github_create_an_issue]
+other = "Crea un issue"
+
+[main_github_invite]
+other = "Sei interessato a contribuire a Kubernetes?"
+
+[main_github_view_on]
+other = "Visualizza su GitHub"
+
+[main_kubernetes_features]
+other = "Caratteristiche di Kubernetes"
+
+[main_kubeweekly_baseline]
+other = "Sei interessato a ricevere le ultime notizie su Kubernetes? Registrati alla newsletter KubeWeekly."
+
+[main_kubernetes_past_link]
+other = "Vedi le precedenti mail della newsletter"
+
+[main_kubeweekly_signup]
+other = "Iscriviti"
+
+[main_page_history]
+other = "Storico della Pagina"
+
+[main_page_last_modified_on]
+other = "Ultima modifica alla pagina"
+
+[main_read_about]
+other = "Leggi"
+
+[main_read_more]
+other = "Leggi di più"
+
+[note]
+other = "Nota:"
+
+[objectives_heading]
+other = "Obbiettivi"
+
+[prerequisites_heading]
+other = "Prima di cominciare"
+
+[subscribe_button]
+other = "Iscriviti"
+
+[ui_search_placeholder]
+other = "Cerca"
+
+[version_check_mustbe]
+other = "La tua installazione Kubernetes deve avere la versione "
+
+[version_check_mustbeorlater]
+other = "La tua installazione Kubernetes deve avere almeno la versione "
+
+[version_check_tocheck]
+other = "Per verificare la versione, esegui "
+
+[warning]
+other = "Attenzione:"
+
+[whatsnext_heading]
+other = "Voci correlate"
diff --git a/data/i18n/ja/OWNERS b/data/i18n/ja/OWNERS
new file mode 100644
index 0000000000..c8da00076d
--- /dev/null
+++ b/data/i18n/ja/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Japanese.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-ja-reviews
+
+approvers:
+- sig-docs-ja-owners
+
+labels:
+- language/ja
diff --git a/data/i18n/ja/ja.toml b/data/i18n/ja/ja.toml
new file mode 100644
index 0000000000..a7a103f435
--- /dev/null
+++ b/data/i18n/ja/ja.toml
@@ -0,0 +1,203 @@
+# i18n strings for the English (main) site.
+# NOTE: Please keep the entries in alphabetical order when editing
+
+[caution]
+other = "注意:"
+
+[cleanup_heading]
+other = "クリーンアップ"
+
+[community_events_calendar]
+other = "イベントカレンダー"
+
+[community_forum_name]
+other = "フォーラム"
+
+[community_github_name]
+other = "GitHub"
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[community_youtube_name]
+other = "YouTube"
+
+[deprecation_file_warning]
+other = "廃止予定"
+
+[deprecation_title]
+other = "現在表示しているのは、次のバージョン向けのドキュメントです。Kubernetesバージョン:"
+
+[deprecation_warning]
+other = " のドキュメントは積極的にメンテナンスされていません。現在表示されているバージョンはスナップショットです。最新のドキュメントはこちらです: "
+
+[docs_label_browse]
+other = "ドキュメントの参照"
+
+[docs_label_contributors]
+other = "コントリビューター"
+
+[docs_label_i_am]
+other = "私は..."
+
+[docs_label_users]
+other = "ユーザー"
+
+[feedback_heading]
+other = "フィードバック"
+
+[feedback_no]
+other = "いいえ"
+
+[feedback_question]
+other = "このページは役に立ちましたか?"
+
+[feedback_yes]
+other = "はい"
+
+[input_placeholder_email_address]
+other = "メールアドレス"
+
+[latest_version]
+other = "最新バージョン"
+
+[layouts_blog_pager_prev]
+other = "<< 前"
+
+[layouts_blog_pager_next]
+other = "次 >>"
+
+[layouts_case_studies_list_tell]
+other = "あなたの話を聞かせてください"
+
+[layouts_docs_glossary_aka]
+other = "またの名を"
+
+[layouts_docs_glossary_description]
+other = "この用語集は、Kubernetesの用語の包括的で標準化されたリストを対象としています。これには、Kubernetesに固有で有用なコンテキストを提供しつつも、より一般的な技術用語が含まれています。"
+
+[layouts_docs_glossary_deselect_all]
+other = "すべての選択を解除"
+
+[layouts_docs_glossary_click_details_after]
+other = "特定の用語の詳細な説明を取得するには、以下のインジケータを使用します。"
+
+[layouts_docs_glossary_click_details_before]
+other = "Click on the" # TODO: Translate me
+
+[layouts_docs_glossary_filter]
+other = "タグに従って用語をフィルタ"
+
+[layouts_docs_glossary_select_all]
+other = "すべてを選択"
+
+[layouts_docs_partials_feedback_improvement]
+other = "改善を提案"
+
+[layouts_docs_partials_feedback_issue]
+other = "Open an issue in the GitHub repo if you want to " # TODO: Translate me
+
+[layouts_docs_partials_feedback_or]
+other = "or" # TODO: Translate me
+
+[layouts_docs_partials_feedback_problem]
+other = "問題を報告する"
+
+[layouts_docs_partials_feedback_thanks]
+other = "Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on" # TODO: Translate me
+
+[layouts_docs_search_fetching]
+other = "結果を取得しています..."
+
+[main_by]
+other = "by"
+
+[main_cncf_project]
+other = """私達はCNCF graduated プロジェクトです"""
+
+[main_community_explore]
+other = "コミュニティを探す"
+
+[main_contribute]
+other = "コントリビュート"
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+
+[main_documentation_license]
+other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+
+[main_edit_this_page]
+other = "ページ編集"
+
+[main_github_invite]
+other = "Kubernetesのコードを編集することに興味がありますか?"
+
+[main_github_create_an_issue]
+other = "Issue作成"
+
+[main_github_view_on]
+other = "GitHubで参照する"
+
+[main_kubernetes_features]
+other = "Kubernetesの機能"
+
+[main_kubeweekly_baseline]
+other = "最新のKubernetesのニュースを受け取りたいですか? KubeWeeklyにサインアップしてください。"
+
+[main_kubernetes_past_link]
+other = "過去のニュースレターを見る"
+
+[main_kubeweekly_signup]
+other = "登録"
+
+[main_page_history]
+other ="ページ履歴"
+
+[main_page_last_modified_on]
+other = "ページの最終更新"
+
+[main_read_about]
+other = "Read about" #other = "について参照する" TODO: Translate me
+
+[main_read_more]
+other = "続きを読む"
+
+[note]
+other = "備考:"
+
+[objectives_heading]
+other = "目標"
+
+[prerequisites_heading]
+other = "始める前に"
+
+[subscribe_button]
+other = "購読する"
+
+[ui_search_placeholder]
+other = "検索"
+
+[version_check_mustbe]
+other = "作業するKubernetesサーバーは次のバージョンである必要があります: "
+
+[version_check_mustbeorlater]
+other = "作業するKubernetesサーバーは次のバージョン以降のものである必要があります: "
+
+[version_check_tocheck]
+other = "バージョンを確認するには次のコマンドを実行してください: "
+
+[version_menu]
+other = "バージョン"
+
+[warning]
+other = "警告:"
+
+[whatsnext_heading]
+other = "次の項目"
diff --git a/data/i18n/ko/OWNERS b/data/i18n/ko/OWNERS
new file mode 100644
index 0000000000..8dfae5d770
--- /dev/null
+++ b/data/i18n/ko/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Korean.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-ko-reviews
+
+approvers:
+- sig-docs-ko-owners
+
+labels:
+- language/ko
diff --git a/data/i18n/ko/ko.toml b/data/i18n/ko/ko.toml
new file mode 100644
index 0000000000..f79f689b88
--- /dev/null
+++ b/data/i18n/ko/ko.toml
@@ -0,0 +1,232 @@
+# i18n strings for the Korean translation.
+# NOTE: Please keep the entries in alphabetical order when editing
+[announcement_title]
+other = "Black lives matter."
+
+[announcement_message]
+other = "우리는 흑인 공동체를 지지합니다.
인종차별은 용납될 수 없습니다.
인종차별은 [쿠버네티스 프로젝트의 핵심 가치](https://git.k8s.io/community/values.md)에 상충되며 우리 공동체는 이를 용인하지 않습니다."
+
+[caution]
+other = "주의:"
+
+[cleanup_heading]
+other = "정리하기"
+
+[community_events_calendar]
+other = "이벤트 캘린더"
+
+[community_forum_name]
+other = "Forum"
+
+[community_github_name]
+other = "GitHub"
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[community_youtube_name]
+other = "YouTube"
+
+[deprecation_title]
+other = "해당 문서의 쿠버네티스 버전:"
+
+[deprecation_warning]
+other = " 문서는 더 이상 적극적으로 관리되지 않음. 현재 보고있는 문서는 정적 스냅샷임. 최신 문서를 위해서는, 다음을 참고. "
+
+[deprecation_file_warning]
+other = "사용 중단됨(deprecated)"
+
+[docs_label_browse]
+other = "문서 둘러보기"
+
+[docs_label_contributors]
+other = "컨트리뷰터"
+
+[docs_label_i_am]
+other = "나는..."
+
+[docs_label_users]
+other = "사용자"
+
+[docs_version_current]
+other = "(현재 문서)"
+
+[docs_version_latest_heading]
+other = "최신 버전"
+
+[docs_version_other_heading]
+other = "이전 버전"
+
+[error_404_were_you_looking_for]
+other = "무엇과 관련된 정보를 찾으시나요?"
+
+[examples_heading]
+other = "예시"
+
+[feedback_heading]
+other = "피드백"
+
+[feedback_question]
+other = "이 페이지가 도움이 되었나요?"
+
+[feedback_yes]
+other = "네"
+
+[feedback_no]
+other = "아니요"
+
+[input_placeholder_email_address]
+other = "전자 우편 주소"
+
+[latest_version]
+other = "최신 버전."
+
+[layouts_blog_pager_prev]
+other = "<< 이전"
+
+[layouts_blog_pager_next]
+other = "다음 >>"
+
+[layouts_case_studies_list_tell]
+other = "당신의 이야기를 들려주세요."
+
+[layouts_docs_glossary_aka]
+other = "별칭"
+
+[layouts_docs_glossary_description]
+other = "이 용어집은 쿠버네티스 용어의 종합적이고 표준화된 리스트를 제공한다. 용어집은 K8s 고유의 기술 용어 뿐만 아니라, 맥락을 이해하는데 유용한 더 일반적인 용어도 포함한다. "
+
+[layouts_docs_glossary_deselect_all]
+other = "모두 선택 해제"
+
+[layouts_docs_glossary_click_details_after]
+other = "표시를 클릭하면 각 용어에 대한 더 자세한 설명을 볼 수 있다."
+
+[layouts_docs_glossary_click_details_before]
+other = "다음"
+
+[layouts_docs_glossary_filter]
+other = "태그에 따라 용어 필터링"
+
+[layouts_docs_glossary_select_all]
+other = "모두 선택"
+
+[layouts_docs_partials_feedback_improvement]
+other = "개선 제안이 가능합니다."
+
+[layouts_docs_partials_feedback_issue]
+other = "원한다면 GitHub 리포지터리에 이슈를 열어서"
+
+[layouts_docs_partials_feedback_or]
+other = "또는"
+
+[layouts_docs_partials_feedback_problem]
+other = "문제 리포트"
+
+[layouts_docs_partials_feedback_thanks]
+other = "피드백 감사합니다. 쿠버네티스 사용 방법에 대해서 구체적이고 답변 가능한 질문이 있다면, 다음 링크에서 질문하십시오."
+
+[layouts_docs_search_fetching]
+other = "결과를 가져오는 중.."
+
+[main_by]
+other = ", 다음 변경에 의해서:"
+
+[main_cncf_project]
+other = """쿠버네티스는 CNCF graduated 프로젝트입니다."""
+
+[main_community_explore]
+other = "커뮤니티 둘러보기"
+
+[main_contribute]
+other = "기여하기"
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+
+[main_documentation_license]
+other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+
+[main_github_invite]
+other = "쿠버네티스 핵심 코드 베이스를 살펴보는데 관심이 있으십니까?"
+
+[main_github_view_on]
+other = "GitHub에서 보기"
+
+[main_kubernetes_features]
+other = "쿠버네티스 기능"
+
+[main_kubeweekly_baseline]
+other = "최신 쿠버네티스 뉴스 수신에 관심이 있으십니까? KubeWeekly를 신청하세요."
+
+[main_kubernetes_past_link]
+other = "과거 뉴스레터 보기"
+
+[main_kubeweekly_signup]
+other = "구독하기"
+
+[main_page_history]
+other ="페이지 변경 이력"
+
+[main_page_last_modified_on]
+other = "최종 수정일시"
+
+[main_read_about]
+other = "읽어 보기"
+
+[main_read_more]
+other = "더 읽기"
+
+[note]
+other = "참고:"
+
+[objectives_heading]
+other = "목적"
+
+[options_heading]
+other = "옵션"
+
+[post_create_issue]
+other = "이슈 생성"
+
+[prerequisites_heading]
+other = "시작하기 전에"
+
+[seealso_heading]
+other = "더 보기"
+
+[subscribe_button]
+other = "구독"
+
+[synopsis_heading]
+other = "시놉시스"
+
+[thirdparty_message]
+other = """이 섹션은 쿠버네티스에 필요한 기능을 제공하는 써드파티 프로젝트와 관련이 있다. 쿠버네티스 프로젝트 작성자는 써드파티 프로젝트에 책임이 없다. 이 페이지는 CNCF 웹사이트 가이드라인에 따라 프로젝트를 알파벳 순으로 나열한다. 이 목록에 프로젝트를 추가하려면 변경사항을 제출하기 전에 콘텐츠 가이드를 읽어본다."""
+
+[ui_search_placeholder]
+other = "검색하기"
+
+[version_check_mustbe]
+other = "쿠버네티스 서버의 버전은 다음과 같아야 함. 버전: "
+
+[version_check_mustbeorlater]
+other = "쿠버네티스 서버의 버전은 다음과 같거나 더 높아야 함. 버전: "
+
+[version_check_tocheck]
+other = "버전 확인을 위해서, 다음 커맨드를 실행 "
+
+[version_menu]
+other = "버전"
+
+[warning]
+other = "경고:"
+
+[whatsnext_heading]
+other = "다음 내용"
diff --git a/data/i18n/nl/nl.toml b/data/i18n/nl/nl.toml
new file mode 100644
index 0000000000..a0aa6faee4
--- /dev/null
+++ b/data/i18n/nl/nl.toml
@@ -0,0 +1,197 @@
+# i18n strings for the Dutch (main) site.
+
+[deprecation_warning]
+other = " documentatie wordt niet langer actief onderhouden. De versie die u momenteel bekijkt is een statische momentopname. Zie voor bijgewerkte documentatie "
+
+[deprecation_file_warning]
+other = "Verouderd"
+
+[objectives_heading]
+other = "Doelen"
+
+[cleanup_heading]
+other = "Opschonen"
+
+[prerequisites_heading]
+other = "Voordat je begint"
+
+[whatsnext_heading]
+other = "Wat nu volgt"
+
+[feedback_heading]
+other = "Feedback"
+
+[feedback_question]
+other = "Was deze pagina nuttig?"
+
+[feedback_yes]
+other = "Ja"
+
+[feedback_no]
+other = "Nee"
+
+[latest_version]
+other = "laatste versie."
+
+[version_check_mustbe]
+other = "Je Kubernetes server moet op de volgende versie zitten "
+
+[version_check_mustbeorlater]
+other = "Je Kubernetes server moet op de volgende of latere versie zitten "
+
+[version_check_tocheck]
+other = "Voer het volgende in om de versie te controleren "
+
+[caution]
+other = "Voorzichtig:"
+
+[note]
+other = "Opmerking:"
+
+[warning]
+other = "Opletten:"
+
+[main_read_about]
+other = "Lees over"
+
+[main_read_more]
+other = "Lees meer"
+
+[main_github_invite]
+other = "Geïnteresseerd om aan de core Kubernetes code base te werken?"
+
+[main_github_view_on]
+other = "Bekijk op GitHub"
+
+[main_github_create_an_issue]
+other = "Maak een Issue"
+
+[main_community_explore]
+other = "Verken de community"
+
+[main_kubernetes_features]
+other = "Kubernetes functies"
+
+[main_cncf_project]
+other = """We zijn een CNCF project"""
+
+[main_kubeweekly_baseline]
+other = "Wil je het laatste Kubernates nieuws ontvangen? Abonneer je op KubeWeekly."
+
+[main_kubernetes_past_link]
+other = "Eerdere nieuwsbrieven bekijken"
+
+[main_kubeweekly_signup]
+other = "Abonneren"
+
+[main_contribute]
+other = "Bijdragen"
+
+[main_edit_this_page]
+other = "Bewerk deze pagina"
+
+[main_page_history]
+other ="Pagina geschiedenis"
+
+[main_page_last_modified_on]
+other = "Pagina laatst gewijzigd op"
+
+[main_by]
+other = "door"
+
+[main_documentation_license]
+other = """De Kubernetes auteurs | Documentatie verspreid onder CC BY 4.0"""
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. Alle rechten voorbehouden. De Linux Foundation heeft handelsmerken geregistreerd en handelsmerken. gebruikt Voor een lijst met handelsmerken van The Linux Foundation raadpleegt u onzeHandelsmerkgebruikspagina"""
+
+# Labels for the docs portal home page.
+[docs_label_browse]
+other = "Bladeren door documenten"
+
+[docs_label_contributors]
+other = "Bijdragers"
+
+[docs_label_users]
+other = "Gebruikers"
+
+[docs_label_i_am]
+other = "IK BEN..."
+
+# layouts > blog > pager
+
+[layouts_blog_pager_prev]
+other = "<< Vorige"
+
+[layouts_blog_pager_next]
+other = "Volgende >>"
+
+# layouts > blog > list
+
+[layouts_case_studies_list_tell]
+other = "Vertel jouw verhaal"
+
+# layouts > docs > glossary
+
+[layouts_docs_glossary_description]
+other = "Deze verklarende woordenlijst is bedoeld als een uitgebreide, gestandaardiseerde lijst van Kubernetes-terminologie. Het bevat technische termen die specifiek zijn voor K8s, evenals meer algemene termen die een bruikbare context bieden."
+
+[layouts_docs_glossary_filter]
+other = "Filter termen op basis van hun tags"
+
+[layouts_docs_glossary_select_all]
+other = "Alles selecteren"
+
+[layouts_docs_glossary_deselect_all]
+other = "Alles deselecteren"
+
+[layouts_docs_glossary_aka]
+other = "Ook bekend als"
+
+[layouts_docs_glossary_click_details_before]
+other = "Klik op de"
+
+[layouts_docs_glossary_click_details_after]
+other = "onderstaande indicatoren om een langere verklaring voor een bepaalde term te krijgen."
+
+# layouts > docs > search
+
+[layouts_docs_search_fetching]
+other = "Resultaten ophalen.."
+
+# layouts > partial > feedback
+
+[layouts_docs_partials_feedback_thanks]
+other = "Bedankt voor de feedback. Als je een specifieke vraag hebt, die beantwoord moet worden, over het gebruik van Kubernetes, vraag het dan op"
+
+[layouts_docs_partials_feedback_issue]
+other = "Open een probleem in de GitHub-repo "
+
+[layouts_docs_partials_feedback_problem]
+other = "meld een probleem"
+
+[layouts_docs_partials_feedback_or]
+other = "of"
+
+[layouts_docs_partials_feedback_improvement]
+other = "doe een suggestie voor een verbetering"
+
+# Community links
+[community_twitter_name]
+other = "Twitter"
+[community_github_name]
+other = "GitHub"
+[community_slack_name]
+other = "Slack"
+[community_stack_overflow_name]
+other = "Stack Overflow"
+[community_forum_name]
+other = "Forum"
+[community_events_calendar]
+other = "Evenementenkalender"
+[community_youtube_name]
+other = "YouTube"
+
+# UI elements
+[ui_search_placeholder]
+other = "Zoeken"
diff --git a/data/i18n/no/no.toml b/data/i18n/no/no.toml
new file mode 100644
index 0000000000..ff786d7d35
--- /dev/null
+++ b/data/i18n/no/no.toml
@@ -0,0 +1,68 @@
+# i18n strings for the Norwegian translation.
+
+[main_read_about]
+other = "Les om"
+
+[main_read_more]
+other = "Les mer"
+
+[main_github_invite]
+other = "Interessert kode i Kubernetes?"
+
+[main_github_view_on]
+other = "Åpne på GitHub"
+
+[main_github_create_an_issue]
+other = "Opprett en issue"
+
+[main_community_explore]
+other = "Utforsk folkene bak Kubernetes"
+
+[main_kubernetes_features]
+other = "Egenskaper i Kubernetes"
+
+[main_cncf_project]
+other = """Vi er et CNCF-prosjekt"""
+
+[main_contribute]
+other = "Bidra"
+
+[main_edit_this_page]
+other = "Endre denne siden"
+
+[main_page_history]
+other ="Side-historikk"
+
+[main_page_last_modified_on]
+other = "Side sist endret"
+
+[main_by]
+other = "av"
+
+[main_documentation_license]
+other = """Kubernetes-forfatterene | Dokumentasjonen er utgitt med CC BY 4.0-lisens"""
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. Alle retter er reservert. The Linux Foundation har registrerte varemerker. For en oversikt, se Bruk av varemerker"""
+
+# Labels for the docs portal home page.
+[docs_label_browse]
+other = "All dokumentasjon"
+
+# Community links
+[community_twitter_name]
+other = "Twitter"
+[community_github_name]
+other = "GitHub"
+[community_slack_name]
+other = "Slack"
+[community_stack_overflow_name]
+other = "Stack Overflow"
+[community_forum_name]
+other = "Forum"
+[community_events_calendar]
+other = "Kalender"
+
+# UI elements
+[ui_search_placeholder]
+other = "Søk"
\ No newline at end of file
diff --git a/data/i18n/pl/OWNERS b/data/i18n/pl/OWNERS
new file mode 100644
index 0000000000..020de30383
--- /dev/null
+++ b/data/i18n/pl/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Polish.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-pl-reviews
+
+approvers:
+- sig-docs-pl-owners
+
+labels:
+- language/pl
diff --git a/data/i18n/pl/pl.toml b/data/i18n/pl/pl.toml
new file mode 100644
index 0000000000..9621301a49
--- /dev/null
+++ b/data/i18n/pl/pl.toml
@@ -0,0 +1,197 @@
+# i18n strings for the Polish site.
+# NOTE: Please keep the entries in alphabetical order when editing
+
+[caution]
+other = "Ostrzeżenie:"
+
+[cleanup_heading]
+other = "Sprzątamy po sobie"
+
+[community_events_calendar]
+other = "Kalendarz wydarzeń"
+
+[community_forum_name]
+other = "Forum"
+
+[community_github_name]
+other = "GitHub"
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[community_youtube_name]
+other = "YouTube"
+
+[deprecation_warning]
+other = " dokumentacja nie jest już aktualizowana. Wyświetlona jest wersja archiwalna. Po aktualną dokumentację zajrzyj na"
+
+[deprecation_file_warning]
+other = "Przestarzały"
+
+[docs_label_browse]
+other = "Przeglądaj dokumentację"
+
+[docs_label_contributors]
+other = "Współautorzy"
+
+[docs_label_i_am]
+other = "Jestem..."
+
+[docs_label_users]
+other = "Użytkownicy"
+
+[feedback_heading]
+other = "Twoja opinia"
+
+[feedback_no]
+other = "Nie"
+
+[feedback_question]
+other = "Czy ta strona była przydatna?"
+
+[feedback_yes]
+other = "Tak"
+
+[input_placeholder_email_address]
+other = "adres e-mail"
+
+[latest_version]
+other = "to najnowsza wersja."
+
+[layouts_blog_pager_prev]
+other = "<< Poprzedni"
+
+[layouts_blog_pager_next]
+other = "Następny >>"
+
+[layouts_case_studies_list_tell]
+other = "Opowiedz swoją historię"
+
+[layouts_docs_glossary_aka]
+other = "Znany też jako"
+
+[layouts_docs_glossary_description]
+other = "Celem tego słownika jest przedstawienie wszechstronnej, ujednoliconej listy terminologii związanej z projektem Kubernetes. Słownik zawiera terminy specyficzne dla Kubernetesa, a także pojęcia bardziej ogólne, umożliwiające lepsze zrozumienie kontekstu."
+
+[layouts_docs_glossary_deselect_all]
+other = "Odznacz wszystko"
+
+[layouts_docs_glossary_click_details_after]
+other = "po dokładniejsze wytłumaczenie."
+
+[layouts_docs_glossary_click_details_before]
+other = "Kliknij w"
+
+[layouts_docs_glossary_filter]
+other = "Znajdź pojęcia według etykiet"
+
+[layouts_docs_glossary_select_all]
+other = "Zaznacz wszystko"
+
+[layouts_docs_partials_feedback_improvement]
+other = "zaproponować poprawkę"
+
+[layouts_docs_partials_feedback_issue]
+other = "Otwórz zgłoszenie w repozytorium GitHub, jeśli chcesz "
+
+[layouts_docs_partials_feedback_or]
+other = "lub"
+
+[layouts_docs_partials_feedback_problem]
+other = "zgłosić problem"
+
+[layouts_docs_partials_feedback_thanks]
+other = "Dziękujemy za informację zwrotną. Jeśli masz konkretne pytanie dotyczące użycia Kubernetesa, odwiedź"
+
+[layouts_docs_search_fetching]
+other = "Pobieram wyniki.."
+
+[main_by]
+other = "przez"
+
+[main_cncf_project]
+other = """Nasz projekt jest uznany przez CNCF za dojrzały"""
+
+[main_community_explore]
+other = "Poznaj społeczność"
+
+[main_contribute]
+other = "Wnieś swój wkład"
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+
+[main_documentation_license]
+other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+
+[main_edit_this_page]
+other = "Edytuj stronę"
+
+[main_github_create_an_issue]
+other = "Zgłoś problem"
+
+[main_github_invite]
+other = "Chcesz zacząć współtworzyć kod Kubernetesa?"
+
+[main_github_view_on]
+other = "Zajrzyj na GitHub"
+
+[main_kubernetes_features]
+other = "Funkcjonalności Kubernetesa"
+
+[main_kubeweekly_baseline]
+other = "Zapisz się na KubeWeekly, jeśli jesteś zainteresowany najnowszymi wiadomościami o Kubernetesie."
+
+[main_kubernetes_past_link]
+other = "Poprzednie newslettery"
+
+[main_kubeweekly_signup]
+other = "Zapisz się"
+
+[main_page_history]
+other ="Historia strony"
+
+[main_page_last_modified_on]
+other = "Ostatnia modyfikacja strony"
+
+[main_read_about]
+other = "Przeczytaj o"
+
+[main_read_more]
+other = "Przeczytaj więcej"
+
+[note]
+other = "Informacja:"
+
+[objectives_heading]
+other = "Cele"
+
+[prerequisites_heading]
+other = "Nim zaczniesz"
+
+[subscribe_button]
+other = "Subskrybuj"
+
+[ui_search_placeholder]
+other = "Szukaj"
+
+[version_check_mustbe]
+other = "Twój serwer Kubernetes musi być w wersji "
+
+[version_check_mustbeorlater]
+other = "Twój serwer Kubernetes musi być co najmniej w wersji "
+
+[version_check_tocheck]
+other = "Aby sprawdzić wersję, wpisz "
+
+[warning]
+other = "Uwaga:"
+
+[whatsnext_heading]
+other = "Następne:"
diff --git a/data/i18n/pt/OWNERS b/data/i18n/pt/OWNERS
new file mode 100644
index 0000000000..6c71975765
--- /dev/null
+++ b/data/i18n/pt/OWNERS
@@ -0,0 +1,11 @@
+# Localized strings for Portuguese.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-pt-reviews
+
+approvers:
+- sig-docs-pt-owners
+
+labels:
+- language/pt
diff --git a/data/i18n/pt/pt-br.toml b/data/i18n/pt/pt-br.toml
new file mode 100644
index 0000000000..3f55a665b3
--- /dev/null
+++ b/data/i18n/pt/pt-br.toml
@@ -0,0 +1,240 @@
+ # i18n strings for the Portuguese (main) site.
+[caution]
+other = "Cuidado:"
+
+[cleanup_heading]
+other = "Limpando"
+
+[community_events_calendar]
+other = "Calendário de Eventos"
+
+[community_forum_name]
+other = "Fórum"
+
+[community_github_name]
+other = "GitHub"
+
+# Community links
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[deprecation_file_warning]
+other = "Descontinuado"
+
+[deprecation_title]
+other = "Você está vendo a documentação do Kubernetes versão:"
+
+[deprecation_warning]
+other = " a documentação não é mais mantida ativamente. A versão que você está visualizando no momento é uma captura instantânea estática. Para obter documentação atualizada, consulte "
+
+[docs_label_browse]
+other = "Procurar documentos"
+
+[docs_label_contributors]
+other = "Colaboradores"
+
+[docs_label_i_am]
+other = "Eu sou..."
+
+[docs_label_users]
+other = "Usuários"
+
+[docs_version_current]
+other = "(esta documentação)"
+
+[docs_version_latest_heading]
+other = "Versão mais recente"
+
+[docs_version_other_heading]
+other = "Versões mais antigas"
+
+[error_404_were_you_looking_for]
+other = "Talvez você estivesse procurando por:"
+
+[examples_heading]
+other = "Exemplos"
+
+[feedback_heading]
+other = "Comentários"
+
+[feedback_no]
+other = "Não"
+
+[feedback_question]
+other = "Esta página foi útil?"
+
+[feedback_yes]
+other = "Sim"
+
+[input_placeholder_email_address]
+other = "endereço de e-mail"
+
+[latest_version]
+other = "última versão."
+
+[layouts_blog_pager_next]
+other = "Próximo >>"
+
+[layouts_blog_pager_prev]
+other = "<< Anterior"
+
+[layouts_case_studies_list_tell]
+other = "Conte seu caso"
+
+[layouts_docs_glossary_aka]
+other = "Também conhecido como"
+
+[layouts_docs_glossary_click_details_after]
+other = "indicadores abaixo para uma maior explicação sobre um termo em particular."
+
+[layouts_docs_glossary_click_details_before]
+other = "Clique nos"
+
+[layouts_docs_glossary_description]
+other = "Este glossário pretende ser uma lista padronizada e abrangente da terminologia do Kubernetes. Inclui termos técnicos específicos dos K8s, além de termos mais gerais que fornecem um contexto útil."
+
+[layouts_docs_glossary_deselect_all]
+other = "Desmarcar tudo"
+
+[layouts_docs_glossary_filter]
+other = "Filtrar termos de acordo com suas tags"
+
+[layouts_docs_glossary_select_all]
+other = "Selecionar tudo"
+
+[layouts_docs_partials_feedback_improvement]
+other = "sugerir uma melhoria"
+
+[layouts_docs_partials_feedback_issue]
+other = "Abra um bug no repositório do GitHub se você deseja "
+
+[layouts_docs_partials_feedback_or]
+other = "ou"
+
+[layouts_docs_partials_feedback_problem]
+other = "reportar um problema"
+
+[layouts_docs_partials_feedback_thanks]
+other = "Obrigado pelo feedback. Se você tiver uma pergunta específica sobre como utilizar o Kubernetes, faça em"
+
+[layouts_docs_search_fetching]
+other = "Buscando resultados.."
+
+# Main page localization
+
+[main_by]
+other = "por"
+
+[main_cncf_project]
+other = """Nós somos uma CNCF projeto graduado"""
+
+[main_community_explore]
+other = "Explore a comunidade"
+
+[main_contribute]
+other = "Contribuir"
+
+[main_copyright_notice]
+other = """A Fundação Linux ®. Todos os direitos reservados. A Linux Foundation tem marcas registradas e usa marcas registradas. Para uma lista de marcas registradas da The Linux Foundation, por favor, veja nossa Página de uso de marca registrada"""
+
+[main_documentation_license]
+other = """Os autores do Kubernetes | Documentação Distribuída sob CC BY 4.0"""
+
+[main_edit_this_page]
+other = "Edite essa página"
+
+[main_github_create_an_issue]
+other = "Abra um bug"
+
+[main_github_invite]
+other = "Interessado em mergulhar na base de código do Kubernetes?"
+
+[main_github_view_on]
+other = "Veja no Github"
+
+[main_kubernetes_features]
+other = "Recursos do Kubernetes"
+
+[main_kubernetes_past_link]
+other = "Veja boletins passados"
+
+[main_kubeweekly_baseline]
+other = "Interessado em receber as últimas novidades sobre Kubernetes? Inscreva-se no KubeWeekly."
+
+[main_kubeweekly_signup]
+other = "Se inscrever"
+
+[main_page_history]
+other ="História da página"
+
+[main_page_last_modified_on]
+other = "Última modificação da página em"
+
+[main_read_about]
+other = "Ler sobre"
+
+[main_read_more]
+other = "Consulte Mais informação"
+
+# Miscellaneous
+
+[note]
+other = "Nota:"
+
+[objectives_heading]
+other = "Objetivos"
+
+[options_heading]
+other = "Opções"
+
+[post_create_issue]
+other = "Abra um bug"
+
+[prerequisites_heading]
+other = "Antes de você começar"
+
+[subscribe_button]
+other = "Se inscrever"
+
+[thirdparty_message]
+other = """Esta seção tem links para projetos de terceiros que fornecem a funcionalidade exigida pelo Kubernetes. Os autores do projeto Kubernetes não são responsáveis por esses projetos. Esta página obedece as diretrizes de conteúdo do site CNCF, listando os itens em ordem alfabética. Para adicionar um projeto a esta lista, leia o guia de conteúdo antes de enviar sua alteração."""
+
+[ui_search_placeholder]
+other = "Procurar"
+
+[version_check_mustbeorlater]
+other = "O seu servidor Kubernetes deve estar em ou depois da versão "
+
+[version_check_mustbe]
+other = "Seu servidor Kubernetes deve ser versão"
+
+[version_check_tocheck]
+other = "Para verificar a versão, digite "
+
+[version_menu]
+other = "Versões"
+
+[warning]
+other = "Aviso:"
+
+[whatsnext_heading]
+other = "Qual é o próximo"
+
+[print_printable_section]
+other = "Essa é a versão completa de impressão dessa seção"
+
+[print_click_to_print]
+other = "Clique aqui para imprimir"
+
+[print_show_regular]
+other = "Retornar à visualização normal"
+
+[print_entire_section]
+other = "Imprimir toda essa seção"
diff --git a/data/i18n/pt/pt.toml b/data/i18n/pt/pt.toml
new file mode 100644
index 0000000000..808c82679d
--- /dev/null
+++ b/data/i18n/pt/pt.toml
@@ -0,0 +1,225 @@
+ # i18n strings for the Portuguese (main) site.
+[caution]
+other = "Cuidado:"
+
+[cleanup_heading]
+other = "Limpando"
+
+[community_events_calendar]
+other = "Calendário de Eventos"
+
+[community_forum_name]
+other = "Fórum"
+
+[community_github_name]
+other = "GitHub"
+
+# Community links
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[deprecation_file_warning]
+other = "Descontinuado"
+
+[deprecation_title]
+other = "Você está vendo a documentação do Kubernetes versão:"
+
+[deprecation_warning]
+other = " a documentação não é mais mantida ativamente. A versão que você está visualizando no momento é uma captura instantânea estática. Para obter documentação atualizada, consulte "
+
+[docs_label_browse]
+other = "Procurar documentos"
+
+[docs_label_contributors]
+other = "Colaboradores"
+
+[docs_label_i_am]
+other = "Eu sou..."
+
+[docs_label_users]
+other = "Usuários"
+
+[docs_version_current]
+other = "(esta documentação)"
+
+[docs_version_latest_heading]
+other = "Versão mais recente"
+
+[docs_version_other_heading]
+other = "Versões mais antigas"
+
+[error_404_were_you_looking_for]
+other = "Talvez você estivesse procurando por:"
+
+[examples_heading]
+other = "Exemplos"
+
+[feedback_heading]
+other = "Comentários"
+
+[feedback_no]
+other = "Não"
+
+[feedback_question]
+other = "Esta página foi útil?"
+
+[feedback_yes]
+other = "Sim"
+
+[input_placeholder_email_address]
+other = "endereço de e-mail"
+
+[latest_version]
+other = "última versão."
+
+[layouts_blog_pager_next]
+other = "Próximo >>"
+
+[layouts_blog_pager_prev]
+other = "<< Anterior"
+
+[layouts_case_studies_list_tell]
+other = "Conte seu caso"
+
+[layouts_docs_glossary_aka]
+other = "Também conhecido como"
+
+[layouts_docs_glossary_click_details_after]
+other = "indicadores abaixo para uma maior explicação sobre um termo em particular."
+
+[layouts_docs_glossary_click_details_before]
+other = "Clique nos"
+
+[layouts_docs_glossary_description]
+other = "Este glossário pretende ser uma lista padronizada e abrangente da terminologia do Kubernetes. Inclui termos técnicos específicos dos K8s, além de termos mais gerais que fornecem um contexto útil."
+
+[layouts_docs_glossary_deselect_all]
+other = "Desmarcar tudo"
+
+[layouts_docs_glossary_filter]
+other = "Filtrar termos de acordo com suas tags"
+
+[layouts_docs_glossary_select_all]
+other = "Selecionar tudo"
+
+[layouts_docs_partials_feedback_improvement]
+other = "sugerir uma melhoria"
+
+[layouts_docs_partials_feedback_issue]
+other = "Abra um bug no repositório do GitHub se você deseja "
+
+[layouts_docs_partials_feedback_or]
+other = "ou"
+
+[layouts_docs_partials_feedback_problem]
+other = "reportar um problema"
+
+[layouts_docs_partials_feedback_thanks]
+other = "Obrigado pelo feedback. Se você tiver uma pergunta específica sobre como utilizar o Kubernetes, faça em"
+
+[layouts_docs_search_fetching]
+other = "Buscando resultados.."
+
+# Main page localization
+
+[main_by]
+other = "por"
+
+[main_cncf_project]
+other = """Nós somos uma CNCF projeto graduado"""
+
+[main_community_explore]
+other = "Explore a comunidade"
+
+[main_contribute]
+other = "Contribuir"
+
+[main_copyright_notice]
+other = """A Fundação Linux ®. Todos os direitos reservados. A Linux Foundation tem marcas registradas e usa marcas registradas. Para uma lista de marcas registradas da The Linux Foundation, por favor, veja nossa Página de uso de marca registrada"""
+
+[main_documentation_license]
+other = """Os autores do Kubernetes | Documentação Distribuída sob CC BY 4.0"""
+
+[main_edit_this_page]
+other = "Edite essa página"
+
+[main_github_create_an_issue]
+other = "Abra um bug"
+
+[main_github_invite]
+other = "Interessado em mergulhar na base de código do Kubernetes?"
+
+[main_github_view_on]
+other = "Veja no Github"
+
+[main_kubernetes_features]
+other = "Recursos do Kubernetes"
+
+[main_kubernetes_past_link]
+other = "Veja boletins passados"
+
+[main_kubeweekly_baseline]
+other = "Interessado em receber as últimas novidades sobre Kubernetes? Inscreva-se no KubeWeekly."
+
+[main_kubeweekly_signup]
+other = "Se inscrever"
+
+[main_page_history]
+other ="História da página"
+
+[main_page_last_modified_on]
+other = "Última modificação da página em"
+
+[main_read_about]
+other = "Ler sobre"
+
+[main_read_more]
+other = "Consulte Mais informação"
+
+# Miscellaneous
+
+[note]
+other = "Nota:"
+
+[objectives_heading]
+other = "Objetivos"
+
+[options_heading]
+other = "Opções"
+
+[post_create_issue]
+other = "Abra um bug"
+
+[prerequisites_heading]
+other = "Antes de você começar"
+
+[subscribe_button]
+other = "Se inscrever"
+
+[thirdparty_message]
+other = """Esta seção tem links para projetos de terceiros que fornecem a funcionalidade exigida pelo Kubernetes. Os autores do projeto Kubernetes não são responsáveis por esses projetos. Esta página obedece as diretrizes de conteúdo do site CNCF, listando os itens em ordem alfabética. Para adicionar um projeto a esta lista, leia o guia de conteúdo antes de enviar sua alteração."""
+
+[ui_search_placeholder]
+other = "Procurar"
+
+[version_check_mustbeorlater]
+other = "O seu servidor Kubernetes deve estar em ou depois da versão "
+
+[version_check_mustbe]
+other = "Seu servidor Kubernetes deve ser versão"
+
+[version_check_tocheck]
+other = "Para verificar a versão, digite "
+
+[warning]
+other = "Aviso:"
+
+[whatsnext_heading]
+other = "Qual é o próximo"
diff --git a/data/i18n/ru/OWNERS b/data/i18n/ru/OWNERS
new file mode 100644
index 0000000000..2c3a37935b
--- /dev/null
+++ b/data/i18n/ru/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Russian.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-ru-reviews
+
+approvers:
+- sig-docs-ru-owners
+
+labels:
+- language/ru
diff --git a/data/i18n/ru/ru.toml b/data/i18n/ru/ru.toml
new file mode 100644
index 0000000000..37447c0cad
--- /dev/null
+++ b/data/i18n/ru/ru.toml
@@ -0,0 +1,201 @@
+# i18n strings for the Russian (main) site.
+
+[deprecation_warning]
+other = " документация больше не поддерживается. Версия, которую вы сейчас просматриваете, является статической. Актуальную документацию вы можете найти "
+
+[deprecation_file_warning]
+other = "Устаревшая"
+
+[objectives_heading]
+other = "Цели"
+
+[cleanup_heading]
+other = "Очистка"
+
+[prerequisites_heading]
+other = "Подготовка к работе"
+
+[subscribe_button]
+other = "Подписаться"
+
+[whatsnext_heading]
+other = "Что дальше"
+
+[feedback_heading]
+other = "Обратная связь"
+
+[feedback_question]
+other = "Была ли эта страница полезной?"
+
+[feedback_yes]
+other = "Да"
+
+[feedback_no]
+other = "Нет"
+
+[latest_version]
+other = "последняя версия."
+
+[version_check_mustbe]
+other = "Ваш сервер Kubernetes должен быть версии "
+
+[version_check_mustbeorlater]
+other = "Ваш сервер Kubernetes должен быть версии или позже, чем версия "
+
+[version_check_tocheck]
+other = "Чтобы проверить версию, введите "
+
+[caution]
+other = "Внимание:"
+
+[note]
+other = "Заметка:"
+
+[warning]
+other = "Предупреждение:"
+
+[main_read_about]
+other = "Прочитать о"
+
+[main_read_more]
+other = "Прочитать больше"
+
+[main_github_invite]
+other = "Хотите взломать ядро кодовой базы Kubernetes?"
+
+[main_github_view_on]
+other = "Посмотреть на GitHub"
+
+[main_github_create_an_issue]
+other = "Сообщить о проблеме"
+
+[main_community_explore]
+other = "Познакомиться с сообществом"
+
+[main_kubernetes_features]
+other = "Возможности Kubernetes"
+
+[main_cncf_project]
+other = """Мы являемся проектом CNCF"""
+
+[main_kubeweekly_baseline]
+other = "Интересуетесь последними новостями Kubernetes? Зарегистрируйтесь в KubeWeekly."
+
+[main_kubernetes_past_link]
+other = "Посмотреть последние новости"
+
+[main_kubeweekly_signup]
+other = "Подписаться"
+
+[main_contribute]
+other = "Помочь проекту"
+
+[main_edit_this_page]
+other = "Редактировать эту страницу"
+
+[main_page_history]
+other ="История страницы"
+
+[main_page_last_modified_on]
+other = "Последний раз страница редактировалась"
+
+[main_by]
+other = "by"
+
+[main_documentation_license]
+other = """Авторы Kubernetes | Документация распространяется под лицензией CC BY 4.0"""
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. Все права защищены. The Linux Foundation является зарегистрированной торговой маркой. Список торговых марок The Linux Foundation приведен на странице использования торговых марок"""
+
+# Labels for the docs portal home page.
+[docs_label_browse]
+other = "Просмотр документации"
+
+[docs_label_contributors]
+other = "Участники сообщества"
+
+[docs_label_users]
+other = "Пользователи"
+
+[docs_label_i_am]
+other = "Я ..."
+
+# layouts > blog > pager
+
+[layouts_blog_pager_prev]
+other = "<< Назад"
+
+[layouts_blog_pager_next]
+other = "Вперёд >>"
+
+# layouts > blog > list
+
+[layouts_case_studies_list_tell]
+other = "Расскажите свою историю"
+
+# layouts > docs > glossary
+
+[layouts_docs_glossary_description]
+other = "Данный глоссарий должен стать исчерпывающим стандартизированным списком терминологии в Kubernetes. Он включает технические термины, специфичные для K8s, а также более общие термины, которые полезно знать."
+
+[layouts_docs_glossary_filter]
+other = "Фильтрация терминов по тегам"
+
+[layouts_docs_glossary_select_all]
+other = "Выделить всё"
+
+[layouts_docs_glossary_deselect_all]
+other = "Отменить выбор всех тегов"
+
+[layouts_docs_glossary_aka]
+other = "Также известный как"
+
+[layouts_docs_glossary_click_details_before]
+other = "Нажмите на значок"
+
+[layouts_docs_glossary_click_details_after]
+other = "для получения более подробное объяснения по интересующему термину."
+
+# layouts > docs > search
+
+[layouts_docs_search_fetching]
+other = "Получение результатов.."
+
+# layouts > partial > feedback
+
+[layouts_docs_partials_feedback_thanks]
+other = "Спасибо за отзыв! Если у вас есть конкретный вопрос об использовании Kubernetes, спрашивайте"
+
+[layouts_docs_partials_feedback_issue]
+other = "Сообщите о проблеме в репозитории GitHub, если вы хотите "
+
+[layouts_docs_partials_feedback_problem]
+other = "сообщить о проблеме"
+
+[layouts_docs_partials_feedback_or]
+other = "или"
+
+[layouts_docs_partials_feedback_improvement]
+other = "предложить улучшение"
+
+# Community links
+[community_twitter_name]
+other = "Twitter"
+[community_github_name]
+other = "GitHub"
+[community_slack_name]
+other = "Slack"
+[community_stack_overflow_name]
+other = "Stack Overflow"
+[community_forum_name]
+other = "Форум"
+[community_events_calendar]
+other = "Календарь событий"
+
+# UI elements
+[ui_search_placeholder]
+other = "Поиск"
+
+[input_placeholder_email_address]
+other = "адрес электронной почты"
\ No newline at end of file
diff --git a/data/i18n/uk/OWNERS b/data/i18n/uk/OWNERS
new file mode 100644
index 0000000000..3175dc7d48
--- /dev/null
+++ b/data/i18n/uk/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Ukrainian.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-uk-reviews
+
+approvers:
+- sig-docs-uk-owners
+
+labels:
+- language/uk
diff --git a/data/i18n/uk/uk.toml b/data/i18n/uk/uk.toml
new file mode 100644
index 0000000000..ec60865783
--- /dev/null
+++ b/data/i18n/uk/uk.toml
@@ -0,0 +1,255 @@
+# i18n strings for the Ukrainian (main) site.
+
+[caution]
+# other = "Caution:"
+other = "Увага:"
+
+[cleanup_heading]
+# other = "Cleaning up"
+other = "Очистка"
+
+[community_events_calendar]
+# other = "Events Calendar"
+other = "Календар подій"
+
+[community_forum_name]
+# other = "Forum"
+other = "Форум"
+
+[community_github_name]
+other = "GitHub"
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[community_youtube_name]
+other = "YouTube"
+
+[deprecation_warning]
+# other = " documentation is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date documentation, see the "
+other = " документація більше не підтримується. Версія, яку ви зараз переглядаєте, є статичною. Для перегляду актуальної документації дивіться "
+
+[deprecation_file_warning]
+# other = "Deprecated"
+other = "Застаріла версія"
+
+[docs_label_browse]
+# other = "Browse Docs"
+other = "Переглянути документацію"
+
+[docs_label_contributors]
+# other = "Contributors"
+other = "Контриб'ютори"
+
+[docs_label_i_am]
+# other = "I AM..."
+other = "Я..."
+
+[docs_label_users]
+# other = "Users"
+other = "Користувачі"
+
+[feedback_heading]
+# other = "Feedback"
+other = "Ваша думка"
+
+[feedback_no]
+# other = "No"
+other = "Ні"
+
+[feedback_question]
+# other = "Was this page helpful?"
+other = "Чи була ця сторінка корисною?"
+
+[feedback_yes]
+# other = "Yes"
+other = "Так"
+
+[input_placeholder_email_address]
+# other = "email address"
+other = "електронна адреса"
+
+[latest_version]
+# other = "latest version."
+other = "остання версія."
+
+[layouts_blog_pager_prev]
+# other = "<< Prev"
+other = "<< Назад"
+
+[layouts_blog_pager_next]
+# other = "Next >>"
+other = "Далі >>"
+
+[layouts_case_studies_list_tell]
+# other = "Tell your story"
+other = "Розкажіть свою історію"
+
+[layouts_docs_glossary_aka]
+# other = "Also known as"
+other = "Також відомий як"
+
+[layouts_docs_glossary_description]
+# other = "This glossary is intended to be a comprehensive, standardized list of Kubernetes terminology. It includes technical terms that are specific to Kubernetes, as well as more general terms that provide useful context."
+other = "Даний словник створений як повний стандартизований список термінології Kubernetes. Він включає в себе технічні терміни, специфічні для Kubernetes, а також більш загальні терміни, необхідні для кращого розуміння контексту."
+
+[layouts_docs_glossary_deselect_all]
+# other = "Deselect all"
+other = "Очистити вибір"
+
+[layouts_docs_glossary_click_details_after]
+# other = "indicators below to get a longer explanation for any particular term."
+other = "для отримання розширеного пояснення конкретного терміна."
+
+[layouts_docs_glossary_click_details_before]
+# other = "Click on the"
+other = "Натисність на"
+
+[layouts_docs_glossary_filter]
+# other = "Filter terms according to their tags"
+other = "Відфільтрувати терміни за тегами"
+
+[layouts_docs_glossary_select_all]
+# other = "Select all"
+other = "Вибрати все"
+
+[layouts_docs_partials_feedback_improvement]
+# other = "suggest an improvement"
+other = "запропонувати покращення"
+
+[layouts_docs_partials_feedback_issue]
+# other = "Open an issue in the GitHub repo if you want to "
+other = "Створіть issue в GitHub репозиторії, якщо ви хочете "
+
+[layouts_docs_partials_feedback_or]
+# other = "or"
+other = "або"
+
+[layouts_docs_partials_feedback_problem]
+# other = "report a problem"
+other = "повідомити про проблему"
+
+[layouts_docs_partials_feedback_thanks]
+# other = "Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on"
+other = "Дякуємо за ваш відгук. Якщо ви маєте конкретне запитання щодо використання Kubernetes, ви можете поставити його"
+
+[layouts_docs_search_fetching]
+# other = "Fetching results..."
+other = "Отримання результатів..."
+
+[main_by]
+other = "by"
+
+[main_cncf_project]
+# other = """We are a CNCF graduated project"""
+other = """Ми є проектом CNCF"""
+
+[main_community_explore]
+# other = "Explore the community"
+other = "Познайомитись із спільнотою"
+
+[main_contribute]
+# other = "Contribute"
+other = "Допомогти проекту"
+
+[main_copyright_notice]
+# other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+other = """The Linux Foundation ®. Всі права застережено. The Linux Foundation є зареєстрованою торговою маркою. Перелік торгових марок The Linux Foundation ви знайдете на нашій сторінці Використання торгових марок"""
+
+[main_documentation_license]
+# other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+other = """Автори Kubernetes | Документація розповсюджується під ліцензією CC BY 4.0"""
+
+[main_edit_this_page]
+# other = "Edit This Page"
+other = "Редагувати цю сторінку"
+
+[main_github_create_an_issue]
+# other = "Create an Issue"
+other = "Створити issue"
+
+[main_github_invite]
+# other = "Interested in hacking on the core Kubernetes code base?"
+other = "Хочете зламати основну кодову базу Kubernetes?"
+
+[main_github_view_on]
+# other = "View On GitHub"
+other = "Переглянути у GitHub"
+
+[main_kubernetes_features]
+# other = "Kubernetes Features"
+other = "Функціональні можливості Kubernetes"
+
+[main_kubeweekly_baseline]
+# other = "Interested in receiving the latest Kubernetes news? Sign up for KubeWeekly."
+other = "Хочете отримувати останні новини Kubernetes? Підпишіться на KubeWeekly."
+
+[main_kubernetes_past_link]
+# other = "View past newsletters"
+other = "Переглянути попередні інформаційні розсилки"
+
+[main_kubeweekly_signup]
+# other = "Subscribe"
+other = "Підписатися"
+
+[main_page_history]
+# other ="Page History"
+other ="Історія сторінки"
+
+[main_page_last_modified_on]
+# other = "Page last modified on"
+other = "Сторінка востаннє редагувалася"
+
+[main_read_about]
+# other = "Read about"
+other = "Прочитати про"
+
+[main_read_more]
+# other = "Read more"
+other = "Прочитати більше"
+
+[note]
+# other = "Note:"
+other = "Примітка:"
+
+[objectives_heading]
+# other = "Objectives"
+other = "Цілі"
+
+[prerequisites_heading]
+# other = "Before you begin"
+other = "Перш ніж ви розпочнете"
+
+[subscribe_button]
+# other = "Subscribe"
+other = "Підписатися"
+
+[ui_search_placeholder]
+# other = "Search"
+other = "Пошук"
+
+[version_check_mustbe]
+# other = "Your Kubernetes server must be version "
+other = "Версія вашого Kubernetes сервера має бути "
+
+[version_check_mustbeorlater]
+# other = "Your Kubernetes server must be at or later than version "
+other = "Версія вашого Kubernetes сервера має дорівнювати або бути молодшою ніж "
+
+[version_check_tocheck]
+# other = "To check the version, enter "
+other = "Для перевірки версії введіть "
+
+[warning]
+# other = "Warning:"
+other = "Попередження:"
+
+[whatsnext_heading]
+# other = "What's next"
+other = "Що далі"
diff --git a/data/i18n/vi/OWNERS b/data/i18n/vi/OWNERS
new file mode 100644
index 0000000000..932adeb73f
--- /dev/null
+++ b/data/i18n/vi/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Vietnamese.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-vi-reviews
+
+approvers:
+- sig-docs-vi-owners
+
+labels:
+- language/vi
diff --git a/data/i18n/vi/vi.toml b/data/i18n/vi/vi.toml
new file mode 100644
index 0000000000..d65c07a720
--- /dev/null
+++ b/data/i18n/vi/vi.toml
@@ -0,0 +1,197 @@
+# i18n strings for the Vietnamese (main) site.
+
+[caution]
+other = "Chú ý:"
+
+[cleanup_heading]
+other = "Cleaning up"
+
+[community_events_calendar]
+other = "Lịch sự kiện"
+
+[community_forum_name]
+other = "Diễn đàn"
+
+[community_github_name]
+other = "GitHub"
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[community_youtube_name]
+other = "YouTube"
+
+[deprecation_warning]
+other = " tài liệu này không còn được duy trì. Phiên bản đang xem hiện tại là một snapshot tĩnh. Để rõ hơn về tài liệu bản cập nhật, xem "
+
+[deprecation_file_warning]
+other = "Không dùng nữa"
+
+[docs_label_browse]
+other = "Duyệt tài liệu"
+
+[docs_label_contributors]
+other = "Người đóng góp"
+
+[docs_label_i_am]
+other = "TÔI LÀ..."
+
+[docs_label_users]
+other = "Users"
+
+[feedback_heading]
+other = "Phản hồi"
+
+[feedback_no]
+other = "Không"
+
+[feedback_question]
+other = "Trang này có hữu ích?"
+
+[feedback_yes]
+other = "Có"
+
+[input_placeholder_email_address]
+other = "địa chỉ email"
+
+[latest_version]
+other = "phiên bản mới nhất."
+
+[layouts_blog_pager_prev]
+other = "<< Trước"
+
+[layouts_blog_pager_next]
+other = "Sau >>"
+
+[layouts_case_studies_list_tell]
+other = "Kể câu chuyện của bạn"
+
+[layouts_docs_glossary_aka]
+other = "Cũng được biết đến như là"
+
+[layouts_docs_glossary_description]
+other = "Bảng chú giải này được kì vọng là một danh sách hoàn thiện, được chuẩn hóa về thuật ngữ Kubernetes. Nó bao gồm các thuật ngữ kỹ thuật dành riêng cho Kubernetes, cũng như các thuật ngữ chung hơn cung cấp ngữ cảnh hữu ích"
+
+[layouts_docs_glossary_deselect_all]
+other = "Bỏ chọn tất cả"
+
+[layouts_docs_glossary_click_details_after]
+other = "danh mục dưới đây để giải thích rõ hơn cho các thuật ngữ cụ thể"
+
+[layouts_docs_glossary_click_details_before]
+other = "Click vào"
+
+[layouts_docs_glossary_filter]
+other = "Lọc các thuật ngữ theo tags"
+
+[layouts_docs_glossary_select_all]
+other = "Chọn tất cả"
+
+[layouts_docs_partials_feedback_improvement]
+other = "đề xuất cải tiến"
+
+[layouts_docs_partials_feedback_issue]
+other = "Tạo một issue trên Github repo nến bạn muốn "
+
+[layouts_docs_partials_feedback_or]
+other = "hoặc"
+
+[layouts_docs_partials_feedback_problem]
+other = "báo cáo một vấn đề"
+
+[layouts_docs_partials_feedback_thanks]
+other = "Cảm ơn vì đã phản hồi. Nếu bạn có một câu hỏi cụ thể, có thể trả lời về cách sử dụng Kubernetes, hãy hỏi nó trên"
+
+[layouts_docs_search_fetching]
+other = "Đang lấy kết quả..."
+
+[main_by]
+other = "bởi"
+
+[main_cncf_project]
+other = """Chúng tôi là một dự án CNCF"""
+
+[main_community_explore]
+other = "Khám phá cộng đồng"
+
+[main_contribute]
+other = "Đóng góp"
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. Đã đăng ký Bản quyền. The Linux Foundation đã đăng ký và sử dụng nhãn hiệu. Để biết danh sách các nhãn hiệu của The Linux Foundation, xem Trademark Usage page"""
+
+[main_documentation_license]
+other = """Các tác giả Kubernetes | Tài liệu được phân phối theo CC BY 4.0"""
+
+[main_edit_this_page]
+other = "Sửa trang này"
+
+[main_github_create_an_issue]
+other = "Tạo một Issue"
+
+[main_github_invite]
+other = "Quan tâm đến việc hacking mã nguồn Kubernetes?"
+
+[main_github_view_on]
+other = "Xem trên GitHub"
+
+[main_kubernetes_features]
+other = "Các tính năng của Kubernetes"
+
+[main_kubeweekly_baseline]
+other = "Muốn nhận những tin tức Kubernetes mới nhất? Đăng kí KubeWeekly."
+
+[main_kubernetes_past_link]
+other = "Xem các bản tin trước đây"
+
+[main_kubeweekly_signup]
+other = "Đăng kí"
+
+[main_page_history]
+other ="Lịch sử trang"
+
+[main_page_last_modified_on]
+other = "Trang được sửa lần cuồi vào"
+
+[main_read_about]
+other = "Đọc về"
+
+[main_read_more]
+other = "Đọc thêm"
+
+[note]
+other = "Ghi chú:"
+
+[objectives_heading]
+other = "Mục tiêu"
+
+[prerequisites_heading]
+other = "Trước khi bắt đầu"
+
+[subscribe_button]
+other = "Đăng ký"
+
+[ui_search_placeholder]
+other = "Tìm kiếm"
+
+[version_check_mustbe]
+other = "Server Kubernetes của bạn phải ở phiên bản "
+
+[version_check_mustbeorlater]
+other = "Server Kubernetes của bạn ở phiên bản mới hơn hoặc tại phiên bản "
+
+[version_check_tocheck]
+other = "Để kiểm tra phiên bản, nhập "
+
+[warning]
+other = "Cảnh báo:"
+
+[whatsnext_heading]
+other = "Có gì tiếp theo"
+
diff --git a/data/i18n/zh/OWNERS b/data/i18n/zh/OWNERS
new file mode 100644
index 0000000000..3bb5f8ebe5
--- /dev/null
+++ b/data/i18n/zh/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# Localized strings for Chinese.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-zh-reviews
+
+approvers:
+- sig-docs-zh-owners
+
+labels:
+- language/zh
diff --git a/data/i18n/zh/zh.toml b/data/i18n/zh/zh.toml
new file mode 100644
index 0000000000..dcf32839f8
--- /dev/null
+++ b/data/i18n/zh/zh.toml
@@ -0,0 +1,230 @@
+# i18n strings for the Chinese version of the site (https://kubernetes.io/zh/)
+# 注意:修改此文件时请维持字符串名称的字母顺序并与英文版保持一致
+
+[caution]
+other = "注意:"
+
+[cleanup_heading]
+other = "清理现场"
+
+[community_events_calendar]
+other = "事件日历"
+
+[community_forum_name]
+other = "论坛"
+
+[community_github_name]
+other = "GitHub"
+
+[community_slack_name]
+other = "Slack"
+
+[community_stack_overflow_name]
+other = "Stack Overflow"
+
+[community_twitter_name]
+other = "Twitter"
+
+[community_youtube_name]
+other = "YouTube"
+
+[deprecation_title]
+other = "您正在查看 Kubernetes 版本的文档:"
+
+[deprecation_warning]
+other = " 版本的文档已不再维护。您现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击"
+
+[deprecation_file_warning]
+other = "已过时"
+
+[docs_label_browse]
+other = "浏览文档"
+
+[docs_label_contributors]
+other = "贡献者"
+
+[docs_label_i_am]
+other = "我是..."
+
+[docs_label_users]
+other = "用户"
+
+[examples_heading]
+other = "示例"
+
+[feedback_heading]
+other = "反馈"
+
+[feedback_no]
+other = "否"
+
+[feedback_question]
+other = "此页是否对您有帮助?"
+
+[feedback_yes]
+other = "是"
+
+[input_placeholder_email_address]
+other = "电子邮件地址"
+
+[latest_version]
+other = "最新版本。"
+
+[layouts_blog_pager_prev]
+other = "<< 前一篇"
+
+[layouts_blog_pager_next]
+other = "后一篇 >>"
+
+[layouts_case_studies_list_tell]
+other = "分享您的故事"
+
+[layouts_docs_glossary_aka]
+other = "亦称作"
+
+[layouts_docs_glossary_description]
+other = "此术语表旨在提供 Kubernetes 术语的完整、标准列表。其中包含特定于 Kubernetes 的技术术语以及能够构造有用的语境的一般性术语。"
+
+[layouts_docs_glossary_deselect_all]
+other = "全不选"
+
+[layouts_docs_glossary_click_details_after]
+other = "下面的指示符号获取特定术语的更为完整的描述。"
+
+[layouts_docs_glossary_click_details_before]
+other = "点击"
+
+[layouts_docs_glossary_filter]
+other = "根据标签过滤术语"
+
+[layouts_docs_glossary_select_all]
+other = "全选"
+
+[layouts_docs_partials_feedback_improvement]
+other = "提出改进建议"
+
+[layouts_docs_partials_feedback_issue]
+other = "在 GitHub 仓库上登记新的问题"
+
+[layouts_docs_partials_feedback_or]
+other = "或者"
+
+[layouts_docs_partials_feedback_problem]
+other = "报告问题"
+
+[layouts_docs_partials_feedback_thanks]
+other = "感谢反馈。如果您有一个关于如何使用 Kubernetes 的特定的、需要答案的问题,可以访问"
+
+[layouts_docs_search_fetching]
+other = "检索结果中.."
+
+[main_by]
+other = "由:"
+
+[main_cncf_project]
+other = """我们是 CNCF 毕业项目"""
+
+[main_community_explore]
+other = "了解社区"
+
+[main_contribute]
+other = "贡献"
+
+[main_copyright_notice]
+other = """Linux 基金会®。保留所有权利。Linux 基金会已注册并使用商标。如需了解 Linux 基金会的商标列表,请访问商标使用页面"""
+
+[main_documentation_license]
+other = """The Kubernetes 作者 | 文档发布基于 CC BY 4.0 授权许可"""
+
+[main_edit_this_page]
+other = "修改本页面"
+
+[main_github_create_an_issue]
+other = "报告 GitHub 问题"
+
+[main_github_invite]
+other = "想要修改 Kubernetes 的核心源代码?"
+
+[main_github_view_on]
+other = "在 GitHub 上查看"
+
+[main_kubernetes_features]
+other = "Kubernetes 特性"
+
+[main_kubeweekly_baseline]
+other = "想要获取最新的 Kubernetes 新闻么?请订阅 KubeWeekly。"
+
+[main_kubernetes_past_link]
+other = "浏览往期的周报"
+
+[main_kubeweekly_signup]
+other = "订阅"
+
+[main_page_history]
+other ="页面历史"
+
+[main_page_last_modified_on]
+other = "页面最后一次修改于"
+
+[main_read_about]
+other = "了解"
+
+[main_read_more]
+other = "了解更多"
+
+[note]
+other = "说明:"
+
+[objectives_heading]
+other = "教程目标"
+
+[options_heading]
+other = "选项"
+
+[post_create_child_page]
+other = "创建子页面"
+
+[prerequisites_heading]
+other = "准备开始"
+
+[seealso_heading]
+other = "另请参见"
+
+[subscribe_button]
+other = "订阅"
+
+[synopsis_heading]
+other = "简介"
+
+[thirdparty_message]
+other = """本部分链接到提供 Kubernetes 所需功能的第三方项目。Kubernetes 项目作者不负责这些项目。此页面遵循CNCF 网站指南,按字母顺序列出项目。要将项目添加到此列表中,请在提交更改之前阅读内容指南。"""
+
+[ui_search_placeholder]
+other = "搜索"
+
+[version_check_mustbe]
+other = "您的 Kubernetes 服务器版本必须是 "
+
+[version_check_mustbeorlater]
+other = "您的 Kubernetes 服务器版本必须不低于版本 "
+
+[version_check_tocheck]
+other = "要获知版本信息,请输入 "
+
+[version_menu]
+other = "版本列表"
+
+[warning]
+other = "警告:"
+
+[whatsnext_heading]
+other = "接下来"
+
+[docs_version_latest_heading]
+other = "当前版本"
+
+[docs_version_other_heading]
+other = "往期版本"
+
+[docs_version_current]
+other = "(此文档)"
diff --git a/i18n/de.toml b/i18n/de.toml
deleted file mode 100644
index cd4c3d7924..0000000000
--- a/i18n/de.toml
+++ /dev/null
@@ -1,203 +0,0 @@
-# i18n strings for the German (main) site.
-
-[deprecation_warning]
-other = " Die Dokumentation wird nicht mehr aktiv gepflegt. Die aktuell angezeigte Version ist eine statische Momentaufnahme. Aktuelle Dokumentation finden Sie unter "
-
-[deprecation_file_warning]
-other = "Veraltet"
-
-[objectives_heading]
-other = "Ziele"
-
-[cleanup_heading]
-other = "Aufräumen"
-
-[prerequisites_heading]
-other = "Bevor Sie beginnen"
-
-[subscribe_button]
-other = "Abonnieren"
-
-[whatsnext_heading]
-other = "Nächste Schritte"
-
-[feedback_heading]
-other = "Feedback"
-
-[feedback_question]
-other = "War diese Seite hilfreich?"
-
-[feedback_yes]
-other = "Ja"
-
-[feedback_no]
-other = "Nein"
-
-[latest_version]
-other = "aktuelle Version."
-
-[version_check_mustbe]
-other = "Ihr Kubernetes-Server benötigt die Version "
-
-[version_check_mustbeorlater]
-other = "Ihr Kubernetes-Server benötigt mindestens die Version "
-
-[version_check_tocheck]
-other = "Um die Version zu überprüfen, geben Sie Folgendes ein "
-
-[caution]
-other = "Achtung:"
-
-[note]
-other = "Hinweis:"
-
-[warning]
-other = "Warnung:"
-
-[main_read_about]
-other = "Mehr Informationen"
-
-[main_read_more]
-other = "Weiterlesen"
-
-[main_github_invite]
-other = "Interested in hacking on the core Kubernetes code base?"
-
-[main_github_view_on]
-other = "Auf GitHub ansehen"
-
-[main_github_create_an_issue]
-other = "Problem berichten"
-
-[main_community_explore]
-other = "Entdecke die Community"
-
-[main_kubernetes_features]
-other = "Kubernetes Features"
-
-[main_cncf_project]
-other = """Wir sind ein CNCF Abschlussprojekt"""
-
-[main_kubeweekly_baseline]
-other = "Möchten Sie die neuesten Nachrichten von Kubernetes erhalten? Melden Sie sich für KubeWeekly an."
-
-[main_kubernetes_past_link]
-other = "Frühere Newsletter anzeigen"
-
-[main_kubeweekly_signup]
-other = "Abonnieren"
-
-[main_contribute]
-other = "Contribute"
-
-[main_edit_this_page]
-other = "Diese Seite bearbeiten"
-
-[main_page_history]
-other ="Seitenverlauf"
-
-[main_page_last_modified_on]
-other = "Letzte Änderung am"
-
-[main_by]
-other = "durch"
-
-[main_documentation_license]
-other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
-
-# Labels for the docs portal home page.
-[docs_label_browse]
-other = "Dokumention durchsuchen"
-
-[docs_label_contributors]
-other = "Mitwirkende"
-
-[docs_label_users]
-other = "Users"
-
-[docs_label_i_am]
-other = "ICH BIN..."
-
-
-# layouts > blog > pager
-
-[layouts_blog_pager_prev]
-other = "<< Zurück"
-
-[layouts_blog_pager_next]
-other = "Vor >>"
-
-# layouts > blog > list
-
-[layouts_case_studies_list_tell]
-other = "Erzählen Sie Ihre Geschichte"
-
-# layouts > docs > glossary
-
-[layouts_docs_glossary_description]
-other = "Dieses Glossar soll eine umfassende, standardisierte Liste der Kubernetes-Terminologie darstellen. Es enthält technische Begriffe, die für K8 spezifisch sind, sowie allgemeinere Begriffe, die einen nützlichen Kontext bieten."
-
-[layouts_docs_glossary_filter]
-other = "Begriffe nach ihren Tags filtern"
-
-[layouts_docs_glossary_select_all]
-other = "Alle auswählen"
-
-[layouts_docs_glossary_deselect_all]
-other = "Alle abwählen"
-
-[layouts_docs_glossary_aka]
-other = "Auch bekannt als"
-
-[layouts_docs_glossary_click_details_before]
-other = "Klicken Sie auf die"
-
-[layouts_docs_glossary_click_details_after]
-other = "Indikatoren unten, um eine längere Erklärung für einen bestimmten Begriff zu erhalten."
-
-# layouts > docs > search
-
-[layouts_docs_search_fetching]
-other = "Ergebnisse werden abgerufen..."
-
-# layouts > partial > feedback
-
-[layouts_docs_partials_feedback_thanks]
-other = "Danke für die Rückmeldung. Wenn Sie eine spezifische, beantwortbare Frage zur Verwendung von Kubernetes haben, stellen Sie diese unter "
-
-[layouts_docs_partials_feedback_issue]
-other = "Öffnen Sie ein Problem im GitHub-Repo, wenn Sie möchten "
-
-[layouts_docs_partials_feedback_problem]
-other = "Ein Problem melden"
-
-[layouts_docs_partials_feedback_or]
-other = "oder"
-
-[layouts_docs_partials_feedback_improvement]
-other = "Eine Verbesserung vorschlagen"
-
-
-# Community links
-[community_twitter_name]
-other = "Twitter"
-[community_github_name]
-other = "GitHub"
-[community_slack_name]
-other = "Slack"
-[community_stack_overflow_name]
-other = "Stack Overflow"
-[community_forum_name]
-other = "Forum"
-[community_events_calendar]
-other = "Veranstaltungskalender"
-
-# UI elements
-[ui_search_placeholder]
-other = "Suchen"
-
-[input_placeholder_email_address]
-other = "E-Mail-Addresse"
\ No newline at end of file
diff --git a/i18n/de.toml b/i18n/de.toml
new file mode 120000
index 0000000000..4435a0f16c
--- /dev/null
+++ b/i18n/de.toml
@@ -0,0 +1 @@
+../data/i18n/de/de.toml
\ No newline at end of file
diff --git a/i18n/en.toml b/i18n/en.toml
deleted file mode 100644
index c6f24f8e2e..0000000000
--- a/i18n/en.toml
+++ /dev/null
@@ -1,226 +0,0 @@
-# i18n strings for the English (main) site.
-# NOTE: Please keep the entries in alphabetical order when editing
-[caution]
-other = "Caution:"
-
-[cleanup_heading]
-other = "Cleaning up"
-
-[community_events_calendar]
-other = "Events Calendar"
-
-[community_forum_name]
-other = "Forum"
-
-[community_github_name]
-other = "GitHub"
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[community_youtube_name]
-other = "YouTube"
-
-[deprecation_title]
-other = "You are viewing documentation for Kubernetes version:"
-
-[deprecation_warning]
-other = " documentation is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date documentation, see the "
-
-[deprecation_file_warning]
-other = "Deprecated"
-
-[docs_label_browse]
-other = "Browse Docs"
-
-[docs_label_contributors]
-other = "Contributors"
-
-[docs_label_i_am]
-other = "I AM..."
-
-[docs_label_users]
-other = "Users"
-
-[docs_version_current]
-other = "(this documentation)"
-
-[docs_version_latest_heading]
-other = "Latest version"
-
-[docs_version_other_heading]
-other = "Older versions"
-
-[error_404_were_you_looking_for]
-other = "Were you looking for:"
-
-[examples_heading]
-other = "Examples"
-
-[feedback_heading]
-other = "Feedback"
-
-[feedback_no]
-other = "No"
-
-[feedback_question]
-other = "Was this page helpful?"
-
-[feedback_yes]
-other = "Yes"
-
-[input_placeholder_email_address]
-other = "email address"
-
-[latest_version]
-other = "latest version."
-
-[layouts_blog_pager_prev]
-other = "<< Prev"
-
-[layouts_blog_pager_next]
-other = "Next >>"
-
-[layouts_case_studies_list_tell]
-other = "Tell your story"
-
-[layouts_docs_glossary_aka]
-other = "Also known as"
-
-[layouts_docs_glossary_description]
-other = "This glossary is intended to be a comprehensive, standardized list of Kubernetes terminology. It includes technical terms that are specific to Kubernetes, as well as more general terms that provide useful context."
-
-[layouts_docs_glossary_deselect_all]
-other = "Deselect all"
-
-[layouts_docs_glossary_click_details_after]
-other = "indicators below to get a longer explanation for any particular term."
-
-[layouts_docs_glossary_click_details_before]
-other = "Click on the"
-
-[layouts_docs_glossary_filter]
-other = "Filter terms according to their tags"
-
-[layouts_docs_glossary_select_all]
-other = "Select all"
-
-[layouts_docs_partials_feedback_improvement]
-other = "suggest an improvement"
-
-[layouts_docs_partials_feedback_issue]
-other = "Open an issue in the GitHub repo if you want to "
-
-[layouts_docs_partials_feedback_or]
-other = "or"
-
-[layouts_docs_partials_feedback_problem]
-other = "report a problem"
-
-[layouts_docs_partials_feedback_thanks]
-other = "Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on"
-
-[layouts_docs_search_fetching]
-other = "Fetching results..."
-
-[main_by]
-other = "by"
-
-[main_cncf_project]
-other = """We are a CNCF graduated project"""
-
-[main_community_explore]
-other = "Explore the community"
-
-[main_contribute]
-other = "Contribute"
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
-
-[main_documentation_license]
-other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
-
-[main_github_invite]
-other = "Interested in hacking on the core Kubernetes code base?"
-
-[main_github_view_on]
-other = "View On GitHub"
-
-[main_kubernetes_features]
-other = "Kubernetes Features"
-
-[main_kubeweekly_baseline]
-other = "Interested in receiving the latest Kubernetes news? Sign up for KubeWeekly."
-
-[main_kubernetes_past_link]
-other = "View past newsletters"
-
-[main_kubeweekly_signup]
-other = "Subscribe"
-
-[main_page_history]
-other ="Page History"
-
-[main_page_last_modified_on]
-other = "Page last modified on"
-
-[main_read_about]
-other = "Read about"
-
-[main_read_more]
-other = "Read more"
-
-[note]
-other = "Note:"
-
-[objectives_heading]
-other = "Objectives"
-
-[options_heading]
-other = "Options"
-
-[post_create_issue]
-other = "Create an issue"
-
-[prerequisites_heading]
-other = "Before you begin"
-
-[seealso_heading]
-other = "See Also"
-
-[subscribe_button]
-other = "Subscribe"
-
-[synopsis_heading]
-other = "Synopsis"
-
-[thirdparty_message]
-other = """This section links to third party projects that provide functionality required by Kubernetes. The Kubernetes project authors aren't responsible for these projects. This page follows CNCF website guidelines by listing projects alphabetically. To add a project to this list, read the content guide before submitting a change."""
-
-[ui_search_placeholder]
-other = "Search"
-
-[version_check_mustbe]
-other = "Your Kubernetes server must be version "
-
-[version_check_mustbeorlater]
-other = "Your Kubernetes server must be at or later than version "
-
-[version_check_tocheck]
-other = "To check the version, enter "
-
-[version_menu]
-other = "Versions"
-
-[warning]
-other = "Warning:"
-
-[whatsnext_heading]
-other = "What's next"
diff --git a/i18n/en.toml b/i18n/en.toml
new file mode 120000
index 0000000000..a13dbc01ce
--- /dev/null
+++ b/i18n/en.toml
@@ -0,0 +1 @@
+../data/i18n/en/en.toml
\ No newline at end of file
diff --git a/i18n/es.toml b/i18n/es.toml
deleted file mode 100644
index c232ce7c27..0000000000
--- a/i18n/es.toml
+++ /dev/null
@@ -1,203 +0,0 @@
-# i18n strings for the Spanish (main) site.
-
-[deprecation_warning]
-other = " ya no mantiene activamente la documentación. La versión que está viendo actualmente es una instantánea estática. Para la documentación actualizada, visita la "
-
-[deprecation_file_warning]
-other = "Descontinuado"
-
-[objectives_heading]
-other = "Objetivos"
-
-[cleanup_heading]
-other = "Limpieza de recursos"
-
-[prerequisites_heading]
-other = "Antes de empezar"
-
-[subscribe_button]
-other = "Suscribir"
-
-[whatsnext_heading]
-other = "Siguientes pasos"
-
-[feedback_heading]
-other = "Comentarios"
-
-[feedback_question]
-other = "¿Esta página le ha sido de ayuda?"
-
-[feedback_yes]
-other = "Sí"
-
-[feedback_no]
-other = "No"
-
-[latest_version]
-other = "última versión."
-
-[version_check_mustbe]
-other = "Su versión de Kubernetes debe ser "
-
-[version_check_mustbeorlater]
-other = "Su versión de Kubernetes debe ser como mínimo "
-
-[version_check_tocheck]
-other = "Para comprobar la versión, introduzca "
-
-[caution]
-other = "Precaución:"
-
-[note]
-other = "Nota:"
-
-[warning]
-other = "Advertencia:"
-
-[main_read_about]
-other = "Leer"
-
-[main_read_more]
-other = "Leer más"
-
-[main_github_invite]
-other = "¿Está interesado en participar en el código base de Kubernetes?"
-
-[main_github_view_on]
-other = "Ver en GitHub"
-
-[main_github_create_an_issue]
-other = "Abrir un Issue"
-
-[main_community_explore]
-other = "Explorar la comunidad"
-
-[main_kubernetes_features]
-other = "Características de Kubernetes"
-
-[main_cncf_project]
-other = """Somos un proyecto graduado de la CNCF"""
-
-[main_kubeweekly_baseline]
-other = "¿Interesado en recibir las últimas noticias de Kubernetes? Suscríbase a KubeWeekly."
-
-[main_kubernetes_past_link]
-other = "Ver boletines anteriores"
-
-[main_kubeweekly_signup]
-other = "Suscríbase"
-
-[main_contribute]
-other = "Contribuir"
-
-[main_edit_this_page]
-other = "Editar esta página"
-
-[main_page_history]
-other ="Historial cambios"
-
-[main_page_last_modified_on]
-other = "Página modificada por última vez el "
-
-[main_by]
-other = "por"
-
-[main_documentation_license]
-other = """Los autores de Kubernetes | Documentación distribuida bajo CC BY 4.0"""
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. Todos los derechos reservados. The Linux Foundation tiene marcas registradas y utiliza marcas registradas. Para obtener una lista de marcas registradas por The Linux Foundation, visita Trademark Usage page"""
-
-# Labels for the docs portal home page.
-[docs_label_browse]
-other = "Explorar la documentación"
-
-[docs_label_contributors]
-other = "Contribuidores"
-
-[docs_label_users]
-other = "Usuarios"
-
-[docs_label_i_am]
-other = "Yo soy..."
-
-# layouts > blog > pager
-
-[layouts_blog_pager_prev]
-other = "<< Anterior"
-
-[layouts_blog_pager_next]
-other = "Siguiente >>"
-
-# layouts > blog > list
-
-[layouts_case_studies_list_tell]
-other = "Cuéntanos tu historia"
-
-# layouts > docs > glossary
-
-[layouts_docs_glossary_description]
-other = "Este glosario tiene la intención de ser una lista completa y estandarizada de la terminología de Kubernetes. Incluye términos técnicos que son específicos de k8s, así como términos más generales que proporcionan un contexto."
-
-[layouts_docs_glossary_filter]
-other = "Filtrar terminos por categoría:"
-
-[layouts_docs_glossary_select_all]
-other = "Seleccionar todos"
-
-[layouts_docs_glossary_deselect_all]
-other = "Elmininar selección"
-
-[layouts_docs_glossary_aka]
-other = "Also known as"
-
-[layouts_docs_glossary_click_details_before]
-other = "Haz click en el símbolo"
-
-[layouts_docs_glossary_click_details_after]
-other = "para obtener información detallada sobre el término."
-
-# layouts > docs > search
-
-[layouts_docs_search_fetching]
-other = "Obteniendo resultados.."
-
-# layouts > partial > feedback
-
-[layouts_docs_partials_feedback_thanks]
-other = "Muchas gracias por el feedback. Si tienes alguna pregunta específica sobre como usar Kubernetes, puedes preguntar en"
-
-[layouts_docs_partials_feedback_issue]
-other = "Abre un issue en el repositorio de GitHub si quieres"
-
-[layouts_docs_partials_feedback_problem]
-other = "reportar un problema"
-
-[layouts_docs_partials_feedback_or]
-other = "o"
-
-[layouts_docs_partials_feedback_improvement]
-other = "sugerir alguna mejora"
-
-# Community links
-[community_twitter_name]
-other = "Twitter"
-[community_github_name]
-other = "GitHub"
-[community_slack_name]
-other = "Slack"
-[community_stack_overflow_name]
-other = "Stack Overflow"
-[community_forum_name]
-other = "Foro"
-[community_events_calendar]
-other = "Calendario de eventos"
-[community_youtube_name]
-other = "YouTube"
-
-# UI elements
-[ui_search_placeholder]
-other = "Buscar"
-
-[input_placeholder_email_address]
-other = "dirección de correo electrónico"
\ No newline at end of file
diff --git a/i18n/es.toml b/i18n/es.toml
new file mode 120000
index 0000000000..8bbbc64bd6
--- /dev/null
+++ b/i18n/es.toml
@@ -0,0 +1 @@
+../data/i18n/es/es.toml
\ No newline at end of file
diff --git a/i18n/fr.toml b/i18n/fr.toml
deleted file mode 100644
index 4cfc419cb7..0000000000
--- a/i18n/fr.toml
+++ /dev/null
@@ -1,143 +0,0 @@
-# i18n strings for the French (main) site.
-
-[deprecation_warning]
-other = " documentation non maintenue. Vous consultez une version statique. Pour une documentation à jour, veuillez consulter: "
-
-[objectives_heading]
-other = "Objectifs"
-
-[cleanup_heading]
-other = "Cleanup"
-
-[prerequisites_heading]
-other = "Pré-requis"
-
-[subscribe_button]
-other = "Souscrire"
-
-[whatsnext_heading]
-other = "A suivre"
-
-[feedback_heading]
-other = "Feedback"
-
-[feedback_question]
-other = "Cette page est elle utile ?"
-
-[feedback_yes]
-other = "Oui"
-
-[feedback_no]
-other = "Non"
-
-[latest_version]
-other = "dernière version."
-
-[version_check_mustbe]
-other = "Votre serveur Kubernetes doit être version "
-
-[version_check_mustbeorlater]
-other = "Votre serveur Kubernetes doit être au moins à la version "
-
-[version_check_tocheck]
-other = "Pour consulter la version, entrez "
-
-[caution]
-other = "Avertissement:"
-
-[note]
-other = "Note:"
-
-[warning]
-other = "Attention:"
-
-[main_read_about]
-other = "A propos"
-
-[main_read_more]
-other = "Autres ressources"
-
-[main_github_invite]
-other = "Souhaitez vous contribuer au code de Kubernetes ?"
-
-[main_github_view_on]
-other = "Voir sur GitHub"
-
-[main_github_create_an_issue]
-other = "Ouvrez un ticket"
-
-[main_community_explore]
-other = "Explorez la communauté"
-
-[main_kubernetes_features]
-other = "Fonctionnalités Kubernetes"
-
-[main_cncf_project]
-other = """Nous sommes un projet CNCF diplômé"""
-
-[main_kubeweekly_baseline]
-other = "Intéressez pour recevoir les dernières informations sur Kubernetes ? Abonnez-vous à KubeWeekly."
-
-[main_kubernetes_past_link]
-other = "Voir les newsletters précédentes"
-
-[main_kubeweekly_signup]
-other = "S'abonner"
-
-[main_contribute]
-other = "Contribuer"
-
-[main_edit_this_page]
-other = "Editez cette page"
-
-[main_page_history]
-other ="Historique"
-
-[main_page_last_modified_on]
-other = "Dernière modification le"
-
-[main_by]
-other = "de"
-
-[main_documentation_license]
-other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
-
-# Labels for the docs portal home page.
-[docs_label_browse]
-other = "Parcourir la documentation"
-
-[docs_label_contributors]
-other = "Contributeurs"
-
-[docs_label_users]
-other = "Utilisateurs"
-
-[docs_label_i_am]
-other = "JE SUIS..."
-
-[examples_heading]
-other = "Exemples"
-
-# Community links
-[community_twitter_name]
-other = "Twitter"
-[community_github_name]
-other = "GitHub"
-[community_slack_name]
-other = "Slack"
-[community_stack_overflow_name]
-other = "Stack Overflow"
-[community_forum_name]
-other = "Forum"
-[community_events_calendar]
-other = "Calendrier"
-
-# UI elements
-[ui_search_placeholder]
-other = "Recherche"
-
-[input_placeholder_email_address]
-other = "adresse email"
diff --git a/i18n/fr.toml b/i18n/fr.toml
new file mode 120000
index 0000000000..1bb0befdcb
--- /dev/null
+++ b/i18n/fr.toml
@@ -0,0 +1 @@
+../data/i18n/fr/fr.toml
\ No newline at end of file
diff --git a/i18n/hi.toml b/i18n/hi.toml
deleted file mode 100644
index 2e5d6ad331..0000000000
--- a/i18n/hi.toml
+++ /dev/null
@@ -1,195 +0,0 @@
-# i18n strings for the English (main) site.
-
-[deprecation_warning]
-other = " documentation is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date documentation, see the "
-
-[deprecation_file_warning]
-other = "Deprecated"
-
-[objectives_heading]
-other = "Objectives"
-
-[cleanup_heading]
-other = "Cleaning up"
-
-[prerequisites_heading]
-other = "Before you begin"
-
-[whatsnext_heading]
-other = "What's next"
-
-[feedback_heading]
-other = "Feedback"
-
-[feedback_question]
-other = "Was this page helpful?"
-
-[feedback_yes]
-other = "Yes"
-
-[feedback_no]
-other = "No"
-
-[latest_version]
-other = "latest version."
-
-[version_check_mustbe]
-other = "Your Kubernetes server must be version "
-
-[version_check_mustbeorlater]
-other = "Your Kubernetes server must be at or later than version "
-
-[version_check_tocheck]
-other = "To check the version, enter "
-
-[caution]
-other = "Caution:"
-
-[note]
-other = "Note:"
-
-[warning]
-other = "Warning:"
-
-[main_read_about]
-other = "Read about"
-
-[main_read_more]
-other = "Read more"
-
-[main_github_invite]
-other = "Interested in hacking on the core Kubernetes code base?"
-
-[main_github_view_on]
-other = "View On GitHub"
-
-[main_github_create_an_issue]
-other = "Create an Issue"
-
-[main_community_explore]
-other = "Explore the community"
-
-[main_kubernetes_features]
-other = "Kubernetes Features"
-
-[main_cncf_project]
-other = """We are a CNCF graduated project"""
-
-[main_kubeweekly_baseline]
-other = "Interested in receiving the latest Kubernetes news? Sign up for KubeWeekly."
-
-[main_kubernetes_past_link]
-other = "View past newsletters"
-
-[main_kubeweekly_signup]
-other = "Subscribe"
-
-[main_contribute]
-other = "Contribute"
-
-[main_edit_this_page]
-other = "Edit This Page"
-
-[main_page_history]
-other ="Page History"
-
-[main_page_last_modified_on]
-other = "Page last modified on"
-
-[main_by]
-other = "by"
-
-[main_documentation_license]
-other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
-
-# Labels for the docs portal home page.
-[docs_label_browse]
-other = "Browse Docs"
-
-[docs_label_contributors]
-other = "Contributors"
-
-[docs_label_users]
-other = "Users"
-
-[docs_label_i_am]
-other = "I AM..."
-
-# layouts > blog > pager
-
-[layouts_blog_pager_prev]
-other = "<< Prev"
-
-[layouts_blog_pager_next]
-other = "Next >>"
-
-# layouts > blog > list
-
-[layouts_case_studies_list_tell]
-other = "Tell your story"
-
-# layouts > docs > glossary
-
-[layouts_docs_glossary_description]
-other = "This glossary is intended to be a comprehensive, standardized list of Kubernetes terminology. It includes technical terms that are specific to K8s, as well as more general terms that provide useful context."
-
-[layouts_docs_glossary_filter]
-other = "Filter terms according to their tags"
-
-[layouts_docs_glossary_select_all]
-other = "Select all"
-
-[layouts_docs_glossary_deselect_all]
-other = "Deselect all"
-
-[layouts_docs_glossary_aka]
-other = "Also known as"
-
-[layouts_docs_glossary_click_details_before]
-other = "Click on the"
-
-[layouts_docs_glossary_click_details_after]
-other = "indicators below to get a longer explanation for any particular term."
-
-# layouts > docs > search
-
-[layouts_docs_search_fetching]
-other = "Fetching results.."
-
-# layouts > partial > feedback
-
-[layouts_docs_partials_feedback_thanks]
-other = "Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on"
-
-[layouts_docs_partials_feedback_issue]
-other = "Open an issue in the GitHub repo if you want to "
-
-[layouts_docs_partials_feedback_problem]
-other = "report a problem"
-
-[layouts_docs_partials_feedback_or]
-other = "or"
-
-[layouts_docs_partials_feedback_improvement]
-other = "suggest an improvement"
-
-# Community links
-[community_twitter_name]
-other = "Twitter"
-[community_github_name]
-other = "GitHub"
-[community_slack_name]
-other = "Slack"
-[community_stack_overflow_name]
-other = "Stack Overflow"
-[community_forum_name]
-other = "Forum"
-[community_events_calendar]
-other = "Events Calendar"
-
-# UI elements
-[ui_search_placeholder]
-other = "Search"
diff --git a/i18n/hi.toml b/i18n/hi.toml
new file mode 120000
index 0000000000..36d4a3bf76
--- /dev/null
+++ b/i18n/hi.toml
@@ -0,0 +1 @@
+../data/i18n/hi/hi.toml
\ No newline at end of file
diff --git a/i18n/id.toml b/i18n/id.toml
deleted file mode 100644
index 101ea071ff..0000000000
--- a/i18n/id.toml
+++ /dev/null
@@ -1,227 +0,0 @@
-# i18n strings for the Indonesian version of the site (https://kubernetes.io/id/)
-# NOTE: Please keep the entries in alphabetical order when editing
-
-[caution]
-other = "Perhatian:"
-
-[cleanup_heading]
-other = "Bersihkan"
-
-[community_events_calendar]
-other = "Kalender Acara"
-
-[community_forum_name]
-other = "Forum"
-
-[community_github_name]
-other = "GitHub"
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[community_youtube_name]
-other = "YouTube"
-
-[deprecation_title]
-other = "Kamu sedang menampilkan dokumentasi untuk Kubernetes versi:"
-
-[deprecation_warning]
-other = " dokumentasi sudah tidak dirawat lagi. Versi yang kamu lihat ini hanyalah snapshot statis. Untuk dokumentasi terkini, lihat "
-
-[deprecation_file_warning]
-other = "Sudah usang"
-
-[docs_label_browse]
-other = "Telusuri Dokumentasi"
-
-[docs_label_contributors]
-other = "Kontributor"
-
-[docs_label_i_am]
-other = "AKU..."
-
-[docs_label_users]
-other = "Pengguna"
-
-[docs_version_current]
-other = "(dokumentasi ini)"
-
-[docs_version_latest_heading]
-other = "Versi terbaru"
-
-[docs_version_other_heading]
-other = "Versi lama"
-
-[error_404_were_you_looking_for]
-other = "Apakah kamu sedang mencari:"
-
-[examples_heading]
-other = "Contoh"
-
-[feedback_heading]
-other = "Masukan"
-
-[feedback_no]
-other = "Tidak"
-
-[feedback_question]
-other = "Apakah halaman ini membantu?"
-
-[feedback_yes]
-other = "Ya"
-
-[input_placeholder_email_address]
-other = "alamat email"
-
-[latest_version]
-other = "versi terbaru."
-
-[layouts_blog_pager_prev]
-other = "<< Sebelumnya"
-
-[layouts_blog_pager_next]
-other = "Selanjutnya >>"
-
-[layouts_case_studies_list_tell]
-other = "Ceritakan kisahmu"
-
-[layouts_docs_glossary_aka]
-other = "Dikenal juga sebagai"
-
-[layouts_docs_glossary_description]
-other = "Glosarium ini dimaksudkan sebagai daftar terminologi Kubernetes yang komprehensif dan terstandardisasi. Glosarium ini mencakup istilah-istilah teknis yang spesifik digunakan di Kubernetes, serta beberapa istilah umum untuk membantu memberikan konteks."
-
-[layouts_docs_glossary_deselect_all]
-other = "Hapus semua pilihan"
-
-[layouts_docs_glossary_click_details_after]
-other = "indikator di bawah ini untuk mendapatkan penjelasan yang lebih lengkap untuk istilah tertentu."
-
-[layouts_docs_glossary_click_details_before]
-other = "Klik pada"
-
-[layouts_docs_glossary_filter]
-other = "Filter istilah sesuai dengan penandanya"
-
-[layouts_docs_glossary_select_all]
-other = "Pilih semua"
-
-[layouts_docs_partials_feedback_improvement]
-other = "beri saran perbaikan"
-
-[layouts_docs_partials_feedback_issue]
-other = "Buat isu di repositori GitHub jika kamu ingin "
-
-[layouts_docs_partials_feedback_or]
-other = "atau"
-
-[layouts_docs_partials_feedback_problem]
-other = "laporkan problem"
-
-[layouts_docs_partials_feedback_thanks]
-other = "Terima kasih atas masukannya. Jika kamu mempunyai pertanyaan yang spesifik terkait bagaimana menggunakan Kubernetes, tanyakanlah di "
-
-[layouts_docs_search_fetching]
-other = "Mengambil hasil..."
-
-[main_by]
-other = "oleh"
-
-[main_cncf_project]
-other = """Kami merupakan proyek yang lulus dari CNCF"""
-
-[main_community_explore]
-other = "Jelajahi komunitas"
-
-[main_contribute]
-other = "Bantu"
-
-[main_copyright_notice]
-other = """Linux Foundation ®. Hak cipta dilindungi. Linux Foundation telah mendaftarkan merek dagang dan pengunaannya. Perinciannya bisa dilihat pada halaman penggunaan merek dagang"""
-
-[main_documentation_license]
-other = """Para Pencipta Kubernetes | Dokumentasi didistribusikan di bawah CC BY 4.0"""
-
-[main_github_invite]
-other = "Tertarik untuk mengulik kode dari Kubernetes?"
-
-[main_github_view_on]
-other = "Lihat di GitHub"
-
-[main_kubernetes_features]
-other = "Fitur Kubernetes"
-
-[main_kubeweekly_baseline]
-other = "Tertarik untuk mendapatkan info terbaru tentang Kubernetes? Daftarkan dirimu ke KubeWeekly."
-
-[main_kubernetes_past_link]
-other = "Lihat buletin edisi sebelumnya"
-
-[main_kubeweekly_signup]
-other = "Langganan"
-
-[main_page_history]
-other ="Riwayat laman"
-
-[main_page_last_modified_on]
-other = "Halaman diubah terakhir kali pada"
-
-[main_read_about]
-other = "Baca tentang"
-
-[main_read_more]
-other = "Baca lebih lanjut"
-
-[note]
-other = "Catatan:"
-
-[objectives_heading]
-other = "Tujuan"
-
-[options_heading]
-other = "Opsi"
-
-[post_create_issue]
-other = "Buat isu"
-
-[prerequisites_heading]
-other = "Sebelum kamu memulai"
-
-[seealso_heading]
-other = "Lihat juga"
-
-[subscribe_button]
-other = "Langganan"
-
-[synopsis_heading]
-other = "Sinopsis"
-
-[thirdparty_message]
-other = """Bagian ini tertaut ke proyek-proyek pihak ketiga yang menyediakan fungsionalitas yang dibutuhkan oleh Kubernetes. Pencipta proyek Kubernetes tidak bertanggung jawab atas proyek-proyek tersebut. Laman ini mengikuti pedoman website CNCF dengan membuat daftar proyek menurut abjad. Untuk menambakan proyek ke dalam daftar ini, bacalah panduan sebelum mengirimkan perubahan."""
-
-[ui_search_placeholder]
-other = "Cari"
-
-[version_check_mustbe]
-other = "Kubernetes servermu harus dalam versi "
-
-[version_check_mustbeorlater]
-other = "Kubernetes servermu harus dalam versi yang sama atau lebih baru dari "
-
-[version_check_tocheck]
-other = "Untuk melihat versi, tekan "
-
-[version_menu]
-other = "Versi"
-
-[warning]
-other = "Peringatan:"
-
-[whatsnext_heading]
-other = "Selanjutnya"
diff --git a/i18n/id.toml b/i18n/id.toml
new file mode 120000
index 0000000000..250debab53
--- /dev/null
+++ b/i18n/id.toml
@@ -0,0 +1 @@
+../data/i18n/id/id.toml
\ No newline at end of file
diff --git a/i18n/it.toml b/i18n/it.toml
deleted file mode 100644
index 7c0970dfaa..0000000000
--- a/i18n/it.toml
+++ /dev/null
@@ -1,197 +0,0 @@
-# i18n strings for the Italian site.
-# NOTE: Please keep the entries in alphabetical order when editing
-
-[caution]
-other = "Attenzione: "
-
-[cleanup_heading]
-other = "In pulizia"
-
-[community_events_calendar]
-other = "Calendario Eventi"
-
-[community_forum_name]
-other = "Forum"
-
-[community_github_name]
-other = "GitHub"
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[community_youtube_name]
-other = "YouTube"
-
-[deprecation_warning]
-other = " documentazione non è più manutenuta. La versione che stai visualizzando in questo momento è archiviata. Per una versione aggiornata, guarda "
-
-[deprecation_file_warning]
-other = "Deprecata"
-
-[docs_label_browse]
-other = "Sfoglia documenti"
-
-[docs_label_contributors]
-other = "Contributors"
-
-[docs_label_i_am]
-other = "Io Sono..."
-
-[docs_label_users]
-other = "Utenti"
-
-[feedback_heading]
-other = "Feedback"
-
-[feedback_no]
-other = "No"
-
-[feedback_question]
-other = "Questa pagina è stata di aiuto?"
-
-[feedback_yes]
-other = "Sì"
-
-[input_placeholder_email_address]
-other = "indirizzo email"
-
-[latest_version]
-other = "ultima versione."
-
-[layouts_blog_pager_prev]
-other = "<< Precedente"
-
-[layouts_blog_pager_next]
-other = "Succesiva >>"
-
-[layouts_case_studies_list_tell]
-other = "Racconta il tuo use case"
-
-[layouts_docs_glossary_aka]
-other = "Anche noto come"
-
-[layouts_docs_glossary_description]
-other = "Questo glossario vuole essere un aiuto per standardizzare la terminologia usata per Kubernetes. Include termini tecnici che sono specifici di Kubernetes, così come termini più generali che sono utili per dare un contesto."
-
-[layouts_docs_glossary_deselect_all]
-other = "Deseleziona tutto"
-
-[layouts_docs_glossary_click_details_after]
-other = "per il significato di questo termine."
-
-[layouts_docs_glossary_click_details_before]
-other = "Fare click sull'icona"
-
-[layouts_docs_glossary_filter]
-other = "Filtra i termini sulla base delle loro etichette"
-
-[layouts_docs_glossary_select_all]
-other = "Seleziona tutto"
-
-[layouts_docs_partials_feedback_improvement]
-other = "suggerire un miglioramento"
-
-[layouts_docs_partials_feedback_issue]
-other = "Apri un issue sul repository GitHub se vuoi "
-
-[layouts_docs_partials_feedback_or]
-other = "o"
-
-[layouts_docs_partials_feedback_problem]
-other = "riportare un problema"
-
-[layouts_docs_partials_feedback_thanks]
-other = "Grazie per il feedback. Se hai una domanda specifica su Kubernetes, chiedi su"
-
-[layouts_docs_search_fetching]
-other = "Caricando i risultati..."
-
-[main_by]
-other = "di"
-
-[main_cncf_project]
-other = """Kubernetes è un progetto CNCF"""
-
-[main_community_explore]
-other = "Explora la community"
-
-[main_contribute]
-other = "Contribuire"
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. Tutti i diritti riservati. The Linux Foundation ha marchi registrati e utilizza marchi commerciali. Per un elenco dei marchi di Linux Foundation, consulta la pagina sull'utilizzo dei marchi"""
-
-[main_documentation_license]
-other = """Gli autori di Kubernetes | Documentazione distribuita sotto CC BY 4.0"""
-
-[main_edit_this_page]
-other = "Modifica questa pagina"
-
-[main_github_create_an_issue]
-other = "Crea un issue"
-
-[main_github_invite]
-other = "Sei interessato a contribuire a Kubernetes?"
-
-[main_github_view_on]
-other = "Visualizza su GitHub"
-
-[main_kubernetes_features]
-other = "Caratteristiche di Kubernetes"
-
-[main_kubeweekly_baseline]
-other = "Sei interessato a ricevere le ultime notizie su Kubernetes? Registrati alla newsletter KubeWeekly."
-
-[main_kubernetes_past_link]
-other = "Vedi le precedenti mail della newsletter"
-
-[main_kubeweekly_signup]
-other = "Iscriviti"
-
-[main_page_history]
-other = "Storico della Pagina"
-
-[main_page_last_modified_on]
-other = "Ultima modifica alla pagina"
-
-[main_read_about]
-other = "Leggi"
-
-[main_read_more]
-other = "Leggi di più"
-
-[note]
-other = "Nota:"
-
-[objectives_heading]
-other = "Obbiettivi"
-
-[prerequisites_heading]
-other = "Prima di cominciare"
-
-[subscribe_button]
-other = "Iscriviti"
-
-[ui_search_placeholder]
-other = "Cerca"
-
-[version_check_mustbe]
-other = "La tua installazione Kubernetes deve avere la versione "
-
-[version_check_mustbeorlater]
-other = "La tua installazione Kubernetes deve avere almeno la versione "
-
-[version_check_tocheck]
-other = "Per verificare la versione, esegui "
-
-[warning]
-other = "Attenzione:"
-
-[whatsnext_heading]
-other = "Voci correlate"
diff --git a/i18n/it.toml b/i18n/it.toml
new file mode 120000
index 0000000000..bf4e0e004c
--- /dev/null
+++ b/i18n/it.toml
@@ -0,0 +1 @@
+../data/i18n/it/it.toml
\ No newline at end of file
diff --git a/i18n/ja.toml b/i18n/ja.toml
deleted file mode 100644
index a7a103f435..0000000000
--- a/i18n/ja.toml
+++ /dev/null
@@ -1,203 +0,0 @@
-# i18n strings for the English (main) site.
-# NOTE: Please keep the entries in alphabetical order when editing
-
-[caution]
-other = "注意:"
-
-[cleanup_heading]
-other = "クリーンアップ"
-
-[community_events_calendar]
-other = "イベントカレンダー"
-
-[community_forum_name]
-other = "フォーラム"
-
-[community_github_name]
-other = "GitHub"
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[community_youtube_name]
-other = "YouTube"
-
-[deprecation_file_warning]
-other = "廃止予定"
-
-[deprecation_title]
-other = "現在表示しているのは、次のバージョン向けのドキュメントです。Kubernetesバージョン:"
-
-[deprecation_warning]
-other = " のドキュメントは積極的にメンテナンスされていません。現在表示されているバージョンはスナップショットです。最新のドキュメントはこちらです: "
-
-[docs_label_browse]
-other = "ドキュメントの参照"
-
-[docs_label_contributors]
-other = "コントリビューター"
-
-[docs_label_i_am]
-other = "私は..."
-
-[docs_label_users]
-other = "ユーザー"
-
-[feedback_heading]
-other = "フィードバック"
-
-[feedback_no]
-other = "いいえ"
-
-[feedback_question]
-other = "このページは役に立ちましたか?"
-
-[feedback_yes]
-other = "はい"
-
-[input_placeholder_email_address]
-other = "メールアドレス"
-
-[latest_version]
-other = "最新バージョン"
-
-[layouts_blog_pager_prev]
-other = "<< 前"
-
-[layouts_blog_pager_next]
-other = "次 >>"
-
-[layouts_case_studies_list_tell]
-other = "あなたの話を聞かせてください"
-
-[layouts_docs_glossary_aka]
-other = "またの名を"
-
-[layouts_docs_glossary_description]
-other = "この用語集は、Kubernetesの用語の包括的で標準化されたリストを対象としています。これには、Kubernetesに固有で有用なコンテキストを提供しつつも、より一般的な技術用語が含まれています。"
-
-[layouts_docs_glossary_deselect_all]
-other = "すべての選択を解除"
-
-[layouts_docs_glossary_click_details_after]
-other = "特定の用語の詳細な説明を取得するには、以下のインジケータを使用します。"
-
-[layouts_docs_glossary_click_details_before]
-other = "Click on the" # TODO: Translate me
-
-[layouts_docs_glossary_filter]
-other = "タグに従って用語をフィルタ"
-
-[layouts_docs_glossary_select_all]
-other = "すべてを選択"
-
-[layouts_docs_partials_feedback_improvement]
-other = "改善を提案"
-
-[layouts_docs_partials_feedback_issue]
-other = "Open an issue in the GitHub repo if you want to " # TODO: Translate me
-
-[layouts_docs_partials_feedback_or]
-other = "or" # TODO: Translate me
-
-[layouts_docs_partials_feedback_problem]
-other = "問題を報告する"
-
-[layouts_docs_partials_feedback_thanks]
-other = "Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on" # TODO: Translate me
-
-[layouts_docs_search_fetching]
-other = "結果を取得しています..."
-
-[main_by]
-other = "by"
-
-[main_cncf_project]
-other = """私達はCNCF graduated プロジェクトです"""
-
-[main_community_explore]
-other = "コミュニティを探す"
-
-[main_contribute]
-other = "コントリビュート"
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
-
-[main_documentation_license]
-other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
-
-[main_edit_this_page]
-other = "ページ編集"
-
-[main_github_invite]
-other = "Kubernetesのコードを編集することに興味がありますか?"
-
-[main_github_create_an_issue]
-other = "Issue作成"
-
-[main_github_view_on]
-other = "GitHubで参照する"
-
-[main_kubernetes_features]
-other = "Kubernetesの機能"
-
-[main_kubeweekly_baseline]
-other = "最新のKubernetesのニュースを受け取りたいですか? KubeWeeklyにサインアップしてください。"
-
-[main_kubernetes_past_link]
-other = "過去のニュースレターを見る"
-
-[main_kubeweekly_signup]
-other = "登録"
-
-[main_page_history]
-other ="ページ履歴"
-
-[main_page_last_modified_on]
-other = "ページの最終更新"
-
-[main_read_about]
-other = "Read about" #other = "について参照する" TODO: Translate me
-
-[main_read_more]
-other = "続きを読む"
-
-[note]
-other = "備考:"
-
-[objectives_heading]
-other = "目標"
-
-[prerequisites_heading]
-other = "始める前に"
-
-[subscribe_button]
-other = "購読する"
-
-[ui_search_placeholder]
-other = "検索"
-
-[version_check_mustbe]
-other = "作業するKubernetesサーバーは次のバージョンである必要があります: "
-
-[version_check_mustbeorlater]
-other = "作業するKubernetesサーバーは次のバージョン以降のものである必要があります: "
-
-[version_check_tocheck]
-other = "バージョンを確認するには次のコマンドを実行してください: "
-
-[version_menu]
-other = "バージョン"
-
-[warning]
-other = "警告:"
-
-[whatsnext_heading]
-other = "次の項目"
diff --git a/i18n/ja.toml b/i18n/ja.toml
new file mode 120000
index 0000000000..6b08e1f22f
--- /dev/null
+++ b/i18n/ja.toml
@@ -0,0 +1 @@
+../data/i18n/ja/ja.toml
\ No newline at end of file
diff --git a/i18n/ko.toml b/i18n/ko.toml
deleted file mode 100644
index f79f689b88..0000000000
--- a/i18n/ko.toml
+++ /dev/null
@@ -1,232 +0,0 @@
-# i18n strings for the Korean translation.
-# NOTE: Please keep the entries in alphabetical order when editing
-[announcement_title]
-other = "Black lives matter."
-
-[announcement_message]
-other = "우리는 흑인 공동체를 지지합니다.
인종차별은 용납될 수 없습니다.
인종차별은 [쿠버네티스 프로젝트의 핵심 가치](https://git.k8s.io/community/values.md)에 상충되며 우리 공동체는 이를 용인하지 않습니다."
-
-[caution]
-other = "주의:"
-
-[cleanup_heading]
-other = "정리하기"
-
-[community_events_calendar]
-other = "이벤트 캘린더"
-
-[community_forum_name]
-other = "Forum"
-
-[community_github_name]
-other = "GitHub"
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[community_youtube_name]
-other = "YouTube"
-
-[deprecation_title]
-other = "해당 문서의 쿠버네티스 버전:"
-
-[deprecation_warning]
-other = " 문서는 더 이상 적극적으로 관리되지 않음. 현재 보고있는 문서는 정적 스냅샷임. 최신 문서를 위해서는, 다음을 참고. "
-
-[deprecation_file_warning]
-other = "사용 중단됨(deprecated)"
-
-[docs_label_browse]
-other = "문서 둘러보기"
-
-[docs_label_contributors]
-other = "컨트리뷰터"
-
-[docs_label_i_am]
-other = "나는..."
-
-[docs_label_users]
-other = "사용자"
-
-[docs_version_current]
-other = "(현재 문서)"
-
-[docs_version_latest_heading]
-other = "최신 버전"
-
-[docs_version_other_heading]
-other = "이전 버전"
-
-[error_404_were_you_looking_for]
-other = "무엇과 관련된 정보를 찾으시나요?"
-
-[examples_heading]
-other = "예시"
-
-[feedback_heading]
-other = "피드백"
-
-[feedback_question]
-other = "이 페이지가 도움이 되었나요?"
-
-[feedback_yes]
-other = "네"
-
-[feedback_no]
-other = "아니요"
-
-[input_placeholder_email_address]
-other = "전자 우편 주소"
-
-[latest_version]
-other = "최신 버전."
-
-[layouts_blog_pager_prev]
-other = "<< 이전"
-
-[layouts_blog_pager_next]
-other = "다음 >>"
-
-[layouts_case_studies_list_tell]
-other = "당신의 이야기를 들려주세요."
-
-[layouts_docs_glossary_aka]
-other = "별칭"
-
-[layouts_docs_glossary_description]
-other = "이 용어집은 쿠버네티스 용어의 종합적이고 표준화된 리스트를 제공한다. 용어집은 K8s 고유의 기술 용어 뿐만 아니라, 맥락을 이해하는데 유용한 더 일반적인 용어도 포함한다. "
-
-[layouts_docs_glossary_deselect_all]
-other = "모두 선택 해제"
-
-[layouts_docs_glossary_click_details_after]
-other = "표시를 클릭하면 각 용어에 대한 더 자세한 설명을 볼 수 있다."
-
-[layouts_docs_glossary_click_details_before]
-other = "다음"
-
-[layouts_docs_glossary_filter]
-other = "태그에 따라 용어 필터링"
-
-[layouts_docs_glossary_select_all]
-other = "모두 선택"
-
-[layouts_docs_partials_feedback_improvement]
-other = "개선 제안이 가능합니다."
-
-[layouts_docs_partials_feedback_issue]
-other = "원한다면 GitHub 리포지터리에 이슈를 열어서"
-
-[layouts_docs_partials_feedback_or]
-other = "또는"
-
-[layouts_docs_partials_feedback_problem]
-other = "문제 리포트"
-
-[layouts_docs_partials_feedback_thanks]
-other = "피드백 감사합니다. 쿠버네티스 사용 방법에 대해서 구체적이고 답변 가능한 질문이 있다면, 다음 링크에서 질문하십시오."
-
-[layouts_docs_search_fetching]
-other = "결과를 가져오는 중.."
-
-[main_by]
-other = ", 다음 변경에 의해서:"
-
-[main_cncf_project]
-other = """쿠버네티스는 CNCF graduated 프로젝트입니다."""
-
-[main_community_explore]
-other = "커뮤니티 둘러보기"
-
-[main_contribute]
-other = "기여하기"
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
-
-[main_documentation_license]
-other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
-
-[main_github_invite]
-other = "쿠버네티스 핵심 코드 베이스를 살펴보는데 관심이 있으십니까?"
-
-[main_github_view_on]
-other = "GitHub에서 보기"
-
-[main_kubernetes_features]
-other = "쿠버네티스 기능"
-
-[main_kubeweekly_baseline]
-other = "최신 쿠버네티스 뉴스 수신에 관심이 있으십니까? KubeWeekly를 신청하세요."
-
-[main_kubernetes_past_link]
-other = "과거 뉴스레터 보기"
-
-[main_kubeweekly_signup]
-other = "구독하기"
-
-[main_page_history]
-other ="페이지 변경 이력"
-
-[main_page_last_modified_on]
-other = "최종 수정일시"
-
-[main_read_about]
-other = "읽어 보기"
-
-[main_read_more]
-other = "더 읽기"
-
-[note]
-other = "참고:"
-
-[objectives_heading]
-other = "목적"
-
-[options_heading]
-other = "옵션"
-
-[post_create_issue]
-other = "이슈 생성"
-
-[prerequisites_heading]
-other = "시작하기 전에"
-
-[seealso_heading]
-other = "더 보기"
-
-[subscribe_button]
-other = "구독"
-
-[synopsis_heading]
-other = "시놉시스"
-
-[thirdparty_message]
-other = """이 섹션은 쿠버네티스에 필요한 기능을 제공하는 써드파티 프로젝트와 관련이 있다. 쿠버네티스 프로젝트 작성자는 써드파티 프로젝트에 책임이 없다. 이 페이지는 CNCF 웹사이트 가이드라인에 따라 프로젝트를 알파벳 순으로 나열한다. 이 목록에 프로젝트를 추가하려면 변경사항을 제출하기 전에 콘텐츠 가이드를 읽어본다."""
-
-[ui_search_placeholder]
-other = "검색하기"
-
-[version_check_mustbe]
-other = "쿠버네티스 서버의 버전은 다음과 같아야 함. 버전: "
-
-[version_check_mustbeorlater]
-other = "쿠버네티스 서버의 버전은 다음과 같거나 더 높아야 함. 버전: "
-
-[version_check_tocheck]
-other = "버전 확인을 위해서, 다음 커맨드를 실행 "
-
-[version_menu]
-other = "버전"
-
-[warning]
-other = "경고:"
-
-[whatsnext_heading]
-other = "다음 내용"
diff --git a/i18n/ko.toml b/i18n/ko.toml
new file mode 120000
index 0000000000..093839dd5d
--- /dev/null
+++ b/i18n/ko.toml
@@ -0,0 +1 @@
+../data/i18n/ko/ko.toml
\ No newline at end of file
diff --git a/i18n/nl.toml b/i18n/nl.toml
deleted file mode 100644
index a0aa6faee4..0000000000
--- a/i18n/nl.toml
+++ /dev/null
@@ -1,197 +0,0 @@
-# i18n strings for the Dutch (main) site.
-
-[deprecation_warning]
-other = " documentatie wordt niet langer actief onderhouden. De versie die u momenteel bekijkt is een statische momentopname. Zie voor bijgewerkte documentatie "
-
-[deprecation_file_warning]
-other = "Verouderd"
-
-[objectives_heading]
-other = "Doelen"
-
-[cleanup_heading]
-other = "Opschonen"
-
-[prerequisites_heading]
-other = "Voordat je begint"
-
-[whatsnext_heading]
-other = "Wat nu volgt"
-
-[feedback_heading]
-other = "Feedback"
-
-[feedback_question]
-other = "Was deze pagina nuttig?"
-
-[feedback_yes]
-other = "Ja"
-
-[feedback_no]
-other = "Nee"
-
-[latest_version]
-other = "laatste versie."
-
-[version_check_mustbe]
-other = "Je Kubernetes server moet op de volgende versie zitten "
-
-[version_check_mustbeorlater]
-other = "Je Kubernetes server moet op de volgende of latere versie zitten "
-
-[version_check_tocheck]
-other = "Voer het volgende in om de versie te controleren "
-
-[caution]
-other = "Voorzichtig:"
-
-[note]
-other = "Opmerking:"
-
-[warning]
-other = "Opletten:"
-
-[main_read_about]
-other = "Lees over"
-
-[main_read_more]
-other = "Lees meer"
-
-[main_github_invite]
-other = "Geïnteresseerd om aan de core Kubernetes code base te werken?"
-
-[main_github_view_on]
-other = "Bekijk op GitHub"
-
-[main_github_create_an_issue]
-other = "Maak een Issue"
-
-[main_community_explore]
-other = "Verken de community"
-
-[main_kubernetes_features]
-other = "Kubernetes functies"
-
-[main_cncf_project]
-other = """We zijn een CNCF project"""
-
-[main_kubeweekly_baseline]
-other = "Wil je het laatste Kubernates nieuws ontvangen? Abonneer je op KubeWeekly."
-
-[main_kubernetes_past_link]
-other = "Eerdere nieuwsbrieven bekijken"
-
-[main_kubeweekly_signup]
-other = "Abonneren"
-
-[main_contribute]
-other = "Bijdragen"
-
-[main_edit_this_page]
-other = "Bewerk deze pagina"
-
-[main_page_history]
-other ="Pagina geschiedenis"
-
-[main_page_last_modified_on]
-other = "Pagina laatst gewijzigd op"
-
-[main_by]
-other = "door"
-
-[main_documentation_license]
-other = """De Kubernetes auteurs | Documentatie verspreid onder CC BY 4.0"""
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. Alle rechten voorbehouden. De Linux Foundation heeft handelsmerken geregistreerd en handelsmerken. gebruikt Voor een lijst met handelsmerken van The Linux Foundation raadpleegt u onzeHandelsmerkgebruikspagina"""
-
-# Labels for the docs portal home page.
-[docs_label_browse]
-other = "Bladeren door documenten"
-
-[docs_label_contributors]
-other = "Bijdragers"
-
-[docs_label_users]
-other = "Gebruikers"
-
-[docs_label_i_am]
-other = "IK BEN..."
-
-# layouts > blog > pager
-
-[layouts_blog_pager_prev]
-other = "<< Vorige"
-
-[layouts_blog_pager_next]
-other = "Volgende >>"
-
-# layouts > blog > list
-
-[layouts_case_studies_list_tell]
-other = "Vertel jouw verhaal"
-
-# layouts > docs > glossary
-
-[layouts_docs_glossary_description]
-other = "Deze verklarende woordenlijst is bedoeld als een uitgebreide, gestandaardiseerde lijst van Kubernetes-terminologie. Het bevat technische termen die specifiek zijn voor K8s, evenals meer algemene termen die een bruikbare context bieden."
-
-[layouts_docs_glossary_filter]
-other = "Filter termen op basis van hun tags"
-
-[layouts_docs_glossary_select_all]
-other = "Alles selecteren"
-
-[layouts_docs_glossary_deselect_all]
-other = "Alles deselecteren"
-
-[layouts_docs_glossary_aka]
-other = "Ook bekend als"
-
-[layouts_docs_glossary_click_details_before]
-other = "Klik op de"
-
-[layouts_docs_glossary_click_details_after]
-other = "onderstaande indicatoren om een langere verklaring voor een bepaalde term te krijgen."
-
-# layouts > docs > search
-
-[layouts_docs_search_fetching]
-other = "Resultaten ophalen.."
-
-# layouts > partial > feedback
-
-[layouts_docs_partials_feedback_thanks]
-other = "Bedankt voor de feedback. Als je een specifieke vraag hebt, die beantwoord moet worden, over het gebruik van Kubernetes, vraag het dan op"
-
-[layouts_docs_partials_feedback_issue]
-other = "Open een probleem in de GitHub-repo "
-
-[layouts_docs_partials_feedback_problem]
-other = "meld een probleem"
-
-[layouts_docs_partials_feedback_or]
-other = "of"
-
-[layouts_docs_partials_feedback_improvement]
-other = "doe een suggestie voor een verbetering"
-
-# Community links
-[community_twitter_name]
-other = "Twitter"
-[community_github_name]
-other = "GitHub"
-[community_slack_name]
-other = "Slack"
-[community_stack_overflow_name]
-other = "Stack Overflow"
-[community_forum_name]
-other = "Forum"
-[community_events_calendar]
-other = "Evenementenkalender"
-[community_youtube_name]
-other = "YouTube"
-
-# UI elements
-[ui_search_placeholder]
-other = "Zoeken"
diff --git a/i18n/nl.toml b/i18n/nl.toml
new file mode 120000
index 0000000000..181ed9aedb
--- /dev/null
+++ b/i18n/nl.toml
@@ -0,0 +1 @@
+../data/i18n/nl/nl.toml
\ No newline at end of file
diff --git a/i18n/no.toml b/i18n/no.toml
deleted file mode 100644
index ff786d7d35..0000000000
--- a/i18n/no.toml
+++ /dev/null
@@ -1,68 +0,0 @@
-# i18n strings for the Norwegian translation.
-
-[main_read_about]
-other = "Les om"
-
-[main_read_more]
-other = "Les mer"
-
-[main_github_invite]
-other = "Interessert kode i Kubernetes?"
-
-[main_github_view_on]
-other = "Åpne på GitHub"
-
-[main_github_create_an_issue]
-other = "Opprett en issue"
-
-[main_community_explore]
-other = "Utforsk folkene bak Kubernetes"
-
-[main_kubernetes_features]
-other = "Egenskaper i Kubernetes"
-
-[main_cncf_project]
-other = """Vi er et CNCF-prosjekt"""
-
-[main_contribute]
-other = "Bidra"
-
-[main_edit_this_page]
-other = "Endre denne siden"
-
-[main_page_history]
-other ="Side-historikk"
-
-[main_page_last_modified_on]
-other = "Side sist endret"
-
-[main_by]
-other = "av"
-
-[main_documentation_license]
-other = """Kubernetes-forfatterene | Dokumentasjonen er utgitt med CC BY 4.0-lisens"""
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. Alle retter er reservert. The Linux Foundation har registrerte varemerker. For en oversikt, se Bruk av varemerker"""
-
-# Labels for the docs portal home page.
-[docs_label_browse]
-other = "All dokumentasjon"
-
-# Community links
-[community_twitter_name]
-other = "Twitter"
-[community_github_name]
-other = "GitHub"
-[community_slack_name]
-other = "Slack"
-[community_stack_overflow_name]
-other = "Stack Overflow"
-[community_forum_name]
-other = "Forum"
-[community_events_calendar]
-other = "Kalender"
-
-# UI elements
-[ui_search_placeholder]
-other = "Søk"
\ No newline at end of file
diff --git a/i18n/no.toml b/i18n/no.toml
new file mode 120000
index 0000000000..d27b699464
--- /dev/null
+++ b/i18n/no.toml
@@ -0,0 +1 @@
+../data/i18n/no/no.toml
\ No newline at end of file
diff --git a/i18n/pl.toml b/i18n/pl.toml
deleted file mode 100644
index 9621301a49..0000000000
--- a/i18n/pl.toml
+++ /dev/null
@@ -1,197 +0,0 @@
-# i18n strings for the Polish site.
-# NOTE: Please keep the entries in alphabetical order when editing
-
-[caution]
-other = "Ostrzeżenie:"
-
-[cleanup_heading]
-other = "Sprzątamy po sobie"
-
-[community_events_calendar]
-other = "Kalendarz wydarzeń"
-
-[community_forum_name]
-other = "Forum"
-
-[community_github_name]
-other = "GitHub"
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[community_youtube_name]
-other = "YouTube"
-
-[deprecation_warning]
-other = " dokumentacja nie jest już aktualizowana. Wyświetlona jest wersja archiwalna. Po aktualną dokumentację zajrzyj na"
-
-[deprecation_file_warning]
-other = "Przestarzały"
-
-[docs_label_browse]
-other = "Przeglądaj dokumentację"
-
-[docs_label_contributors]
-other = "Współautorzy"
-
-[docs_label_i_am]
-other = "Jestem..."
-
-[docs_label_users]
-other = "Użytkownicy"
-
-[feedback_heading]
-other = "Twoja opinia"
-
-[feedback_no]
-other = "Nie"
-
-[feedback_question]
-other = "Czy ta strona była przydatna?"
-
-[feedback_yes]
-other = "Tak"
-
-[input_placeholder_email_address]
-other = "adres e-mail"
-
-[latest_version]
-other = "to najnowsza wersja."
-
-[layouts_blog_pager_prev]
-other = "<< Poprzedni"
-
-[layouts_blog_pager_next]
-other = "Następny >>"
-
-[layouts_case_studies_list_tell]
-other = "Opowiedz swoją historię"
-
-[layouts_docs_glossary_aka]
-other = "Znany też jako"
-
-[layouts_docs_glossary_description]
-other = "Celem tego słownika jest przedstawienie wszechstronnej, ujednoliconej listy terminologii związanej z projektem Kubernetes. Słownik zawiera terminy specyficzne dla Kubernetesa, a także pojęcia bardziej ogólne, umożliwiające lepsze zrozumienie kontekstu."
-
-[layouts_docs_glossary_deselect_all]
-other = "Odznacz wszystko"
-
-[layouts_docs_glossary_click_details_after]
-other = "po dokładniejsze wytłumaczenie."
-
-[layouts_docs_glossary_click_details_before]
-other = "Kliknij w"
-
-[layouts_docs_glossary_filter]
-other = "Znajdź pojęcia według etykiet"
-
-[layouts_docs_glossary_select_all]
-other = "Zaznacz wszystko"
-
-[layouts_docs_partials_feedback_improvement]
-other = "zaproponować poprawkę"
-
-[layouts_docs_partials_feedback_issue]
-other = "Otwórz zgłoszenie w repozytorium GitHub, jeśli chcesz "
-
-[layouts_docs_partials_feedback_or]
-other = "lub"
-
-[layouts_docs_partials_feedback_problem]
-other = "zgłosić problem"
-
-[layouts_docs_partials_feedback_thanks]
-other = "Dziękujemy za informację zwrotną. Jeśli masz konkretne pytanie dotyczące użycia Kubernetesa, odwiedź"
-
-[layouts_docs_search_fetching]
-other = "Pobieram wyniki.."
-
-[main_by]
-other = "przez"
-
-[main_cncf_project]
-other = """Nasz projekt jest uznany przez CNCF za dojrzały"""
-
-[main_community_explore]
-other = "Poznaj społeczność"
-
-[main_contribute]
-other = "Wnieś swój wkład"
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
-
-[main_documentation_license]
-other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
-
-[main_edit_this_page]
-other = "Edytuj stronę"
-
-[main_github_create_an_issue]
-other = "Zgłoś problem"
-
-[main_github_invite]
-other = "Chcesz zacząć współtworzyć kod Kubernetesa?"
-
-[main_github_view_on]
-other = "Zajrzyj na GitHub"
-
-[main_kubernetes_features]
-other = "Funkcjonalności Kubernetesa"
-
-[main_kubeweekly_baseline]
-other = "Zapisz się na KubeWeekly, jeśli jesteś zainteresowany najnowszymi wiadomościami o Kubernetesie."
-
-[main_kubernetes_past_link]
-other = "Poprzednie newslettery"
-
-[main_kubeweekly_signup]
-other = "Zapisz się"
-
-[main_page_history]
-other ="Historia strony"
-
-[main_page_last_modified_on]
-other = "Ostatnia modyfikacja strony"
-
-[main_read_about]
-other = "Przeczytaj o"
-
-[main_read_more]
-other = "Przeczytaj więcej"
-
-[note]
-other = "Informacja:"
-
-[objectives_heading]
-other = "Cele"
-
-[prerequisites_heading]
-other = "Nim zaczniesz"
-
-[subscribe_button]
-other = "Subskrybuj"
-
-[ui_search_placeholder]
-other = "Szukaj"
-
-[version_check_mustbe]
-other = "Twój serwer Kubernetes musi być w wersji "
-
-[version_check_mustbeorlater]
-other = "Twój serwer Kubernetes musi być co najmniej w wersji "
-
-[version_check_tocheck]
-other = "Aby sprawdzić wersję, wpisz "
-
-[warning]
-other = "Uwaga:"
-
-[whatsnext_heading]
-other = "Następne:"
diff --git a/i18n/pl.toml b/i18n/pl.toml
new file mode 120000
index 0000000000..e4ecf8192e
--- /dev/null
+++ b/i18n/pl.toml
@@ -0,0 +1 @@
+../data/i18n/pl/pl.toml
\ No newline at end of file
diff --git a/i18n/pt-br.toml b/i18n/pt-br.toml
deleted file mode 100644
index 3f55a665b3..0000000000
--- a/i18n/pt-br.toml
+++ /dev/null
@@ -1,240 +0,0 @@
- # i18n strings for the Portuguese (main) site.
-[caution]
-other = "Cuidado:"
-
-[cleanup_heading]
-other = "Limpando"
-
-[community_events_calendar]
-other = "Calendário de Eventos"
-
-[community_forum_name]
-other = "Fórum"
-
-[community_github_name]
-other = "GitHub"
-
-# Community links
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[deprecation_file_warning]
-other = "Descontinuado"
-
-[deprecation_title]
-other = "Você está vendo a documentação do Kubernetes versão:"
-
-[deprecation_warning]
-other = " a documentação não é mais mantida ativamente. A versão que você está visualizando no momento é uma captura instantânea estática. Para obter documentação atualizada, consulte "
-
-[docs_label_browse]
-other = "Procurar documentos"
-
-[docs_label_contributors]
-other = "Colaboradores"
-
-[docs_label_i_am]
-other = "Eu sou..."
-
-[docs_label_users]
-other = "Usuários"
-
-[docs_version_current]
-other = "(esta documentação)"
-
-[docs_version_latest_heading]
-other = "Versão mais recente"
-
-[docs_version_other_heading]
-other = "Versões mais antigas"
-
-[error_404_were_you_looking_for]
-other = "Talvez você estivesse procurando por:"
-
-[examples_heading]
-other = "Exemplos"
-
-[feedback_heading]
-other = "Comentários"
-
-[feedback_no]
-other = "Não"
-
-[feedback_question]
-other = "Esta página foi útil?"
-
-[feedback_yes]
-other = "Sim"
-
-[input_placeholder_email_address]
-other = "endereço de e-mail"
-
-[latest_version]
-other = "última versão."
-
-[layouts_blog_pager_next]
-other = "Próximo >>"
-
-[layouts_blog_pager_prev]
-other = "<< Anterior"
-
-[layouts_case_studies_list_tell]
-other = "Conte seu caso"
-
-[layouts_docs_glossary_aka]
-other = "Também conhecido como"
-
-[layouts_docs_glossary_click_details_after]
-other = "indicadores abaixo para uma maior explicação sobre um termo em particular."
-
-[layouts_docs_glossary_click_details_before]
-other = "Clique nos"
-
-[layouts_docs_glossary_description]
-other = "Este glossário pretende ser uma lista padronizada e abrangente da terminologia do Kubernetes. Inclui termos técnicos específicos dos K8s, além de termos mais gerais que fornecem um contexto útil."
-
-[layouts_docs_glossary_deselect_all]
-other = "Desmarcar tudo"
-
-[layouts_docs_glossary_filter]
-other = "Filtrar termos de acordo com suas tags"
-
-[layouts_docs_glossary_select_all]
-other = "Selecionar tudo"
-
-[layouts_docs_partials_feedback_improvement]
-other = "sugerir uma melhoria"
-
-[layouts_docs_partials_feedback_issue]
-other = "Abra um bug no repositório do GitHub se você deseja "
-
-[layouts_docs_partials_feedback_or]
-other = "ou"
-
-[layouts_docs_partials_feedback_problem]
-other = "reportar um problema"
-
-[layouts_docs_partials_feedback_thanks]
-other = "Obrigado pelo feedback. Se você tiver uma pergunta específica sobre como utilizar o Kubernetes, faça em"
-
-[layouts_docs_search_fetching]
-other = "Buscando resultados.."
-
-# Main page localization
-
-[main_by]
-other = "por"
-
-[main_cncf_project]
-other = """Nós somos uma CNCF projeto graduado"""
-
-[main_community_explore]
-other = "Explore a comunidade"
-
-[main_contribute]
-other = "Contribuir"
-
-[main_copyright_notice]
-other = """A Fundação Linux ®. Todos os direitos reservados. A Linux Foundation tem marcas registradas e usa marcas registradas. Para uma lista de marcas registradas da The Linux Foundation, por favor, veja nossa Página de uso de marca registrada"""
-
-[main_documentation_license]
-other = """Os autores do Kubernetes | Documentação Distribuída sob CC BY 4.0"""
-
-[main_edit_this_page]
-other = "Edite essa página"
-
-[main_github_create_an_issue]
-other = "Abra um bug"
-
-[main_github_invite]
-other = "Interessado em mergulhar na base de código do Kubernetes?"
-
-[main_github_view_on]
-other = "Veja no Github"
-
-[main_kubernetes_features]
-other = "Recursos do Kubernetes"
-
-[main_kubernetes_past_link]
-other = "Veja boletins passados"
-
-[main_kubeweekly_baseline]
-other = "Interessado em receber as últimas novidades sobre Kubernetes? Inscreva-se no KubeWeekly."
-
-[main_kubeweekly_signup]
-other = "Se inscrever"
-
-[main_page_history]
-other ="História da página"
-
-[main_page_last_modified_on]
-other = "Última modificação da página em"
-
-[main_read_about]
-other = "Ler sobre"
-
-[main_read_more]
-other = "Consulte Mais informação"
-
-# Miscellaneous
-
-[note]
-other = "Nota:"
-
-[objectives_heading]
-other = "Objetivos"
-
-[options_heading]
-other = "Opções"
-
-[post_create_issue]
-other = "Abra um bug"
-
-[prerequisites_heading]
-other = "Antes de você começar"
-
-[subscribe_button]
-other = "Se inscrever"
-
-[thirdparty_message]
-other = """Esta seção tem links para projetos de terceiros que fornecem a funcionalidade exigida pelo Kubernetes. Os autores do projeto Kubernetes não são responsáveis por esses projetos. Esta página obedece as diretrizes de conteúdo do site CNCF, listando os itens em ordem alfabética. Para adicionar um projeto a esta lista, leia o guia de conteúdo antes de enviar sua alteração."""
-
-[ui_search_placeholder]
-other = "Procurar"
-
-[version_check_mustbeorlater]
-other = "O seu servidor Kubernetes deve estar em ou depois da versão "
-
-[version_check_mustbe]
-other = "Seu servidor Kubernetes deve ser versão"
-
-[version_check_tocheck]
-other = "Para verificar a versão, digite "
-
-[version_menu]
-other = "Versões"
-
-[warning]
-other = "Aviso:"
-
-[whatsnext_heading]
-other = "Qual é o próximo"
-
-[print_printable_section]
-other = "Essa é a versão completa de impressão dessa seção"
-
-[print_click_to_print]
-other = "Clique aqui para imprimir"
-
-[print_show_regular]
-other = "Retornar à visualização normal"
-
-[print_entire_section]
-other = "Imprimir toda essa seção"
diff --git a/i18n/pt-br.toml b/i18n/pt-br.toml
new file mode 120000
index 0000000000..b76a47d58e
--- /dev/null
+++ b/i18n/pt-br.toml
@@ -0,0 +1 @@
+../data/i18n/pt/pt-br.toml
\ No newline at end of file
diff --git a/i18n/ru.toml b/i18n/ru.toml
deleted file mode 100644
index 37447c0cad..0000000000
--- a/i18n/ru.toml
+++ /dev/null
@@ -1,201 +0,0 @@
-# i18n strings for the Russian (main) site.
-
-[deprecation_warning]
-other = " документация больше не поддерживается. Версия, которую вы сейчас просматриваете, является статической. Актуальную документацию вы можете найти "
-
-[deprecation_file_warning]
-other = "Устаревшая"
-
-[objectives_heading]
-other = "Цели"
-
-[cleanup_heading]
-other = "Очистка"
-
-[prerequisites_heading]
-other = "Подготовка к работе"
-
-[subscribe_button]
-other = "Подписаться"
-
-[whatsnext_heading]
-other = "Что дальше"
-
-[feedback_heading]
-other = "Обратная связь"
-
-[feedback_question]
-other = "Была ли эта страница полезной?"
-
-[feedback_yes]
-other = "Да"
-
-[feedback_no]
-other = "Нет"
-
-[latest_version]
-other = "последняя версия."
-
-[version_check_mustbe]
-other = "Ваш сервер Kubernetes должен быть версии "
-
-[version_check_mustbeorlater]
-other = "Ваш сервер Kubernetes должен быть версии или позже, чем версия "
-
-[version_check_tocheck]
-other = "Чтобы проверить версию, введите "
-
-[caution]
-other = "Внимание:"
-
-[note]
-other = "Заметка:"
-
-[warning]
-other = "Предупреждение:"
-
-[main_read_about]
-other = "Прочитать о"
-
-[main_read_more]
-other = "Прочитать больше"
-
-[main_github_invite]
-other = "Хотите взломать ядро кодовой базы Kubernetes?"
-
-[main_github_view_on]
-other = "Посмотреть на GitHub"
-
-[main_github_create_an_issue]
-other = "Сообщить о проблеме"
-
-[main_community_explore]
-other = "Познакомиться с сообществом"
-
-[main_kubernetes_features]
-other = "Возможности Kubernetes"
-
-[main_cncf_project]
-other = """Мы являемся проектом CNCF"""
-
-[main_kubeweekly_baseline]
-other = "Интересуетесь последними новостями Kubernetes? Зарегистрируйтесь в KubeWeekly."
-
-[main_kubernetes_past_link]
-other = "Посмотреть последние новости"
-
-[main_kubeweekly_signup]
-other = "Подписаться"
-
-[main_contribute]
-other = "Помочь проекту"
-
-[main_edit_this_page]
-other = "Редактировать эту страницу"
-
-[main_page_history]
-other ="История страницы"
-
-[main_page_last_modified_on]
-other = "Последний раз страница редактировалась"
-
-[main_by]
-other = "by"
-
-[main_documentation_license]
-other = """Авторы Kubernetes | Документация распространяется под лицензией CC BY 4.0"""
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. Все права защищены. The Linux Foundation является зарегистрированной торговой маркой. Список торговых марок The Linux Foundation приведен на странице использования торговых марок"""
-
-# Labels for the docs portal home page.
-[docs_label_browse]
-other = "Просмотр документации"
-
-[docs_label_contributors]
-other = "Участники сообщества"
-
-[docs_label_users]
-other = "Пользователи"
-
-[docs_label_i_am]
-other = "Я ..."
-
-# layouts > blog > pager
-
-[layouts_blog_pager_prev]
-other = "<< Назад"
-
-[layouts_blog_pager_next]
-other = "Вперёд >>"
-
-# layouts > blog > list
-
-[layouts_case_studies_list_tell]
-other = "Расскажите свою историю"
-
-# layouts > docs > glossary
-
-[layouts_docs_glossary_description]
-other = "Данный глоссарий должен стать исчерпывающим стандартизированным списком терминологии в Kubernetes. Он включает технические термины, специфичные для K8s, а также более общие термины, которые полезно знать."
-
-[layouts_docs_glossary_filter]
-other = "Фильтрация терминов по тегам"
-
-[layouts_docs_glossary_select_all]
-other = "Выделить всё"
-
-[layouts_docs_glossary_deselect_all]
-other = "Отменить выбор всех тегов"
-
-[layouts_docs_glossary_aka]
-other = "Также известный как"
-
-[layouts_docs_glossary_click_details_before]
-other = "Нажмите на значок"
-
-[layouts_docs_glossary_click_details_after]
-other = "для получения более подробное объяснения по интересующему термину."
-
-# layouts > docs > search
-
-[layouts_docs_search_fetching]
-other = "Получение результатов.."
-
-# layouts > partial > feedback
-
-[layouts_docs_partials_feedback_thanks]
-other = "Спасибо за отзыв! Если у вас есть конкретный вопрос об использовании Kubernetes, спрашивайте"
-
-[layouts_docs_partials_feedback_issue]
-other = "Сообщите о проблеме в репозитории GitHub, если вы хотите "
-
-[layouts_docs_partials_feedback_problem]
-other = "сообщить о проблеме"
-
-[layouts_docs_partials_feedback_or]
-other = "или"
-
-[layouts_docs_partials_feedback_improvement]
-other = "предложить улучшение"
-
-# Community links
-[community_twitter_name]
-other = "Twitter"
-[community_github_name]
-other = "GitHub"
-[community_slack_name]
-other = "Slack"
-[community_stack_overflow_name]
-other = "Stack Overflow"
-[community_forum_name]
-other = "Форум"
-[community_events_calendar]
-other = "Календарь событий"
-
-# UI elements
-[ui_search_placeholder]
-other = "Поиск"
-
-[input_placeholder_email_address]
-other = "адрес электронной почты"
\ No newline at end of file
diff --git a/i18n/ru.toml b/i18n/ru.toml
new file mode 120000
index 0000000000..4e9327662b
--- /dev/null
+++ b/i18n/ru.toml
@@ -0,0 +1 @@
+../data/i18n/ru/ru.toml
\ No newline at end of file
diff --git a/i18n/uk.toml b/i18n/uk.toml
deleted file mode 100644
index ec60865783..0000000000
--- a/i18n/uk.toml
+++ /dev/null
@@ -1,255 +0,0 @@
-# i18n strings for the Ukrainian (main) site.
-
-[caution]
-# other = "Caution:"
-other = "Увага:"
-
-[cleanup_heading]
-# other = "Cleaning up"
-other = "Очистка"
-
-[community_events_calendar]
-# other = "Events Calendar"
-other = "Календар подій"
-
-[community_forum_name]
-# other = "Forum"
-other = "Форум"
-
-[community_github_name]
-other = "GitHub"
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[community_youtube_name]
-other = "YouTube"
-
-[deprecation_warning]
-# other = " documentation is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date documentation, see the "
-other = " документація більше не підтримується. Версія, яку ви зараз переглядаєте, є статичною. Для перегляду актуальної документації дивіться "
-
-[deprecation_file_warning]
-# other = "Deprecated"
-other = "Застаріла версія"
-
-[docs_label_browse]
-# other = "Browse Docs"
-other = "Переглянути документацію"
-
-[docs_label_contributors]
-# other = "Contributors"
-other = "Контриб'ютори"
-
-[docs_label_i_am]
-# other = "I AM..."
-other = "Я..."
-
-[docs_label_users]
-# other = "Users"
-other = "Користувачі"
-
-[feedback_heading]
-# other = "Feedback"
-other = "Ваша думка"
-
-[feedback_no]
-# other = "No"
-other = "Ні"
-
-[feedback_question]
-# other = "Was this page helpful?"
-other = "Чи була ця сторінка корисною?"
-
-[feedback_yes]
-# other = "Yes"
-other = "Так"
-
-[input_placeholder_email_address]
-# other = "email address"
-other = "електронна адреса"
-
-[latest_version]
-# other = "latest version."
-other = "остання версія."
-
-[layouts_blog_pager_prev]
-# other = "<< Prev"
-other = "<< Назад"
-
-[layouts_blog_pager_next]
-# other = "Next >>"
-other = "Далі >>"
-
-[layouts_case_studies_list_tell]
-# other = "Tell your story"
-other = "Розкажіть свою історію"
-
-[layouts_docs_glossary_aka]
-# other = "Also known as"
-other = "Також відомий як"
-
-[layouts_docs_glossary_description]
-# other = "This glossary is intended to be a comprehensive, standardized list of Kubernetes terminology. It includes technical terms that are specific to Kubernetes, as well as more general terms that provide useful context."
-other = "Даний словник створений як повний стандартизований список термінології Kubernetes. Він включає в себе технічні терміни, специфічні для Kubernetes, а також більш загальні терміни, необхідні для кращого розуміння контексту."
-
-[layouts_docs_glossary_deselect_all]
-# other = "Deselect all"
-other = "Очистити вибір"
-
-[layouts_docs_glossary_click_details_after]
-# other = "indicators below to get a longer explanation for any particular term."
-other = "для отримання розширеного пояснення конкретного терміна."
-
-[layouts_docs_glossary_click_details_before]
-# other = "Click on the"
-other = "Натисність на"
-
-[layouts_docs_glossary_filter]
-# other = "Filter terms according to their tags"
-other = "Відфільтрувати терміни за тегами"
-
-[layouts_docs_glossary_select_all]
-# other = "Select all"
-other = "Вибрати все"
-
-[layouts_docs_partials_feedback_improvement]
-# other = "suggest an improvement"
-other = "запропонувати покращення"
-
-[layouts_docs_partials_feedback_issue]
-# other = "Open an issue in the GitHub repo if you want to "
-other = "Створіть issue в GitHub репозиторії, якщо ви хочете "
-
-[layouts_docs_partials_feedback_or]
-# other = "or"
-other = "або"
-
-[layouts_docs_partials_feedback_problem]
-# other = "report a problem"
-other = "повідомити про проблему"
-
-[layouts_docs_partials_feedback_thanks]
-# other = "Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on"
-other = "Дякуємо за ваш відгук. Якщо ви маєте конкретне запитання щодо використання Kubernetes, ви можете поставити його"
-
-[layouts_docs_search_fetching]
-# other = "Fetching results..."
-other = "Отримання результатів..."
-
-[main_by]
-other = "by"
-
-[main_cncf_project]
-# other = """We are a CNCF graduated project"""
-other = """Ми є проектом CNCF"""
-
-[main_community_explore]
-# other = "Explore the community"
-other = "Познайомитись із спільнотою"
-
-[main_contribute]
-# other = "Contribute"
-other = "Допомогти проекту"
-
-[main_copyright_notice]
-# other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
-other = """The Linux Foundation ®. Всі права застережено. The Linux Foundation є зареєстрованою торговою маркою. Перелік торгових марок The Linux Foundation ви знайдете на нашій сторінці Використання торгових марок"""
-
-[main_documentation_license]
-# other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
-other = """Автори Kubernetes | Документація розповсюджується під ліцензією CC BY 4.0"""
-
-[main_edit_this_page]
-# other = "Edit This Page"
-other = "Редагувати цю сторінку"
-
-[main_github_create_an_issue]
-# other = "Create an Issue"
-other = "Створити issue"
-
-[main_github_invite]
-# other = "Interested in hacking on the core Kubernetes code base?"
-other = "Хочете зламати основну кодову базу Kubernetes?"
-
-[main_github_view_on]
-# other = "View On GitHub"
-other = "Переглянути у GitHub"
-
-[main_kubernetes_features]
-# other = "Kubernetes Features"
-other = "Функціональні можливості Kubernetes"
-
-[main_kubeweekly_baseline]
-# other = "Interested in receiving the latest Kubernetes news? Sign up for KubeWeekly."
-other = "Хочете отримувати останні новини Kubernetes? Підпишіться на KubeWeekly."
-
-[main_kubernetes_past_link]
-# other = "View past newsletters"
-other = "Переглянути попередні інформаційні розсилки"
-
-[main_kubeweekly_signup]
-# other = "Subscribe"
-other = "Підписатися"
-
-[main_page_history]
-# other ="Page History"
-other ="Історія сторінки"
-
-[main_page_last_modified_on]
-# other = "Page last modified on"
-other = "Сторінка востаннє редагувалася"
-
-[main_read_about]
-# other = "Read about"
-other = "Прочитати про"
-
-[main_read_more]
-# other = "Read more"
-other = "Прочитати більше"
-
-[note]
-# other = "Note:"
-other = "Примітка:"
-
-[objectives_heading]
-# other = "Objectives"
-other = "Цілі"
-
-[prerequisites_heading]
-# other = "Before you begin"
-other = "Перш ніж ви розпочнете"
-
-[subscribe_button]
-# other = "Subscribe"
-other = "Підписатися"
-
-[ui_search_placeholder]
-# other = "Search"
-other = "Пошук"
-
-[version_check_mustbe]
-# other = "Your Kubernetes server must be version "
-other = "Версія вашого Kubernetes сервера має бути "
-
-[version_check_mustbeorlater]
-# other = "Your Kubernetes server must be at or later than version "
-other = "Версія вашого Kubernetes сервера має дорівнювати або бути молодшою ніж "
-
-[version_check_tocheck]
-# other = "To check the version, enter "
-other = "Для перевірки версії введіть "
-
-[warning]
-# other = "Warning:"
-other = "Попередження:"
-
-[whatsnext_heading]
-# other = "What's next"
-other = "Що далі"
diff --git a/i18n/uk.toml b/i18n/uk.toml
new file mode 120000
index 0000000000..7066896b8c
--- /dev/null
+++ b/i18n/uk.toml
@@ -0,0 +1 @@
+../data/i18n/uk/uk.toml
\ No newline at end of file
diff --git a/i18n/vi.toml b/i18n/vi.toml
deleted file mode 100644
index d65c07a720..0000000000
--- a/i18n/vi.toml
+++ /dev/null
@@ -1,197 +0,0 @@
-# i18n strings for the Vietnamese (main) site.
-
-[caution]
-other = "Chú ý:"
-
-[cleanup_heading]
-other = "Cleaning up"
-
-[community_events_calendar]
-other = "Lịch sự kiện"
-
-[community_forum_name]
-other = "Diễn đàn"
-
-[community_github_name]
-other = "GitHub"
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[community_youtube_name]
-other = "YouTube"
-
-[deprecation_warning]
-other = " tài liệu này không còn được duy trì. Phiên bản đang xem hiện tại là một snapshot tĩnh. Để rõ hơn về tài liệu bản cập nhật, xem "
-
-[deprecation_file_warning]
-other = "Không dùng nữa"
-
-[docs_label_browse]
-other = "Duyệt tài liệu"
-
-[docs_label_contributors]
-other = "Người đóng góp"
-
-[docs_label_i_am]
-other = "TÔI LÀ..."
-
-[docs_label_users]
-other = "Users"
-
-[feedback_heading]
-other = "Phản hồi"
-
-[feedback_no]
-other = "Không"
-
-[feedback_question]
-other = "Trang này có hữu ích?"
-
-[feedback_yes]
-other = "Có"
-
-[input_placeholder_email_address]
-other = "địa chỉ email"
-
-[latest_version]
-other = "phiên bản mới nhất."
-
-[layouts_blog_pager_prev]
-other = "<< Trước"
-
-[layouts_blog_pager_next]
-other = "Sau >>"
-
-[layouts_case_studies_list_tell]
-other = "Kể câu chuyện của bạn"
-
-[layouts_docs_glossary_aka]
-other = "Cũng được biết đến như là"
-
-[layouts_docs_glossary_description]
-other = "Bảng chú giải này được kì vọng là một danh sách hoàn thiện, được chuẩn hóa về thuật ngữ Kubernetes. Nó bao gồm các thuật ngữ kỹ thuật dành riêng cho Kubernetes, cũng như các thuật ngữ chung hơn cung cấp ngữ cảnh hữu ích"
-
-[layouts_docs_glossary_deselect_all]
-other = "Bỏ chọn tất cả"
-
-[layouts_docs_glossary_click_details_after]
-other = "danh mục dưới đây để giải thích rõ hơn cho các thuật ngữ cụ thể"
-
-[layouts_docs_glossary_click_details_before]
-other = "Click vào"
-
-[layouts_docs_glossary_filter]
-other = "Lọc các thuật ngữ theo tags"
-
-[layouts_docs_glossary_select_all]
-other = "Chọn tất cả"
-
-[layouts_docs_partials_feedback_improvement]
-other = "đề xuất cải tiến"
-
-[layouts_docs_partials_feedback_issue]
-other = "Tạo một issue trên Github repo nến bạn muốn "
-
-[layouts_docs_partials_feedback_or]
-other = "hoặc"
-
-[layouts_docs_partials_feedback_problem]
-other = "báo cáo một vấn đề"
-
-[layouts_docs_partials_feedback_thanks]
-other = "Cảm ơn vì đã phản hồi. Nếu bạn có một câu hỏi cụ thể, có thể trả lời về cách sử dụng Kubernetes, hãy hỏi nó trên"
-
-[layouts_docs_search_fetching]
-other = "Đang lấy kết quả..."
-
-[main_by]
-other = "bởi"
-
-[main_cncf_project]
-other = """Chúng tôi là một dự án CNCF"""
-
-[main_community_explore]
-other = "Khám phá cộng đồng"
-
-[main_contribute]
-other = "Đóng góp"
-
-[main_copyright_notice]
-other = """The Linux Foundation ®. Đã đăng ký Bản quyền. The Linux Foundation đã đăng ký và sử dụng nhãn hiệu. Để biết danh sách các nhãn hiệu của The Linux Foundation, xem Trademark Usage page"""
-
-[main_documentation_license]
-other = """Các tác giả Kubernetes | Tài liệu được phân phối theo CC BY 4.0"""
-
-[main_edit_this_page]
-other = "Sửa trang này"
-
-[main_github_create_an_issue]
-other = "Tạo một Issue"
-
-[main_github_invite]
-other = "Quan tâm đến việc hacking mã nguồn Kubernetes?"
-
-[main_github_view_on]
-other = "Xem trên GitHub"
-
-[main_kubernetes_features]
-other = "Các tính năng của Kubernetes"
-
-[main_kubeweekly_baseline]
-other = "Muốn nhận những tin tức Kubernetes mới nhất? Đăng kí KubeWeekly."
-
-[main_kubernetes_past_link]
-other = "Xem các bản tin trước đây"
-
-[main_kubeweekly_signup]
-other = "Đăng kí"
-
-[main_page_history]
-other ="Lịch sử trang"
-
-[main_page_last_modified_on]
-other = "Trang được sửa lần cuồi vào"
-
-[main_read_about]
-other = "Đọc về"
-
-[main_read_more]
-other = "Đọc thêm"
-
-[note]
-other = "Ghi chú:"
-
-[objectives_heading]
-other = "Mục tiêu"
-
-[prerequisites_heading]
-other = "Trước khi bắt đầu"
-
-[subscribe_button]
-other = "Đăng ký"
-
-[ui_search_placeholder]
-other = "Tìm kiếm"
-
-[version_check_mustbe]
-other = "Server Kubernetes của bạn phải ở phiên bản "
-
-[version_check_mustbeorlater]
-other = "Server Kubernetes của bạn ở phiên bản mới hơn hoặc tại phiên bản "
-
-[version_check_tocheck]
-other = "Để kiểm tra phiên bản, nhập "
-
-[warning]
-other = "Cảnh báo:"
-
-[whatsnext_heading]
-other = "Có gì tiếp theo"
-
diff --git a/i18n/vi.toml b/i18n/vi.toml
new file mode 120000
index 0000000000..cc26ca1c86
--- /dev/null
+++ b/i18n/vi.toml
@@ -0,0 +1 @@
+../data/i18n/vi/vi.toml
\ No newline at end of file
diff --git a/i18n/zh.toml b/i18n/zh.toml
deleted file mode 100644
index dcf32839f8..0000000000
--- a/i18n/zh.toml
+++ /dev/null
@@ -1,230 +0,0 @@
-# i18n strings for the Chinese version of the site (https://kubernetes.io/zh/)
-# 注意:修改此文件时请维持字符串名称的字母顺序并与英文版保持一致
-
-[caution]
-other = "注意:"
-
-[cleanup_heading]
-other = "清理现场"
-
-[community_events_calendar]
-other = "事件日历"
-
-[community_forum_name]
-other = "论坛"
-
-[community_github_name]
-other = "GitHub"
-
-[community_slack_name]
-other = "Slack"
-
-[community_stack_overflow_name]
-other = "Stack Overflow"
-
-[community_twitter_name]
-other = "Twitter"
-
-[community_youtube_name]
-other = "YouTube"
-
-[deprecation_title]
-other = "您正在查看 Kubernetes 版本的文档:"
-
-[deprecation_warning]
-other = " 版本的文档已不再维护。您现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击"
-
-[deprecation_file_warning]
-other = "已过时"
-
-[docs_label_browse]
-other = "浏览文档"
-
-[docs_label_contributors]
-other = "贡献者"
-
-[docs_label_i_am]
-other = "我是..."
-
-[docs_label_users]
-other = "用户"
-
-[examples_heading]
-other = "示例"
-
-[feedback_heading]
-other = "反馈"
-
-[feedback_no]
-other = "否"
-
-[feedback_question]
-other = "此页是否对您有帮助?"
-
-[feedback_yes]
-other = "是"
-
-[input_placeholder_email_address]
-other = "电子邮件地址"
-
-[latest_version]
-other = "最新版本。"
-
-[layouts_blog_pager_prev]
-other = "<< 前一篇"
-
-[layouts_blog_pager_next]
-other = "后一篇 >>"
-
-[layouts_case_studies_list_tell]
-other = "分享您的故事"
-
-[layouts_docs_glossary_aka]
-other = "亦称作"
-
-[layouts_docs_glossary_description]
-other = "此术语表旨在提供 Kubernetes 术语的完整、标准列表。其中包含特定于 Kubernetes 的技术术语以及能够构造有用的语境的一般性术语。"
-
-[layouts_docs_glossary_deselect_all]
-other = "全不选"
-
-[layouts_docs_glossary_click_details_after]
-other = "下面的指示符号获取特定术语的更为完整的描述。"
-
-[layouts_docs_glossary_click_details_before]
-other = "点击"
-
-[layouts_docs_glossary_filter]
-other = "根据标签过滤术语"
-
-[layouts_docs_glossary_select_all]
-other = "全选"
-
-[layouts_docs_partials_feedback_improvement]
-other = "提出改进建议"
-
-[layouts_docs_partials_feedback_issue]
-other = "在 GitHub 仓库上登记新的问题"
-
-[layouts_docs_partials_feedback_or]
-other = "或者"
-
-[layouts_docs_partials_feedback_problem]
-other = "报告问题"
-
-[layouts_docs_partials_feedback_thanks]
-other = "感谢反馈。如果您有一个关于如何使用 Kubernetes 的特定的、需要答案的问题,可以访问"
-
-[layouts_docs_search_fetching]
-other = "检索结果中.."
-
-[main_by]
-other = "由:"
-
-[main_cncf_project]
-other = """我们是 CNCF 毕业项目"""
-
-[main_community_explore]
-other = "了解社区"
-
-[main_contribute]
-other = "贡献"
-
-[main_copyright_notice]
-other = """Linux 基金会®。保留所有权利。Linux 基金会已注册并使用商标。如需了解 Linux 基金会的商标列表,请访问商标使用页面"""
-
-[main_documentation_license]
-other = """The Kubernetes 作者 | 文档发布基于 CC BY 4.0 授权许可"""
-
-[main_edit_this_page]
-other = "修改本页面"
-
-[main_github_create_an_issue]
-other = "报告 GitHub 问题"
-
-[main_github_invite]
-other = "想要修改 Kubernetes 的核心源代码?"
-
-[main_github_view_on]
-other = "在 GitHub 上查看"
-
-[main_kubernetes_features]
-other = "Kubernetes 特性"
-
-[main_kubeweekly_baseline]
-other = "想要获取最新的 Kubernetes 新闻么?请订阅 KubeWeekly。"
-
-[main_kubernetes_past_link]
-other = "浏览往期的周报"
-
-[main_kubeweekly_signup]
-other = "订阅"
-
-[main_page_history]
-other ="页面历史"
-
-[main_page_last_modified_on]
-other = "页面最后一次修改于"
-
-[main_read_about]
-other = "了解"
-
-[main_read_more]
-other = "了解更多"
-
-[note]
-other = "说明:"
-
-[objectives_heading]
-other = "教程目标"
-
-[options_heading]
-other = "选项"
-
-[post_create_child_page]
-other = "创建子页面"
-
-[prerequisites_heading]
-other = "准备开始"
-
-[seealso_heading]
-other = "另请参见"
-
-[subscribe_button]
-other = "订阅"
-
-[synopsis_heading]
-other = "简介"
-
-[thirdparty_message]
-other = """本部分链接到提供 Kubernetes 所需功能的第三方项目。Kubernetes 项目作者不负责这些项目。此页面遵循CNCF 网站指南,按字母顺序列出项目。要将项目添加到此列表中,请在提交更改之前阅读内容指南。"""
-
-[ui_search_placeholder]
-other = "搜索"
-
-[version_check_mustbe]
-other = "您的 Kubernetes 服务器版本必须是 "
-
-[version_check_mustbeorlater]
-other = "您的 Kubernetes 服务器版本必须不低于版本 "
-
-[version_check_tocheck]
-other = "要获知版本信息,请输入 "
-
-[version_menu]
-other = "版本列表"
-
-[warning]
-other = "警告:"
-
-[whatsnext_heading]
-other = "接下来"
-
-[docs_version_latest_heading]
-other = "当前版本"
-
-[docs_version_other_heading]
-other = "往期版本"
-
-[docs_version_current]
-other = "(此文档)"
diff --git a/i18n/zh.toml b/i18n/zh.toml
new file mode 120000
index 0000000000..e4758b4160
--- /dev/null
+++ b/i18n/zh.toml
@@ -0,0 +1 @@
+../data/i18n/zh/zh.toml
\ No newline at end of file
From 40e7940be2c06bb3faa753dd854a835af3c2eeed Mon Sep 17 00:00:00 2001
From: Tim Bannister
Date: Mon, 5 Apr 2021 15:19:13 +0100
Subject: [PATCH 024/129] Add explanatory note about localized string OWNERS
---
i18n/OWNERS | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 i18n/OWNERS
diff --git a/i18n/OWNERS b/i18n/OWNERS
new file mode 100644
index 0000000000..83c9158cd2
--- /dev/null
+++ b/i18n/OWNERS
@@ -0,0 +1,2 @@
+# No owner overrides here
+# See data/i18n/*/OWNERS instead
From b0ad9ff416ba4c8d1a9a158a393a0f31946040f3 Mon Sep 17 00:00:00 2001
From: Tim Bannister
Date: Thu, 8 Apr 2021 21:59:51 +0100
Subject: [PATCH 025/129] Revise localization guide
- explain new localized strings
- general tidying
---
content/en/docs/contribute/localization.md | 162 ++++++++++++++-------
1 file changed, 109 insertions(+), 53 deletions(-)
diff --git a/content/en/docs/contribute/localization.md b/content/en/docs/contribute/localization.md
index eafc241d40..85772dc9ed 100644
--- a/content/en/docs/contribute/localization.md
+++ b/content/en/docs/contribute/localization.md
@@ -16,18 +16,21 @@ card:
This page shows you how to [localize](https://blog.mozilla.org/l10n/2011/12/14/i18n-vs-l10n-whats-the-diff/) the docs for a different language.
-
-## Getting started
+## Contribute to an existing localization
-Because contributors can't approve their own pull requests, you need at least two contributors to begin a localization.
+You can help add or improve content to an existing localization. In [Kubernetes Slack](https://slack.k8s.io/) you'll find a channel for each localization. There is also a general [SIG Docs Localizations Slack channel](https://kubernetes.slack.com/messages/sig-docs-localizations) where you can say hello.
-All localization teams must be self-sustaining with their own resources. The Kubernetes website is happy to host your work, but it's up to you to translate it.
+{{< note >}}
+If you want to work on a localization that already exists, check
+this page in that localization (if it exists), rather than the
+English original. You might see extra details there.
+{{< /note >}}
### Find your two-letter language code
-First, consult the [ISO 639-1 standard](https://www.loc.gov/standards/iso639-2/php/code_list.php) to find your localization's two-letter country code. For example, the two-letter code for Korean is `ko`.
+First, consult the [ISO 639-1 standard](https://www.loc.gov/standards/iso639-2/php/code_list.php) to find your localization's two-letter language code. For example, the two-letter code for Korean is `ko`.
### Fork and clone the repo
@@ -40,13 +43,54 @@ git clone https://github.com//website
cd website
```
-### Open a pull request
+The website content directory includes sub-directories for each language. The localization you want to help out with is inside `content/`.
-Next, [open a pull request](/docs/contribute/new-content/open-a-pr/#open-a-pr) (PR) to add a localization to the `kubernetes/website` repository.
+### Suggest changes
-The PR must include all of the [minimum required content](#minimum-required-content) before it can be approved.
+Create or update your chosen localized page based on the English original. See
+[translating content](#translating-content) for more details.
-For an example of adding a new localization, see the PR to enable [docs in French](https://github.com/kubernetes/website/pull/12548).
+If you notice a technical inaccuracy or other problem with the upstream (English)
+documentation, you should fix the upstream documentation first and then repeat the
+equivalent fix by updating the localization you're working on.
+
+Please limit pull requests to a single localization, since pull requests that change
+content in multiple localizations could be difficult to review.
+
+Follow [Suggesting Content Improvements](/docs/contribute/suggest-improvements/) to propose changes to
+that localization. The process is very similar to proposing changes to the upstream (English) content.
+
+## Start a new localization
+
+If you want the Kubernetes documentation localized into a new language, here's what
+you need to do.
+
+Because contributors can't approve their own pull requests, you need _at least two contributors_
+to begin a localization.
+
+All localization teams must be self-sustaining. The Kubernetes website is happy to host your work, but
+it's up to you to translate it and keep existing localized content current.
+
+You'll need to know the two-letter language code for your language. Consult the
+[ISO 639-1 standard](https://www.loc.gov/standards/iso639-2/php/code_list.php) to find your
+localization's two-letter language code. For example, the two-letter code for Korean is
+`ko`.
+
+When you start a new localization, you must localize all the
+[minimum required content](#minimum-required-content) before
+the Kubernetes project can publish your changes to the live
+website.
+
+SIG Docs can help you work on a separate branch so that you
+can incrementally work towards that goal.
+
+### Find community
+
+Let Kubernetes SIG Docs know you're interested in creating a localization! Join the [SIG Docs Slack channel](https://kubernetes.slack.com/messages/sig-docs) and the [SIG Docs Localizations Slack channel](https://kubernetes.slack.com/messages/sig-docs-localizations). Other localization teams are happy to help you get started and answer any questions you have.
+
+Please also consider participating in the [SIG Docs Localization Subgroup meeting](https://github.com/kubernetes/community/tree/master/sig-docs). The mission of the SIG Docs localization subgroup is to work across the SIG Docs localization teams to collaborate on defining and documenting the processes for creating localized contribution guides. In addition, the SIG Docs localization subgroup will look for opportunities for the creation and sharing of common tools across localization teams and also serve to identify new requirements to the SIG Docs Leadership team. If you have questions about this meeting, please inquire on the [SIG Docs Localizations Slack channel](https://kubernetes.slack.com/messages/sig-docs-localizations).
+
+You can also create a Slack channel for your localization in the `kubernetes/community` repository. For an example of adding a Slack channel, see the PR for [adding a channel for Persian](https://github.com/kubernetes/community/pull/4980).
### Join the Kubernetes GitHub organization
@@ -70,15 +114,6 @@ Next, add a GitHub label for your localization in the `kubernetes/test-infra` re
For an example of adding a label, see the PR for adding the [Italian language label](https://github.com/kubernetes/test-infra/pull/11316).
-### Find community
-
-Let Kubernetes SIG Docs know you're interested in creating a localization! Join the [SIG Docs Slack channel](https://kubernetes.slack.com/messages/sig-docs) and the [SIG Docs Localizations Slack channel](https://kubernetes.slack.com/messages/sig-docs-localizations). Other localization teams are happy to help you get started and answer any questions you have.
-
-Please also consider participating in the [SIG Docs Localization Subgroup meeting](https://github.com/kubernetes/community/tree/master/sig-docs). The mission of the SIG Docs localization subgroup is to work across the SIG Docs localization teams to collaborate on defining and documenting the processes for creating localized contribution guides. In addition, the SIG Docs localization subgroup will look for opportunities for the creation and sharing of common tools across localization teams and also serve to identify new requirements to the SIG Docs Leadership team. If you have questions about this meeting, please inquire on the [SIG Docs Localizations Slack channel](https://kubernetes.slack.com/messages/sig-docs-localizations).
-
-You can also create a Slack channel for your localization in the `kubernetes/community` repository. For an example of adding a Slack channel, see the PR for [adding a channel for Persian](https://github.com/kubernetes/community/pull/4980).
-
-## Minimum required content
### Modify the site configuration
@@ -107,20 +142,20 @@ Add a language-specific subdirectory to the [`content`](https://github.com/kuber
mkdir content/de
```
+You also need to create a directory inside `data/i18n` for
+[localized strings](#site-strings-in-i18n); look at existing localizations
+for an example. To use these new strings, you must also create a symbolic link
+from `i18n/.toml` to the actual string configuration in
+`data/i18n//.toml` (remember to commit the symbolic
+link).
+
+For example, for German the strings live in `data/i18n/de/de.toml`, and
+`i18n/de.toml` is a symbolic link to `data/i18n/de/de.toml`.
+
### Localize the community code of conduct
Open a PR against the [`cncf/foundation`](https://github.com/cncf/foundation/tree/master/code-of-conduct-languages) repository to add the code of conduct in your language.
-### Add a localized README file
-
-To guide other localization contributors, add a new [`README-**.md`](https://help.github.com/articles/about-readmes/) to the top level of k/website, where `**` is the two-letter language code. For example, a German README file would be `README-de.md`.
-
-Provide guidance to localization contributors in the localized `README-**.md` file. Include the same information contained in `README.md` as well as:
-
-- A point of contact for the localization project
-- Any information specific to the localization
-
-After you create the localized README, add a link to the file from the main English `README.md`, and include contact information in English. You can provide a GitHub ID, email address, [Slack channel](https://slack.com/), or other method of contact. You must also provide a link to your localized Community Code of Conduct.
### Setting up the OWNERS files
@@ -174,10 +209,38 @@ For each team, add the list of GitHub users requested in [Add your localization
- remyleone
```
+### Open a pull request
+
+Next, [open a pull request](/docs/contribute/new-content/open-a-pr/#open-a-pr) (PR) to add a localization to the `kubernetes/website` repository.
+
+The PR must include all of the [minimum required content](#minimum-required-content) before it can be approved.
+
+For an example of adding a new localization, see the PR to enable [docs in French](https://github.com/kubernetes/website/pull/12548).
+
+### Add a localized README file
+
+To guide other localization contributors, add a new [`README-**.md`](https://help.github.com/articles/about-readmes/) to the top level of k/website, where `**` is the two-letter language code. For example, a German README file would be `README-de.md`.
+
+Provide guidance to localization contributors in the localized `README-**.md` file. Include the same information contained in `README.md` as well as:
+
+- A point of contact for the localization project
+- Any information specific to the localization
+
+After you create the localized README, add a link to the file from the main English `README.md`, and include contact information in English. You can provide a GitHub ID, email address, [Slack channel](https://slack.com/), or other method of contact. You must also provide a link to your localized Community Code of Conduct.
+
+### Launching your new localization
+
+Once a localization meets requirements for workflow and minimum output, SIG Docs will:
+
+- Enable language selection on the website
+- Publicize the localization's availability through [Cloud Native Computing Foundation](https://www.cncf.io/about/) (CNCF) channels, including the [Kubernetes blog](https://kubernetes.io/blog/).
+
## Translating content
Localizing *all* of the Kubernetes documentation is an enormous task. It's okay to start small and expand over time.
+### Minimum required content
+
At a minimum, all localizations must include:
Description | URLs
@@ -185,7 +248,7 @@ Description | URLs
Home | [All heading and subheading URLs](/docs/home/)
Setup | [All heading and subheading URLs](/docs/setup/)
Tutorials | [Kubernetes Basics](/docs/tutorials/kubernetes-basics/), [Hello Minikube](/docs/tutorials/hello-minikube/)
-Site strings | [All site strings in a new localized TOML file](https://github.com/kubernetes/website/tree/master/i18n)
+Site strings | [All site strings](#Site-strings-in-i18n) in a new localized TOML file
Translated documents must reside in their own `content/**/` subdirectory, but otherwise follow the same URL path as the English source. For example, to prepare the [Kubernetes Basics](/docs/tutorials/kubernetes-basics/) tutorial for translation into German, create a subfolder under the `content/de/` folder and copy the English source:
@@ -213,27 +276,30 @@ To find source files for your target version:
2. Select a branch for your target version from the following table:
Target version | Branch
-----|-----
- Next version | [`dev-{{< skew nextMinorVersion >}}`](https://github.com/kubernetes/website/tree/dev-{{< skew nextMinorVersion >}})
Latest version | [`master`](https://github.com/kubernetes/website/tree/master)
- Previous version | `release-*.**`
+ Previous version | [`release-{{< skew prevMinorVersion >}}`](https://github.com/kubernetes/website/tree/release-{{< skew prevMinorVersion >}})
+ Next version | [`dev-{{< skew nextMinorVersion >}}`](https://github.com/kubernetes/website/tree/dev-{{< skew nextMinorVersion >}})
-The `master` branch holds content for the current release `{{< latest-version >}}`. The release team will create `{{< release-branch >}}` branch shortly before the next release: v{{< skew nextMinorVersion >}}.
+The `master` branch holds content for the current release `{{< latest-version >}}`. The release team will create a `{{< release-branch >}}` branch before the next release: v{{< skew nextMinorVersion >}}.
### Site strings in i18n
-Localizations must include the contents of [`i18n/en.toml`](https://github.com/kubernetes/website/blob/master/i18n/en.toml) in a new language-specific file. Using German as an example: `i18n/de.toml`.
+Localizations must include the contents of [`data/i18n/en/en.toml`](https://github.com/kubernetes/website/blob/master/data/i18n/en/en.toml) in a new language-specific file. Using German as an example: `data/i18n/de/de.toml`.
-Add a new localization file to `i18n/`. For example, with German (`de`):
+Add a new localization directory and file to `data/i18n/`. For example, with German (`de`):
-```shell
-cp i18n/en.toml i18n/de.toml
+```bash
+mkdir -p data/i18n/de
+cp data/i18n/en/en.toml data/i18n/de/de.toml
```
-Then translate the value of each string:
+Revise the comments at the top of the file to suit your localization,
+then translate the value of each string. For example, this is the German-language
+placeholder text for the search form:
-```TOML
-[docs_label_i_am]
-other = "ICH BIN..."
+```toml
+[ui_search_placeholder]
+other = "Suchen"
```
Localizing site strings lets you customize site-wide text and features: for example, the legal copyright text in the footer on each page.
@@ -244,7 +310,9 @@ Some language teams have their own language-specific style guide and glossary. F
## Branching strategy
-Because localization projects are highly collaborative efforts, we encourage teams to work in shared localization branches.
+Because localization projects are highly collaborative efforts, we
+encourage teams to work in shared localization branches - especially
+when starting out and the localization is not yet live.
To collaborate on a localization branch:
@@ -288,16 +356,4 @@ For more information about working from forks or directly from the repository, s
SIG Docs welcomes upstream contributions and corrections to the English source.
-## Help an existing localization
-You can also help add or improve content to an existing localization. Join the [Slack channel](https://kubernetes.slack.com/messages/C1J0BPD2M/) for the localization, and start opening PRs to help. Please limit pull requests to a single localization since pull requests that change content in multiple localizations could be difficult to review.
-
-
-
-## {{% heading "whatsnext" %}}
-
-
-Once a localization meets requirements for workflow and minimum output, SIG docs will:
-
-- Enable language selection on the website
-- Publicize the localization's availability through [Cloud Native Computing Foundation](https://www.cncf.io/about/) (CNCF) channels, including the [Kubernetes blog](https://kubernetes.io/blog/).
From c942a7f2d2f289f81b89e3ac5609ada3d04c9a16 Mon Sep 17 00:00:00 2001
From: Qiming Teng
Date: Thu, 22 Apr 2021 17:43:04 +0800
Subject: [PATCH 026/129] [zh] Remove oudated files
This PR removes some files that no longer exist on the English site.
---
.../extend-kubernetes/extend-cluster.md | 434 -------
.../reference/kubernetes-api/api-index.md | 6 -
.../generated/kubeadm_alpha_kubelet.md | 69 --
.../generated/kubeadm_alpha_kubelet_config.md | 67 --
...adm_alpha_kubelet_config_enable-dynamic.md | 134 ---
.../generated/kubeadm_alpha_selfhosting.md | 68 --
.../kubeadm_alpha_selfhosting_pivot.md | 171 ---
.../kubeadm/generated/kubeadm_config_view.md | 91 --
.../setup-tools/kubeadm/kubeadm-config.md | 3 -
content/zh/docs/reference/tools.md | 107 --
.../tools/kubeadm/self-hosting.md | 129 --
.../enabling-endpointslices.md | 161 ---
.../zh/docs/tasks/tools/install-kubectl.md | 1070 -----------------
13 files changed, 2510 deletions(-)
delete mode 100644 content/zh/docs/concepts/extend-kubernetes/extend-cluster.md
delete mode 100644 content/zh/docs/reference/kubernetes-api/api-index.md
delete mode 100644 content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md
delete mode 100644 content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md
delete mode 100644 content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md
delete mode 100644 content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md
delete mode 100644 content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md
delete mode 100644 content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_config_view.md
delete mode 100644 content/zh/docs/reference/tools.md
delete mode 100644 content/zh/docs/setup/production-environment/tools/kubeadm/self-hosting.md
delete mode 100644 content/zh/docs/tasks/administer-cluster/enabling-endpointslices.md
delete mode 100644 content/zh/docs/tasks/tools/install-kubectl.md
diff --git a/content/zh/docs/concepts/extend-kubernetes/extend-cluster.md b/content/zh/docs/concepts/extend-kubernetes/extend-cluster.md
deleted file mode 100644
index 05af5323d9..0000000000
--- a/content/zh/docs/concepts/extend-kubernetes/extend-cluster.md
+++ /dev/null
@@ -1,434 +0,0 @@
----
-title: 扩展 Kubernetes 集群
-content_type: concept
-weight: 10
----
-
-
-
-
-
-Kubernetes 是高度可配置和可扩展的。因此,极少需要分发或提交补丁代码给 Kubernetes 项目。
-
-本文档介绍自定义 Kubernetes 集群的选项。本文档的目标读者包括希望了解如何使
-Kubernetes 集群满足其业务环境需求的
-{{< glossary_tooltip text="集群运维人员" term_id="cluster-operator" >}}、
-Kubernetes 项目的{{< glossary_tooltip text="贡献者" term_id="contributor" >}}。
-或潜在的{{< glossary_tooltip text="平台开发人员" term_id="platform-developer" >}}
-也可以从本文找到有用的信息,如对已存在扩展点和模式的介绍,以及它们的权衡和限制。
-
-
-
-
-## 概述
-
-定制方法可以大致分为 *配置(Configuration)* 和 *扩展(Extension)* 。
-*配置* 只涉及更改标志参数、本地配置文件或 API 资源;
-*扩展* 涉及运行额外的程序或服务。本文档主要内容是关于扩展。
-
-
-## 配置 {#configuration}
-
-关于 *配置文件* 和 *标志* 的说明文档位于在线文档的"参考"部分,按照可执行文件组织:
-
-* [kubelet](/zh/docs/reference/command-line-tools-reference/kubelet/)
-* [kube-apiserver](/zh/docs/reference/command-line-tools-reference/kube-apiserver/)
-* [kube-controller-manager](/zh/docs/reference/command-line-tools-reference/kube-controller-manager/)
-* [kube-scheduler](/zh/docs/reference/command-line-tools-reference/kube-scheduler/).
-
-
-在托管的 Kubernetes 服务或受控安装的 Kubernetes 版本中,标志和配置文件可能并不总是可以更改的。而且当它们可以进行更改时,它们通常只能由集群管理员进行更改。此外,标志和配置文件在未来的 Kubernetes 版本中可能会发生变化,并且更改设置后它们可能需要重新启动进程。出于这些原因,只有在没有其他选择的情况下才使用它们。
-
-
-*内置策略 API* ,例如 [ResourceQuota](/zh/docs/concepts/policy/resource-quotas/)、
-[PodSecurityPolicy](/zh/docs/concepts/policy/pod-security-policy/)、
-[NetworkPolicy](/zh/docs/concepts/services-networking/network-policies/)
-和基于角色的权限控制 ([RBAC](/zh/docs/reference/access-authn-authz/rbac/)),
-是内置的 Kubernetes API。API 通常与托管的 Kubernetes 服务和受控的 Kubernetes 安装一起使用。
-它们是声明性的,并使用与其他 Kubernetes 资源(如 Pod )相同的约定,所以新的集群配置可以重复使用,
-并以与应用程序相同的方式进行管理。
-而且,当它们变稳定后,也遵循和其他 Kubernetes API 一样的
-[支持政策](/zh/docs/reference/using-api/deprecation-policy/)。
-出于这些原因,在合适的情况下它们优先于 *配置文件* 和 *标志* 被使用。
-
-
-## 扩展程序 {#extension}
-
-扩展程序是指对 Kubernetes 进行扩展和深度集成的软件组件。它们适合用于支持新的类型和新型硬件。
-
-大多数集群管理员会使用托管的或统一分发的 Kubernetes 实例。
-因此,大多数 Kubernetes 用户不需要安装扩展程序,而且还有少部分用户甚至需要编写新的扩展程序。
-
-
-## 扩展模式 {#extension-patterns}
-
-
-Kubernetes 的设计是通过编写客户端程序来实现自动化的。
-任何读和(或)写 Kubernetes API 的程序都可以提供有用的自动化工作。
-*自动化* 程序可以运行在集群之中或之外。按照本文档的指导,你可以编写出高可用的和健壮的自动化程序。
-自动化程序通常适用于任何 Kubernetes 集群,包括托管集群和受管理安装的集群。
-
-
-*控制器(Controller)* 模式是编写适合 Kubernetes 的客户端程序的一种特定模式。
-控制器通常读取一个对象的 `.spec` 字段,可能做出一些处理,然后更新对象的 `.status` 字段。
-
-一个控制器是 Kubernetes 的一个客户端。
-当 Kubernetes 作为客户端调用远程服务时,它被称为 *Webhook* ,
-远程服务称为 *Webhook* 后端。 和控制器类似,Webhooks 增加了一个失败点。
-
-
-在 webhook 模型里,Kubernetes 向远程服务发送一个网络请求。
-在 *可执行文件插件* 模型里,Kubernetes 执行一个可执行文件(程序)。
-可执行文件插件被 kubelet(如
-[Flex 卷插件](/zh/docs/concepts/storage/volumes/#flexvolume)
-和[网络插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/)
-和 `kubectl` 所使用。
-
-
-下图显示了扩展点如何与 Kubernetes 控制平面进行交互。
-
-
-
-
-
-
-## 扩展点 {#extension-points}
-
-下图显示了 Kubernetes 系统的扩展点。
-
-
-
-
-
-
-
-1. 用户通常使用 `kubectl` 与 Kubernetes API 进行交互。
- [kubectl 插件](/zh/docs/tasks/extend-kubectl/kubectl-plugins/)扩展了 kubectl 可执行文件。
- 它们只影响个人用户的本地环境,因此不能执行站点范围的策略。
-2. API 服务器处理所有请求。API 服务器中的几种类型的扩展点允许对请求进行身份认证或根据其内容对其进行阻止、
- 编辑内容以及处理删除操作。这些内容在
- [API 访问扩展](/zh/docs/concepts/extend-kubernetes/#api-access-extensions)小节中描述。
-3. API 服务器提供各种 *资源(Resource)* 。 *内置的资源种类(Resource Kinds)* ,如 `pods`,
- 由 Kubernetes 项目定义,不能更改。你还可以添加你自己定义的资源或其他项目已定义的资源,
- 称为 *自定义资源(Custom Resource)*,如[自定义资源](/zh/docs/concepts/extend-kubernetes/#user-defined-types)
- 部分所述。自定义资源通常与 API 访问扩展一起使用。
-4. Kubernetes 调度器决定将 Pod 放置到哪个节点。有几种方法可以扩展调度器。
- 这些内容在[调度器扩展](/zh/docs/concepts/extend-kubernetes/#scheduler-extensions)
- 小节中描述。
-5. Kubernetes 的大部分行为都是由称为控制器(Controllers)的程序实现的,这些程序是 API 服务器的客户端。
- 控制器通常与自定义资源一起使用。
-6. `kubelet` 在主机上运行,并帮助 Pod 看起来就像在集群网络上拥有自己的 IP 的虚拟服务器。
- [网络插件](/zh/docs/concepts/extend-kubernetes/#network-plugins)让你可以实现不同的 pod 网络。
-7. `kubelet` 也负责为容器挂载和卸载卷。新的存储类型可以通过
- [存储插件](/zh/docs/concepts/extend-kubernetes/#storage-plugins)支持。
-
-
-如果你不确定从哪里开始扩展,下面流程图可以提供一些帮助。请注意,某些解决方案可能涉及多种类型的扩展。
-
-
-
-
-
-
-## API 扩展 {#api-extensions}
-
-### 用户自定义类型 {#user-defined-types}
-
-如果你想定义新的控制器、应用程序配置对象或其他声明式 API,并使用 Kubernetes
-工具(如 `kubectl`)管理它们,请考虑为 Kubernetes 添加一个自定义资源。
-
-不要使用自定义资源作为应用、用户或者监控数据的数据存储。
-
-有关自定义资源的更多信息,请查看
-[自定义资源概念指南](/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources/)。
-
-
-### 将新的 API 与自动化相结合
-
-自定义资源 API 和控制循环的组合称为
-[操作者(Operator)模式](/zh/docs/concepts/extend-kubernetes/operator/)。
-操作者模式用于管理特定的,通常是有状态的应用程序。
-这些自定义 API 和控制循环还可用于控制其他资源,例如存储或策略。
-
-
-### 改变内置资源
-
-当你通过添加自定义资源来扩展 Kubernetes API 时,添加的资源始终属于新的 API 组。
-你不能替换或更改已有的 API 组。
-添加 API 不会直接影响现有 API(例如 Pod )的行为,但是 API 访问扩展可以。
-
-
-### API 访问扩展 {#api-access-extensions}
-
-当请求到达 Kubernetes API Server 时,它首先被要求进行用户认证,然后要进行授权检查,
-接着受到各种类型的准入控制的检查。有关此流程的更多信息,请参阅
-[Kubernetes API 访问控制](/zh/docs/concepts/security/controlling-access/)。
-
-上述每个步骤都提供了扩展点。
-
-Kubernetes 有几个它支持的内置认证方法。它还可以位于身份验证代理之后,并将 Authorziation 头部
-中的令牌发送给远程服务(webhook)进行验证。所有这些方法都在
-[身份验证文档](/zh/docs/reference/access-authn-authz/authentication/)中介绍。
-
-
-### 身份认证 {#authentication}
-
-[身份认证](/zh/docs/reference/access-authn-authz/authentication/)
-将所有请求中的头部字段或证书映射为发出请求的客户端的用户名。
-
-Kubernetes 提供了几种内置的身份认证方法,如果这些方法不符合你的需求,可以使用
-[身份认证 Webhook](/zh/docs/reference/access-authn-authz/authentication/#webhook-token-authentication) 方法。
-
-
-### 鉴权 {#authorization}
-
-[鉴权组件](/zh/docs/reference/access-authn-authz/authorization/)决定特定用户是否可以对
-API 资源执行读取、写入以及其他操作。它只是在整个资源的层面上工作 --
-它不基于任意的对象字段进行区分。如果内置授权选项不能满足你的需求,
-[鉴权 Webhook](/zh/docs/reference/access-authn-authz/webhook/)
-允许调用用户提供的代码来作出授权决定。
-
-
-### 动态准入控制
-
-在请求被授权之后,如果是写入操作,它还将进入
-[准入控制](/zh/docs/reference/access-authn-authz/admission-controllers/)
-步骤。除了内置的步骤之外,还有几个扩展:
-
-* [镜像策略 Webhook](/zh/docs/reference/access-authn-authz/admission-controllers/#imagepolicywebhook)
- 限制哪些镜像可以在容器中运行。
-* 为了进行灵活的准入控制决策,可以使用通用的
- [准入 Webhook](/zh/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks)。
- 准入 Webhooks 可以拒绝创建或更新操作。
-
-
-## 基础设施扩展
-
-### 存储插件
-
-[Flex Volumes](/zh/docs/concepts/storage/volumes/#flexvolume)
-允许用户挂载无内置插件支持的卷类型,它通过 Kubelet 调用一个可执行文件插件来挂载卷。
-
-
-### 设备插件 {#device-plugins}
-
-设备插件允许节点通过
-[设备插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/).
-发现新的节点资源(除了内置的 CPU 和内存之外)。
-
-
-### 网络插件 {#network-plugins}
-
-不同的网络结构可以通过节点级的
-[网络插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/)
-得到支持。
-
-
-### 调度器扩展 {#scheduler-extensions}
-
-调度器是一种特殊类型的控制器,用于监视 pod 并将其分配到节点。
-默认的调度器可以完全被替换,而继续使用其他 Kubernetes 组件,或者可以同时运行
-[多个调度器](/zh/docs/tasks/extend-kubernetes/configure-multiple-schedulers/)。
-
-这是一个不太轻松的任务,几乎所有的 Kubernetes 用户都会意识到他们并不需要修改调度器。
-
-调度器也支持
-[Webhook](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/scheduler_extender.md),
-它允许使用一个 Webhook 后端(调度器扩展程序)为 Pod 筛选节点和确定节点的优先级。
-
-
-
-## {{% heading "whatsnext" %}}
-
-
-* 详细了解[自定义资源](/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
-* 了解[动态准入控制](/zh/docs/reference/access-authn-authz/extensible-admission-controllers/)
-* 详细了解基础设施扩展
- * [网络插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/)
- * [设备插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/)
-* 了解 [kubectl 插件](/zh/docs/tasks/extend-kubectl/kubectl-plugins/)
-* 了解[操作者模式](/zh/docs/concepts/extend-kubernetes/operator/)
-
-
diff --git a/content/zh/docs/reference/kubernetes-api/api-index.md b/content/zh/docs/reference/kubernetes-api/api-index.md
deleted file mode 100644
index a9fca7e581..0000000000
--- a/content/zh/docs/reference/kubernetes-api/api-index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: v1.20
-weight: 50
----
-
-[Kubernetes API v1.20](/docs/reference/generated/kubernetes-api/v1.20/)
\ No newline at end of file
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md
deleted file mode 100644
index ac949750b1..0000000000
--- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-### 概要
-
-
-
-此命令并非设计用来单独运行。请参阅可用子命令列表。
-
-
-
-### 选项
-
-
-
-
-
-
-
-
-
-| -h, --help |
-
-
- |
-
-kubelet 操作的帮助命令
- |
-
-
-
-
-
-
-
-### 从父命令继承的选项
-
-
-
-
-
-
-
-
-
-| --rootfs string |
-
-
- |
-
-[实验] 指向 '真实' 宿主机的根目录。
- |
-
-
-
-
-
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md
deleted file mode 100644
index 51ab7eb85d..0000000000
--- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-### 概要
-
-
-
-此命令并非设计用来单独运行。请参阅可用子命令列表。
-
-
-
-### 选项
-
-
-
-
-
-
-
-
-
-| -h, --help |
-
-
- |
-
-config 操作的帮助命令
- |
-
-
-
-
-
-
-
-### 从父命令继承的选项
-
-
-
-
-
-
-
-
-
-| --rootfs string |
-
-
- |
-
-[实验] 指向宿主机上的 '实际' 根文件系统的路径。
- |
-
-
-
-
-
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md
deleted file mode 100644
index 9c5bd03582..0000000000
--- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-### 概要
-
-
-
-针对集群中的 kubelet-config-1.X ConfigMap 启用或更新节点的动态 kubelet 配置,其中 X 是所需 kubelet 版本的次要版本。
-
-
-警告:此功能仍处于试验阶段,默认情况下处于禁用状态。仅当知道自己在做什么时才启用它,因为在此阶段它可能会产生令人惊讶的副作用。
-
-
-Alpha 免责声明:此命令当前为 Alpha 功能。
-
-```
-kubeadm alpha kubelet config enable-dynamic [flags]
-```
-
-
-### 示例
-
-```
- # 为节点启用动态 kubelet 配置。
- kubeadm alpha phase kubelet enable-dynamic-config --node-name node-1 --kubelet-version 1.16.0
-
- WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it
- may have surprising side-effects at this stage.
-```
-
-
-### 选项
-
-
-
-
-
-
-
-
-
-| -h, --help |
-
-
- |
-
-enable-dynamic 操作的帮助命令
- |
-
-
-
-|
-
---kubeconfig string 默认值: "/etc/kubernetes/admin.conf"
- |
-
-
- |
-
-与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在一组标准位置中搜索现有的 kubeconfig 文件。
- |
-
-
-
-| --kubelet-version string |
-
-
- |
-
-kubelet 所需版本
- |
-
-
-
-| --node-name string |
-
-
- |
-
-应该启用动态 kubelet 配置节点的名称
- |
-
-
-
-
-
-
-
-### 从父命令继承的选项
-
-
-
-
-
-
-
-
-
-| --rootfs string |
-
-
- |
-
-[实验] 指向 '真实' 宿主机的根目录。
- |
-
-
-
-
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md
deleted file mode 100644
index d2f4bd71f6..0000000000
--- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-### 概要
-
-
-
-此命令并非设计用来单独运行。请参阅可用子命令列表。
-
-
-
-### 选项
-
-
-
-
-
-
-
-
-
-| -h, --help |
-
-
- |
-
-selfhosting 操作的帮助命令
- |
-
-
-
-
-
-
-
-### 从父命令继承的选项
-
-
-
-
-
-
-
-
-
-| --rootfs string |
-
-
- |
-
-[实验] 指向 '真实' 宿主机的根目录。
- |
-
-
-
-
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md
deleted file mode 100644
index 7f1a6a9fd5..0000000000
--- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md
+++ /dev/null
@@ -1,171 +0,0 @@
-
-
-
-### 概要
-
-
-
-将用于控制平面组件的静态 Pod 文件转换为通过 Kubernetes API 配置的自托管 DaemonSet。
-
-
-
-有关自托管的限制,请参阅相关文档。
-
-
-
-Alpha 免责声明:此命令当前为 alpha 功能。
-
-
-```
-kubeadm alpha selfhosting pivot [flags]
-```
-
-
-
-### 示例
-
-
-
-```
-# 将静态 Pod 托管的控制平面转换为自托管的控制平面。
-
-kubeadm alpha phase self-hosting convert-from-staticpods
-```
-
-
-
-### 选项
-
-
-
-
-
-
-
-
-
-|
-
---cert-dir string 默认值:"/etc/kubernetes/pki"
- |
-
-
- |
-
-证书存储的路径
- |
-
-
-
-| --config string |
-
-
- |
-
-kubeadm 配置文件的路径。
- |
-
-
-
-| -f, --force |
-
-
- |
-
-在不提示确认的情况下转换集群
- |
-
-
-
-| -h, --help |
-
-
- |
-
-pivot 操作的帮助命令
- |
-
-
-
-|
-
---kubeconfig string 默认值:"/etc/kubernetes/admin.conf"
- |
-
-
- |
-
-与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。
- |
-
-
-
-| -s, --store-certs-in-secrets |
-
-
- |
-
-启用 secret 存储证书
- |
-
-
-
-
-
-
-
-### 从父命令继承的选项
-
-
-
-
-
-
-
-
-
-| --rootfs string |
-
-
- |
-
-[实验] 到 '真实' 主机根文件系统的路径。
- |
-
-
-
-
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_config_view.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_config_view.md
deleted file mode 100644
index d3cc8d9041..0000000000
--- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_config_view.md
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-### 概要
-
-
-
-使用此命令,可以查看 kubeadm 配置的集群中的 ConfigMap。
-该配置位于 "kube-system" 命名空间中的名为 "kubeadm-config" 的 ConfigMap 中。
-
-
-```
-kubeadm config view [flags]
-```
-
-
-
-### 选项
-
-
-
-
-
-
-
-
-
-| -h, --help |
-
-
- |
-
-view 操作的帮助命令
- |
-
-
-
-
-
-
-
-### 继承于父命令的选项
-
-
-
-
-
-
-
-
-
-|
-
---kubeconfig string 默认值:"/etc/kubernetes/admin.conf"
- |
-
-
- |
-
-用于和集群通信的 KubeConfig 文件。如果未设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。
- |
-
-
-
-| --rootfs string |
-
-
- |
-
-[实验] 到 '真实' 主机根文件系统的路径。
- |
-
-
-
-
-
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md
index 6cb9305b6c..3c1425bfc1 100644
--- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md
+++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md
@@ -45,9 +45,6 @@ has to be used.
## kubeadm config upload from-file {#cmd-config-from-file}
-## kubeadm config view {#cmd-config-view}
-{{< include "generated/kubeadm_config_view.md" >}}
-
## kubeadm config print init-defaults {#cmd-config-print-init-defaults}
{{< include "generated/kubeadm_config_print_init-defaults.md" >}}
diff --git a/content/zh/docs/reference/tools.md b/content/zh/docs/reference/tools.md
deleted file mode 100644
index 1ad75ba98f..0000000000
--- a/content/zh/docs/reference/tools.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-reviewers:
-- janetkuo
-title: 工具
-content_type: concept
----
-
-
-
-
-
-Kubernetes 包含一些内置工具,可以帮助用户更好的使用 Kubernetes 系统。
-
-
-## Kubectl
-
-
-[`kubectl`](/zh/docs/tasks/tools/install-kubectl/) 是 Kubernetes 命令行工具,
-可以用来操控 Kubernetes 集群。
-
-## Kubeadm
-
-
-[`kubeadm`](/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/) 是一个命令行工具,
-可以用来在物理机、云服务器或虚拟机(目前处于 alpha 阶段)
-上轻松部署一个安全可靠的 Kubernetes 集群。
-
-## Minikube
-
-
-[`minikube`](https://minikube.sigs.k8s.io/docs/) 是一个可以方便用户
-在其工作站点本地部署一个单节点 Kubernetes 集群的工具,用于开发和测试。
-
-## Dashboard
-
-
-[`Dashboard`](/zh/docs/tasks/access-application-cluster/web-ui-dashboard/)
-是 Kubernetes 基于 Web 的用户管理界面,允许用户部署容器化应用到 Kubernetes
-集群,进行故障排查以及管理集群和集群资源。
-
-## Helm
-
-
-[`Kubernetes Helm`](https://github.com/kubernetes/helm) 是一个管理
-预先配置完毕的 Kubernetes 资源包的工具,这里的资源在 Helm 中也被称作
-Kubernetes charts。
-
-
-使用 Helm:
-
-* 查找并使用已经打包为 Kubernetes charts 的流行软件
-* 分享您自己的应用作为 Kubernetes charts
-* 为 Kubernetes 应用创建可重复执行的构建
-* 为您的 Kubernetes 清单文件提供更智能化的管理
-* 管理 Helm 软件包的发布
-
-## Kompose
-
-
-[`Kompose`](https://github.com/kubernetes/kompose) 一个转换工具,
-用来帮助 Docker Compose 用户迁移至 Kubernetes。
-
-
-使用 Kompose:
-
-* 将一个 Docker Compose 文件解释成 Kubernetes 对象
-* 将本地 Docker 开发 转变成通过 Kubernetes 来管理
-* 转换 v1 或 v2 Docker Compose `yaml` 文件 或
- [已发布的应用程序包](https://docs.docker.com/compose/bundles/)
-
diff --git a/content/zh/docs/setup/production-environment/tools/kubeadm/self-hosting.md b/content/zh/docs/setup/production-environment/tools/kubeadm/self-hosting.md
deleted file mode 100644
index 97a366fd87..0000000000
--- a/content/zh/docs/setup/production-environment/tools/kubeadm/self-hosting.md
+++ /dev/null
@@ -1,129 +0,0 @@
----
-title: 配置您的 kubernetes 集群以自托管控制平台
-content_type: concept
-weight: 100
----
-
-
-
-
-
-### 自托管 Kubernetes 控制平台 {#self-hosting}
-
-
-kubeadm 允许您实验性地创建 _self-hosted_ Kubernetes 控制平面。
-这意味着 API 服务器,控制管理器和调度程序之类的关键组件将通过配置 Kubernetes API 以
-[DaemonSet Pods](/zh/docs/concepts/workloads/controllers/daemonset/) 的身份运行,
-而不是通过静态文件在 kubelet 中配置[静态 Pods](/zh/docs/tasks/configure-pod-container/static-pod/)。
-
-
-要创建自托管集群,请参见
-[kubeadm alpha selfhosting pivot](/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha/#cmd-selfhosting)
-命令。
-
-
-
-
-#### 警告
-
-
-{{< caution >}}
-此功能将您的集群设置为不受支持的状态,从而使 kubeadm 无法再管理您的集群。
-这包括 `kubeadm 升级` 。
-{{< /caution >}}
-
-
-1. 1.8及更高版本中的自托管功能有一些重要限制。
- 特别是,自托管集群在没有人工干预的情况下_无法从控制平面节点的重新启动中恢复_ 。
-
-
-2. 默认情况下,自托管的控制平面 Pod 依赖于从
- [`hostPath`](/zh/docs/concepts/storage/volumes/#hostpath) 卷加载的凭据。
- 除初始创建外,这些凭据不由 kubeadm 管理。
-
-
-3. 控制平面的自托管部分不包括 etcd,后者仍作为静态 Pod 运行。
-
-
-#### 过程
-
-自托管引导过程描述于 [kubeadm 设计文档](https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.9.md#optional-self-hosting) 中。
-
-
-总体而言,`kubeadm alpha 自托管` 的工作原理如下:
-
-
- 1. 等待此引导静态控制平面运行且良好。
- 这与没有自我托管的 `kubeadm init` 过程相同。
-
- 2. 使用静态控制平面 Pod 清单来构造一组 DaemonSet 清单,这些清单将运行自托管的控制平面。
- 它还会在必要时修改这些清单,例如添加新的 secrets 卷。
-
-
- 3. 在 `kube-system` 名称空间中创建 DaemonSets ,并等待生成的 Pod 运行。
-
-
- 4. 自托管 Pod 运行后,将删除其关联的静态 Pod,然后 kubeadm 继续安装下一个组件。
- 这将触发 kubelet 停止那些静态 Pod 。
-
-
- 5. 当原始静态控制平面停止时,新的自托管控制平面能够绑定到侦听端口并变为活动状态。
-
-
diff --git a/content/zh/docs/tasks/administer-cluster/enabling-endpointslices.md b/content/zh/docs/tasks/administer-cluster/enabling-endpointslices.md
deleted file mode 100644
index 80ac9f50ce..0000000000
--- a/content/zh/docs/tasks/administer-cluster/enabling-endpointslices.md
+++ /dev/null
@@ -1,161 +0,0 @@
----
-reviewers:
-title: 启用 EndpointSlices
-content_type: task
----
-
-
-
-
-
-
-本页提供启用 Kubernetes EndpointSlice 的总览。
-
-## {{% heading "prerequisites" %}}
-
-{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
-
-
-
-
-## 介绍
-
-EndpointSlice (端点切片)为 Kubernetes Endpoints 提供了可伸缩和可扩展的替代方案。
-它们建立在 Endpoints 提供的功能基础之上,并以可伸缩的方式进行扩展。
-当 Service 具有大量(>100)网络端点时,它们将被分成多个较小的 EndpointSlice 资源,
-而不是单个大型 Endpoints 资源。
-
-
-## 启用 EndpointSlice
-
-{{< feature-state for_k8s_version="v1.17" state="beta" >}}
-
-{{< note >}}
-
-EndpointSlice 资源旨在解决较早资源:Endpoints 中的缺点。一些 Kubernetes 组件和第三方应用程序
-继续使用并依赖 Endpoints。既然情况如此,应该将 EndpointSlices 视为集群中 Endpoints 的补充,而不是
-彻底替代。
-{{< /note >}}
-
-
-Kubernetes 中的 EndpointSlice 功能包含若干不同组件。它们中的大部分都是
-默认被启用的:
-
-
-* _EndpointSlice API_:EndpointSlice 隶属于 `discovery.k8s.io/v1beta1` API。
- 此 API 处于 Beta 阶段,从 Kubernetes 1.17 开始默认被启用。
- 下面列举的所有组件都依赖于此 API 被启用。
-* _EndpointSlice 控制器_:此 {{< glossary_tooltip text="控制器" term_id="controller" >}}
- 为 Service 维护 EndpointSlice 及其引用的 Pods。
- 此控制器通过 `EndpointSlice` 特性门控控制。自从 Kubernetes 1.18 起,
- 该特性门控默认被启用。
-
-
-* _EndpointSliceMirroring 控制器_:此 {{< glossary_tooltip text="控制器" term_id="controller" >}}
- 将自定义的 Endpoints 映射为 EndpointSlice。
- 控制器受 `EndpointSlice` 特性门控控制。该特性门控自 1.19 开始被默认启用。
-* _kube-proxy_:当 {{< glossary_tooltip text="kube-proxy" term_id="kube-proxy">}}
- 被配置为使用 EndpointSlice 时,它会支持更大数量的 Service 端点。
- 此功能在 Linux 上受 `EndpointSliceProxying` 特性门控控制;在 Windows 上受
- `WindowsEndpointSliceProxying` 特性门控控制。
- 在 Linux 上,从 Kubernetes 1.19 版本起自动启用。目前尚未在 Windows 节点
- 上默认启用。
- 要在 Windows 节点上配置 kube-proxy 使用 EndpointSlice,你需要为 kube-proxy 启用
- `WindowsEndpointSliceProxying`
- [特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)。
-
-
-
-## API 字段
-
-EndpointSlice API 中的某些字段有对应的特性门控控制。
-
-- `EndpointSliceNodeName` 特性门控控制对 `nodeName` 字段的访问。这是默认情况下禁用的 Alpha 功能。
-- `EndpointSliceTerminating` 特性门控控制对 `serving` 和 `terminating` 状况字段的访问。这是默认情况下禁用的 Alpha 功能。
-
-
-## 使用 EndpointSlice
-
-在集群中完全启用 EndpointSlice 的情况下,你应该看到对应于每个
-Endpoints 资源的 EndpointSlice 资源。除了支持现有的 Endpoints 功能外,
-EndpointSlices 将允许集群中网络端点更好的可伸缩性和可扩展性。
-
-
-## {{% heading "whatsnext" %}}
-
-
-* 参阅 [EndpointSlices](/zh/docs/concepts/services-networking/endpoint-slices/)
-* 参阅[将应用程序与服务连接](/zh/docs/concepts/services-networking/connect-applications-service/)
diff --git a/content/zh/docs/tasks/tools/install-kubectl.md b/content/zh/docs/tasks/tools/install-kubectl.md
deleted file mode 100644
index e67a7dcb21..0000000000
--- a/content/zh/docs/tasks/tools/install-kubectl.md
+++ /dev/null
@@ -1,1070 +0,0 @@
----
-title: 安装并配置 kubectl
-content_type: task
-weight: 10
-card:
- name: tasks
- weight: 20
- title: 安装 kubectl
----
-
-
-
-
-使用 Kubernetes 命令行工具 [kubectl](/zh/docs/reference/kubectl/kubectl/),
-你可以在 Kubernetes 上运行命令。
-使用 kubectl,你可以部署应用、检视和管理集群资源、查看日志。
-要了解 kubectl 操作的完整列表,请参阅
-[kubectl 概览](/zh/docs/reference/kubectl/overview/)。
-
-## {{% heading "prerequisites" %}}
-
-
-你必须使用与集群小版本号差别为一的 kubectl 版本。
-例如,1.2 版本的客户端应该与 1.1 版本、1.2 版本和 1.3 版本的主节点一起使用。
-使用最新版本的 kubectl 有助于避免无法预料的问题。
-
-
-
-
-## 在 Linux 上安装 kubectl {#install-kubectl-on-linux}
-
-### 在 Linux 上使用 curl 安装 kubectl 可执行文件
-
-
-1. 使用下面命令下载最新的发行版本:
-
- ```bash
- curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
- ```
-
-
- 要下载特定版本,将命令中的 `$(curl -L -s https://dl.k8s.io/release/stable.txt)`
- 部分替换为指定版本。
-
- 例如,要下载 Linux 上的版本 {{< param "fullversion" >}},输入:
-
- ```
- curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/linux/amd64/kubectl
- ```
-
-
-2. 验证可执行文件(可选步骤):
-
-
- 下载 kubectl 校验和文件:
-
- ```bash
- curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
- ```
-
-
- 使用校验和文件检查 kubectl 可执行二进制文件:
-
- ```bash
- echo "$(
- 如果合法,则输出为:
-
- ```bash
- kubectl: OK
- ```
-
-
- 如果检查失败,则 `sha256` 退出且状态值非 0 并打印类似如下输出:
-
- ```bash
- kubectl: FAILED
- sha256sum: WARNING: 1 computed checksum did NOT match
- ```
-
- {{< note >}}
-
- 所下载的二进制可执行文件和校验和文件须是同一版本。
- {{< /note >}}
-
-
-
-3. 安装 kubectl
-
- ```bash
- sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- ```
-
-
- 如果你并不拥有目标系统的 root 访问权限,你仍可以将 kubectl 安装到
- `~/.local/bin` 目录下:
-
- ```bash
- mkdir -p ~/.local/bin/kubectl
- mv ./kubectl ~/.local/bin/kubectl
- # 之后将 ~/.local/bin/kubectl 添加到环境变量 $PATH 中
- ```
-
-
-4. 测试你所安装的版本是最新的:
-
- ```
- kubectl version --client
- ```
-
-
-### 使用原生包管理器安装 {#install-using-native-package-management}
-
-{{< tabs name="kubectl_install" >}}
-{{< tab name="Ubuntu、Debian 或 HypriotOS" codelang="bash" >}}
-sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl
-curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
-echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
-sudo apt-get update
-sudo apt-get install -y kubectl
-{{< /tab >}}
-
-{{< tab name="CentOS、RHEL 或 Fedora" codelang="bash" >}}
-cat < /etc/yum.repos.d/kubernetes.repo
-[kubernetes]
-name=Kubernetes
-baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
-enabled=1
-gpgcheck=1
-repo_gpgcheck=1
-gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
-EOF
-yum install -y kubectl
-{{< /tab >}}
-{{< /tabs >}}
-
-
-### 使用其他包管理器安装 {#install-using-other-package-management}
-
-{{< tabs name="other_kubectl_install" >}}
-{{% tab name="Snap" %}}
-
-如果你使用 Ubuntu 或者其他支持 [snap](https://snapcraft.io/docs/core/install)
-包管理器的 Linux 发行版,kubeclt 可以作为 [Snap](https://snapcraft.io)
-应用来安装:
-
-```shell
-snap install kubectl --classic
-
-kubectl version --client
-```
-
-{{% /tab %}}
-
-{{% tab name="Homebrew" %}}
-
-如果你在使用 Linux 且使用 [Homebrew](https://docs.brew.sh/Homebrew-on-Linux) 包管理器,
-kubectl 也可以用这种方式[安装](https://docs.brew.sh/Homebrew-on-Linux#install)。
-
-```shell
-brew install kubectl
-
-kubectl version --client
-```
-
-{{% /tab %}}
-
-{{< /tabs >}}
-
-
-## 在 macOS 上安装 kubectl
-
-### 在 macOS 上使用 curl 安装 kubectl 可执行文件
-
-
-1. 下载最新发行版本:
-
- ```bash
- curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
- ```
-
-
- 要下载特定版本,可将上面命令中的 `$(curl -L -s https://dl.k8s.io/release/stable.txt)`
- 部分替换成你想要的版本。
-
- 例如,要在 macOS 上安装版本 {{< param "fullversion" >}},输入:
-
- ```bash
- curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/darwin/amd64/kubectl
- ```
-
-
-2. 检查二进制可执行文件(可选操作)
-
-
- 下载 kubectl 校验和文件:
-
- ```bash
- curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
- ```
-
-
- 使用校验和文件检查 kubectl 二进制可执行文件:
-
- ```bash
- echo "$(
- 如果合法,则输出为:
-
- ```bash
- kubectl: OK
- ```
-
-
- 如果检查失败,则 `shasum` 退出且状态值为非 0,并打印类似如下的输出:
-
- ```bash
- kubectl: FAILED
- shasum: WARNING: 1 computed checksum did NOT match
- ```
-
- {{< note >}}
-
- 下载的二进制可执行文件和校验和文件须为同一版本。
- {{< /note >}}
-
-
-3. 设置 kubectl 二进制文件为可执行模式
-
- ```bash
- chmod +x ./kubectl
- ```
-
-
-4. 将 kubectl 二进制文件移动到系统 `PATH` 环境变量中的某个位置:
-
- ```bash
- sudo mv ./kubectl /usr/local/bin/kubectl && \
- sudo chown root: /usr/local/bin/kubectl
- ```
-
-
-5. 测试以确保所安装的版本是最新的:
-
- ```bash
- kubectl version --client
- ```
-
-
-### 在 macOS 上使用 Homebrew 安装 {#install-with-homebrew-on-macos}
-
-如果你使用的是 macOS 系统且使用 [Homebrew](https://brew.sh/) 包管理器,
-你可以使用 Homebrew 来安装 kubectl。
-
-
-1. 运行安装命令:
-
- ```bash
- brew install kubectl
- ```
-
-
- 或者
-
- ```bash
- brew install kubernetes-cli
- ```
-
-
-2. 测试以确保你安装的版本是最新的:
-
- ```bash
- kubectl version --client
- ```
-
-
-### 在 macOS 上用 Macports 安装 kubectl
-
-如果你使用的是 macOS 系统并使用 [Macports](https://macports.org/) 包管理器,
-你可以通过 Macports 安装 kubectl。
-
-
-1. 运行安装命令:
-
- ```bash
- sudo port selfupdate
- sudo port install kubectl
- ```
-
-
-2. 测试以确保你安装的版本是最新的:
-
- ```bash
- kubectl version --client
- ```
-
-
-## 在 Windows 上安装 kubectl {#install-kubectl-on-windows}
-
-### 在 Windows 上使用 curl 安装 kubectl 二进制文件
-
-
-1. 下载[最新发行版本 {{< param "fullversion" >}}](https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe)。
-
- 或者如何你安装了 `curl`,使用下面的命令:
-
- ```bash
- curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe
- ```
-
-
- 要了解哪个是最新的稳定版本(例如,出于脚本编写目的),可查看
- [https://dl.k8s.io/release/stable.txt](https://dl.k8s.io/release/stable.txt)。
-
-
-2. 验证二进制可执行文件(可选操作)
-
-
- 下载 kubectl 校验和文件:
-
- ```powershell
- curl -LO https://dl.k8s.io/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe.sha256
- ```
-
-
- 使用校验和文件验证 kubectl 可执行二进制文件:
-
-
- - 使用命令行提示符(Commmand Prompt)来手动比较 `CertUtil` 的输出与
- 所下载的校验和文件:
-
- ```cmd
- CertUtil -hashfile kubectl.exe SHA256
- type kubectl.exe.sha256
- ```
-
-
- - 使用 PowerShell 的 `-eq` 操作符来自动完成校验操作,获得 `True` 或 `False` 结果:
-
- ```powershell
- $($(CertUtil -hashfile .\kubectl.exe SHA256)[1] -replace " ", "") -eq $(type .\kubectl.exe.sha256)
- ```
-
-
-3. 将可执行文件放到 PATH 目录下。
-
-
-4. 测试以确定所下载的 `kubectl` 版本是正确的的:
-
- ```cmd
- kubectl version --client
- ```
-
-
-{{< note >}}
-[Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/#kubernetes)
-会将自己的 `kubectl` 程序添加到 PATH 中。
-如果你之前安装过 Docker Desktop,你可能需要将新安装的 PATH 项放到 Docker Desktop
-安装程序所添加的目录之前,或者干脆删除 Docker Desktop 所安装的 `kubectl`。
-{{< /note >}}
-
-
-## 使用 PowerShell 从 PSGallery 安装 kubectl
-
-如果你使用的是 Windows 系统并使用 [Powershell Gallery](https://www.powershellgallery.com/)
-软件包管理器,你可以使用 PowerShell 安装和更新 kubectl。
-
-
-1. 运行安装命令(确保指定 `DownloadLocation`):
-
- ```powershell
- Install-Script -Name 'install-kubectl' -Scope CurrentUser -Force
- install-kubectl.ps1 [-DownloadLocation <路径名>]
- ```
-
-
- {{< note >}}
- 如果你没有指定 `DownloadLocation`,那么 `kubectl` 将安装在用户的 `temp` 目录中。
- {{< /note >}}
-
-
- 安装程序创建 `$HOME/.kube` 目录,并指示它创建配置文件
-
-
-2. 测试以确保你安装的版本是最新的:
-
- ```powershell
- kubectl version --client
- ```
-
-
-{{< note >}}
-通过重新运行步骤 1 中列出的两个命令可以更新安装。
-{{< /note >}}
-
-
-### 在 Windows 系统上用 Chocolatey 或者 Scoop 安装
-
-
-1. 要在 Windows 上用 [Chocolatey](https://chocolatey.org) 或者
- [Scoop](https://scoop.sh) 命令行安装程序安装 kubectl:
-
- {{< tabs name="kubectl_win_install" >}}
- {{% tab name="choco" %}}
- ```powershell
- choco install kubernetes-cli
- ```
- {{% /tab %}}
- {{% tab name="scoop" %}}
- ```powershell
- scoop install kubectl
- ```
- {{% /tab %}}
- {{< /tabs >}}
-
-
-2. 测试以确保你安装的版本是最新的:
-
- ```
- kubectl version --client
- ```
-
-
-3. 切换到你的 HOME 目录:
-
- ```powershell
- # 如果你在使用 cmd.exe,运行 cd %USERPROFILE%
- cd ~
- ```
-
-
-4. 创建 `.kube` 目录:
-
- ```powershell
- mkdir .kube
- ```
-
-
-5. 进入到刚刚创建的 `.kube` 目录:
-
- ```powershell
- cd .kube
- ```
-
-
-6. 配置 kubectl 以使用远程 Kubernetes 集群:
-
- ```powershell
- New-Item config -type file
- ```
-
-
-{{< note >}}
-使用你喜欢的文本编辑器,例如 Notepad,编辑此配置文件。
-{{< /note >}}
-
-
-
-## 将 kubectl 作为 Google Cloud SDK 的一部分下载
-
-kubectl 可以作为 Google Cloud SDK 的一部分进行安装。
-
-
-1. 安装 [Google Cloud SDK](https://cloud.google.com/sdk/)。
-
-2. 运行以下命令安装 `kubectl`:
-
- ```shell
- gcloud components install kubectl
- ```
-
-
-3. 测试以确保你安装的版本是最新的:
-
- ```shell
- kubectl version --client
- ```
-
-
-## 验证 kubectl 配置 {#verifying-kubectl-configuration}
-
-kubectl 需要一个
-[kubeconfig 配置文件](/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
-使其找到并访问 Kubernetes 集群。当你使用
-[kube-up.sh](https://github.com/kubernetes/kubernetes/blob/master/cluster/kube-up.sh)
-创建 Kubernetes 集群或者使用已经部署好的 Minikube 集群时,
-会自动生成 kubeconfig 配置文件。
-默认情况下,kubectl 的配置文件位于 `~/.kube/config`。
-
-
-通过获取集群状态检查 kubectl 是否被正确配置:
-
-```shell
-kubectl cluster-info
-```
-
-
-如果你看到一个 URL 被返回,那么 kubectl 已经被正确配置,
-能够正常访问你的 Kubernetes 集群。
-
-如果你看到类似以下的信息被返回,那么 kubectl 没有被正确配置,
-无法正常访问你的 Kubernetes 集群。
-
-```
-The connection to the server was refused - did you specify the right host or port?
-```
-
-
-例如,如果你打算在笔记本电脑(本地)上运行 Kubernetes 集群,则需要首先安装
-minikube 等工具,然后重新运行上述命令。
-
-如果 kubectl cluster-info 能够返回 URL 响应,但你无法访问你的集群,可以使用
-下面的命令检查配置是否正确:
-
-```shell
-kubectl cluster-info dump
-```
-
-
-## 可选的 kubectl 配置
-
-### 启用 shell 自动补全功能
-
-kubectl 为 Bash 和 Zsh 支持自动补全功能,可以节省大量输入!
-
-下面是设置 Bash 与 Zsh 下自动补齐的过程(包括 Linux 与 macOS 的差异)。
-
-{{< tabs name="kubectl_autocompletion" >}}
-
-{{% tab name="Linux 上的 Bash" %}}
-
-
-#### 介绍
-
-用于 Bash 的 kubectl 自动补齐脚本可以用 `kubectl completion bash` 命令生成。
-在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。
-
-不过,补齐脚本依赖于 [**bash-completion**](https://github.com/scop/bash-completion) 软件包,
-这意味着你必须先安装 bash-completion(你可以通过运行 `type _init_completion`)来测试是否
-你已经安装了这个软件)。
-
-
-### 安装 bash-completion
-
-很多包管理器都提供 bash-completion(参见[这里](https://github.com/scop/bash-completion#installation))。
-你可以通过 `apt-get install bash-completion` 或 `yum install bash-completion` 来安装。
-
-上述命令会创建 `/usr/share/bash-completion/bash_completion`,也就是 bash-completion 的主脚本。
-取决于所用的包管理器,你可能必须在你的 `~/.bashrc` 中通过 `source` 源引此文件。
-
-要搞清楚这一点,可以重新加载你的 Shell 并运行 `type _init_completion`。
-如果命令成功,一切就绪;否则你就需要将下面的内容添加到你的 `~/.bashrc`
-文件中:
-
-```bash
-source /usr/share/bash-completion/bash_completion
-```
-
-之后,重新加载你的 Shell 并运行 `type _init_completion` 来检查 bash-completion 是否已
-正确安装。
-
-
-### 启用 kubectl 自动补齐
-
-你现在需要确定在你的所有 Shell 会话中都源引了 kubectl 自动补齐脚本。
-实现这点有两种方式:
-
-
-- 在 `~/.bashrc` 文件中源引自动补齐脚本
-
- ```bash
- echo 'source <(kubectl completion bash)' >>~/.bashrc
- ```
-
-
-- 将自动补齐脚本添加到目录 `/etc/bash_completion.d`:
-
- ```bash
- kubectl completion bash >/etc/bash_completion.d/kubectl
- ```
-
-
-如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用:
-
-```bash
-echo 'alias k=kubectl' >>~/.bashrc
-echo 'complete -F __start_kubectl k' >>~/.bashrc
-```
-
-
-
-
-{{< note >}}
-bash-completion 会自动源引 `/etc/bash_completion.d` 下的所有自动补齐脚本。
-{{< /note >}}
-
-
-两种方法是等价的。重新加载 Shell 之后,kubectl 的自动补齐应该能够使用了。
-
-{{% /tab %}}
-
-{{% tab name="macOS 上的 Bash" %}}
-
-
-### 介绍
-
-用于 Bash 的 kubectl 自动补齐脚本可以用 `kubectl completion bash` 命令生成。
-在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。
-不过,补齐脚本依赖于 [**bash-completion**](https://github.com/scop/bash-completion) 软件包,
-你必须预先安装。
-
-
-{{< warning>}}
-`bash-completion` 有两个版本,v1 和 v2。
-v1 是用于 Bash 3.2 版本的(macOS 上的默认配置),v2 是用于 Bash 4.1 以上版本的。
-`kubectl` 补齐脚本 *无法* 在 v1 版本的 bash-completion 和 Bash 3.2 上使用,
-需要 **bash-completion v2** 和 **Bash 4.1 以上版本**。
-因此,为了在 macOS 上正常使用 kubectl 自动补齐,你需要安装并使用 Bash 4.1+
-版本([*相关指南*](https://itnext.io/upgrading-bash-on-macos-7138bd1066ba))。
-下面的指令假定你在使用 Bash 4.1+(也就是说 Bash 4.1 及以上版本)。
-{{< /warning >}}
-
-
-### 升级 Bash {#upgrade-bash}
-
-这里的命令假定你使用的是 Bash 4.1+。你可以通过下面的命令来检查 Bash 版本:
-
-```bash
-echo $BASH_VERSION
-```
-
-
-如果版本很老,你可以使用 Homebrew 来安装或升级:
-
-```bash
-brew install bash
-```
-
-
-重新加载 Shell 并验证你使用的版本是期望的版本:
-
-```bash
-echo $BASH_VERSION $SHELL
-```
-
-
-Homebrew 通常安装 Bash 到 `/usr/local/bin/bash`。
-
-
-### 安装 bash-completion
-
-{{< note >}}
-如前所述,这里的指令假定你使用的是 Bash 4.1+,这意味着你会安装 bash-completion
-的 v2 版本(与此相对,在 Bash 3.2 版本中的 bash-completion v1 是 kubectl
-无法使用的。
-{{< /note >}}
-
-你可以通过输入 `type _init_completion` 来测试是否 bash-completion v2 已经安装。
-如果没有,可以用 Homebrew 来安装:
-
-```bash
-brew install bash-completion@2
-```
-
-
-就像命令的输出所提示的,你应该将下面的内容添加到 `~/.bash_profile` 文件中:
-
-```bash
-export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
-[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
-```
-
-
-重新加载你的 Shell 并运行 `type _init_completion`,验证 bash-completion v2
-被正确安装。
-
-
-### 启用 kubectl 自动补齐
-
-你现在需要确保在你的所有 Shell 会话中都源引了 kubectl 自动补齐脚本。
-实现这点有两种方式:
-
-
-- 在 `~/.bash_profile` 文件中源引自动补齐脚本
-
- ```bash
- echo 'source <(kubectl completion bash)' >>~/.bash_profile
- ```
-
-
-- 将自动补齐脚本添加到目录 `/usr/local/etc/bash_completion.d`:
-
- ```bash
- kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl
- ```
-
-
-- 如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用:
-
- ```bash
- echo 'alias k=kubectl' >>~/.bash_profile
- echo 'complete -F __start_kubectl k' >>~/.bash_profile
- ```
-
-
-- 如果你是所有 Homebrew 来安装 kubectl(如[前文](#install-with-homebrew-on-macos)所述),
- kubectl 补齐脚本应该已经位于 `/usr/local/etc/bash_completion.d/kubectl` 目录下。
- 在这种情况下,你就不用做任何操作了。
-
-
-{{< note >}}
-Homebrew 安装 bash-completion v2 时会源引 `BASH_COMPLETION_COMPAT_DIR` 目录下的所有
-文件,这是为什么后面两种方法也可行的原因。
-{{< /note >}}
-
-
-在任何一种情况下,重新加载 Shell 之后,kubectl 的自动补齐应该可以工作了。
-
-{{% /tab %}}
-
-{{% tab name="Zsh" %}}
-
-
-Zsh 的 kubectl 补齐脚本可通过 `kubectl completion zsh` 命令来生成。
-在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。
-
-```zsh
-source <(kubectl completion zsh)
-```
-
-
-如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用:
-
-```zsh
-echo 'alias k=kubectl' >>~/.zshrc
-echo 'complete -F __start_kubectl k' >>~/.zshrc
-```
-
-
-重新加载 Shell 之后,kubectl 的自动补齐应该可以工作了。
-
-
-如果你看到类似 `complete:13: command not found: compdef` 这种错误信息,
-可以将下面的命令添加到你的 `~/.zshrc` 文件的文件头:
-
-```zsh
-autoload -Uz compinit
-compinit
-```
-
-{{% /tab %}}
-
-{{< /tabs >}}
-
-## {{% heading "whatsnext" %}}
-
-
-* [安装 Minikube](https://minikube.sigs.k8s.io/docs/start/)
-* 参阅[入门指南](/zh/docs/setup/),了解创建集群相关的信息
-* 了解如何[启动和暴露你的应用](/zh/docs/tasks/access-application-cluster/service-access-application-cluster/)
-* 如果你需要访问别人创建的集群,参考
- [共享集群访问文档](/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)
-* 阅读 [kubectl 参考文档](/zh/docs/reference/kubectl/kubectl/)
-
From e28f3ce2ffd2a9e2ea73a8833a216704ca29d63d Mon Sep 17 00:00:00 2001
From: wangyysde
Date: Tue, 27 Apr 2021 00:20:51 +0800
Subject: [PATCH 027/129]
content/en/docs/reference/command-line-tools-reference/feature-gates.md
Signed-off-by: wangyysde
---
.../reference/command-line-tools-reference/feature-gates.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md
index 849af9f00b..cdc8babff3 100644
--- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md
+++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md
@@ -266,6 +266,7 @@ different Kubernetes components.
| `EvenPodsSpread` | `true` | Beta | 1.18 | 1.18 |
| `EvenPodsSpread` | `true` | GA | 1.19 | - |
| `ExecProbeTimeout` | `true` | GA | 1.20 | - |
+| `ExternalPolicyForExternalIP` | `true` | GA | 1.18 | - |
| `GCERegionalPersistentDisk` | `true` | Beta | 1.10 | 1.12 |
| `GCERegionalPersistentDisk` | `true` | GA | 1.13 | - |
| `HugePages` | `false` | Alpha | 1.8 | 1.9 |
@@ -635,6 +636,7 @@ Each feature gate is designed for enabling/disabling a specific feature:
host mounts, or containers that are privileged or using specific non-namespaced
capabilities (e.g. `MKNODE`, `SYS_MODULE` etc.). This should only be enabled
if user namespace remapping is enabled in the Docker daemon.
+- `ExternalPolicyForExternalIP`: Fix a bug where ExternalTrafficPolicy is not applied to Service ExternalIPs.
- `GCERegionalPersistentDisk`: Enable the regional PD feature on GCE.
- `GenericEphemeralVolume`: Enables ephemeral, inline volumes that support all features
of normal volumes (can be provided by third-party storage vendors, storage capacity tracking,
From 7499d8de034bf4068fc1f04e91fd7562a854dcc0 Mon Sep 17 00:00:00 2001
From: Qiming Teng
Date: Tue, 27 Apr 2021 19:35:21 +0800
Subject: [PATCH 028/129] [zh] Resync concepts section (4)
---
.../services-networking/dual-stack.md | 188 ++++++++++--------
.../services-networking/endpoint-slices.md | 95 ++++-----
.../services-networking/network-policies.md | 110 +++++++++-
3 files changed, 249 insertions(+), 144 deletions(-)
diff --git a/content/zh/docs/concepts/services-networking/dual-stack.md b/content/zh/docs/concepts/services-networking/dual-stack.md
index f01bd78038..e1d5516bec 100644
--- a/content/zh/docs/concepts/services-networking/dual-stack.md
+++ b/content/zh/docs/concepts/services-networking/dual-stack.md
@@ -26,46 +26,46 @@ weight: 70
-{{< feature-state for_k8s_version="v1.16" state="alpha" >}}
+{{< feature-state for_k8s_version="v1.21" state="beta" >}}
-IPv4/IPv6 双协议栈能够将 IPv4 和 IPv6 地址分配给
+IPv4/IPv6 双协议栈网络能够将 IPv4 和 IPv6 地址分配给
{{< glossary_tooltip text="Pod" term_id="pod" >}} 和
{{< glossary_tooltip text="Service" term_id="service" >}}。
-如果你为 Kubernetes 集群启用了 IPv4/IPv6 双协议栈网络,
-则该集群将支持同时分配 IPv4 和 IPv6 地址。
+从 1.21 版本开始,Kubernetes 集群默认启用 IPv4/IPv6 双协议栈网络,
+以支持同时分配 IPv4 和 IPv6 地址。
-## 支持的功能
+## 支持的功能 {#supported-features}
-在 Kubernetes 集群上启用 IPv4/IPv6 双协议栈可提供下面的功能:
+Kubernetes 集群的 IPv4/IPv6 双协议栈可提供下面的功能:
- * 双协议栈 pod 网络 (每个 pod 分配一个 IPv4 和 IPv6 地址)
- * IPv4 和 IPv6 启用的服务
- * Pod 的集群外出口通过 IPv4 和 IPv6 路由
+* 双协议栈 pod 网络 (每个 pod 分配一个 IPv4 和 IPv6 地址)
+* IPv4 和 IPv6 启用的服务
+* Pod 的集群外出口通过 IPv4 和 IPv6 路由
-## 先决条件
+## 先决条件 {#prerequisites}
- * Kubernetes 1.20 版本及更高版本,有关更早 Kubernetes 版本的使用双栈服务的信息,请参考那个版本的 Kubernetes 文档。
- * 提供商支持双协议栈网络(云提供商或其他提供商必须能够为 Kubernetes 节点提供可路由的 IPv4/IPv6 网络接口)
- * 支持双协议栈的网络插件(如 Kubenet 或 Calico)
+* Kubernetes 1.20 版本或更高版本,有关更早 Kubernetes 版本的使用双栈服务的信息,
+ 请参考对应版本的 Kubernetes 文档。
+* 提供商支持双协议栈网络(云提供商或其他提供商必须能够为 Kubernetes
+ 节点提供可路由的 IPv4/IPv6 网络接口)
+* 支持双协议栈的网络插件(如 Kubenet 或 Calico)
-## 启用 IPv4/IPv6 双协议栈
+## 配置 IPv4/IPv6 双协议栈
+要使用 IPv4/IPv6 双协议栈,确保为集群的相关组件启用 `IPv6DualStack`
+[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/),
+(从 1.21 版本开始,IPv4/IPv6 双协议栈默认是被启用的)。
+
-要启用 IPv4/IPv6 双协议栈,为集群的相关组件启用 `IPv6DualStack`
-[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/),
-并且设置双协议栈的集群网络分配:
-
- * kube-apiserver:
- * `--feature-gates="IPv6DualStack=true"`
- * `--service-cluster-ip-range=,`
- * kube-controller-manager:
- * `--feature-gates="IPv6DualStack=true"`
- * `--cluster-cidr=,`
- * `--service-cluster-ip-range=,`
- * `--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6` 对于 IPv4 默认为 /24,对于 IPv6 默认为 /64
- * kubelet:
- * `--feature-gates="IPv6DualStack=true"`
- * kube-proxy:
- * `--cluster-cidr=,`
- * `--feature-gates="IPv6DualStack=true"`
+* kube-apiserver:
+ * `--service-cluster-ip-range=,`
+* kube-controller-manager:
+ * `--cluster-cidr=,`
+ * `--service-cluster-ip-range=,`
+ * `--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6` 对于 IPv4 默认为 /24,对于 IPv6 默认为 /64
+* kube-proxy:
+ * `--cluster-cidr=,`
+{{< note >}}
-{{< note >}}
-
-IPv4 CIDR 的一个例子:`10.244.0.0/16`(尽管你会提供你自己的地址范围)
-
-IPv6 CIDR 的一个例子:`fdXY:IJKL:MNOP:15::/64`(这里演示的是格式而非有效地址 - 请看 [RFC 4193](https://tools.ietf.org/html/rfc4193))
+IPv4 CIDR 的一个例子:`10.244.0.0/16`(尽管你会提供你自己的地址范围)。
+IPv6 CIDR 的一个例子:`fdXY:IJKL:MNOP:15::/64`
+(这里演示的是格式而非有效地址 - 请看 [RFC 4193](https://tools.ietf.org/html/rfc4193))。
+
+从 1.21 开始 IPv4/IPv6 双协议栈默认为启用状态。
+你可以在必要的时候通过为 kube-apiserver、kube-controller-manager、kubelet
+和 kube-proxy 命令行设置 `--feature-gates="IPv6DualStack=false"` 来禁用
+此特性。
{{< /note >}}
-如果你的集群启用了 IPv4/IPv6 双协议栈网络,则可以使用 IPv4 或 IPv6 地址来创建
+你可以使用 IPv4 或 IPv6 地址来创建
{{< glossary_tooltip text="Service" term_id="service" >}}。
-服务的地址族默认为第一个服务集群 IP 范围的地址族(通过 kube-apiserver 的 `--service-cluster-ip-range` 参数配置)。
-当你定义服务时,可以选择将其配置为双栈。若要指定所需的行为,你可以设置 `.spec.ipFamilyPolicy` 字段为以下值之一:
+服务的地址族默认为第一个服务集群 IP 范围的地址族(通过 kube-apiserver 的
+`--service-cluster-ip-range` 参数配置)。
+当你定义服务时,可以选择将其配置为双栈。若要指定所需的行为,你可以设置
+`.spec.ipFamilyPolicy` 字段为以下值之一:
* `SingleStack`:单栈服务。控制面使用第一个配置的服务集群 IP 范围为服务分配集群 IP。
* `PreferDualStack`:
- * 仅当集群启用了双栈时使用。为服务分配 IPv4 和 IPv6 集群 IP。
- * 如果集群没有启用双堆栈,则此设置与 `SingleStack` 行为相同。
+ * 为服务分配 IPv4 和 IPv6 集群 IP 地址。
+ (如果集群设置了 `--feature-gates="IPv6DualStack=false"`,则此设置的行为与
+ `SingleStack` 设置相同。)
* `RequireDualStack`:从 IPv4 和 IPv6 的地址范围分配服务的 `.spec.ClusterIPs`
- * 从基于在 `.spec.ipFamilies` 数组中第一个元素的地址族的 `.spec.ClusterIPs` 列表中选择 `.spec.ClusterIP`
- * 集群必须配置双栈网络
-
+ * 从基于在 `.spec.ipFamilies` 数组中第一个元素的地址族的 `.spec.ClusterIPs`
+ 列表中选择 `.spec.ClusterIP`
+
-如果你想要定义哪个 IP 族用于单栈或定义双栈 IP 族的顺序,可以通过设置服务上的可选字段 `.spec.ipFamilies` 来选择地址族。
+如果你想要定义哪个 IP 族用于单栈或定义双栈 IP 族的顺序,可以通过设置
+服务上的可选字段 `.spec.ipFamilies` 来选择地址族。
+{{< note >}}
-{{< note >}}
-`.spec.ipFamilies` 字段是不可变的,因为系统无法为已经存在的服务重新分配 `.spec.ClusterIP`。
-如果你想改变 `.spec.ipFamilies`,则需要删除并重新创建服务。
+`.spec.ipFamilies` 字段是不可变的,因为系统无法为已经存在的服务重新分配
+`.spec.ClusterIP`。如果你想改变 `.spec.ipFamilies`,则需要删除并重新创建服务。
{{< /note >}}
-
你所列出的第一个地址族用于原来的 `.spec.ClusterIP` 字段。
-
### 双栈服务配置场景
以下示例演示多种双栈服务配置场景下的行为。
@@ -231,8 +232,8 @@ These examples demonstrate the behavior of various dual-stack Service configurat
1. 此服务规约中没有显式设定 `.spec.ipFamilyPolicy`。当你创建此服务时,Kubernetes
从所配置的第一个 `service-cluster-ip-range` 种为服务分配一个集群IP,并设置
`.spec.ipFamilyPolicy` 为 `SingleStack`。
- ([无选择算符的服务](/zh/docs/concepts/services-networking/service/#services-without-selectors)和
- [无头服务](/zh/docs/concepts/services-networking/service/#headless-services)的行为方式
+ ([无选择算符的服务](/zh/docs/concepts/services-networking/service/#services-without-selectors)
+ 和[无头服务](/zh/docs/concepts/services-networking/service/#headless-services)的行为方式
与此相同。)
{{< codenew file="service/networking/dual-stack-default-svc.yaml" >}}
@@ -251,6 +252,13 @@ These examples demonstrate the behavior of various dual-stack Service configurat
字段 `.spec.ClusterIPs` 是主要字段,包含两个分配的 IP 地址;`.spec.ClusterIP` 是次要字段,
其取值从 `.spec.ClusterIPs` 计算而来。
+ * 对于 `.spec.ClusterIP` 字段,控制面记录来自第一个服务集群 IP 范围
+ 对应的地址族的 IP 地址。
+ * 对于单协议栈的集群,`.spec.ClusterIPs` 和 `.spec.ClusterIP` 字段都
+ 仅仅列出一个地址。
+ * 对于启用了双协议栈的集群,将 `.spec.ipFamilyPolicy` 设置为
+ `RequireDualStack` 时,其行为与 `PreferDualStack` 相同。
+
{{< codenew file="service/networking/dual-stack-preferred-svc.yaml" >}}
下面示例演示了在服务已经存在的集群上新启用双栈时的默认行为。
+(将现有集群升级到 1.21 会启用双协议栈支持,除非设置了
+`--feature-gates="IPv6DualStack=false"`)
-1. 在集群上启用双栈时,控制面会将现有服务(无论是 `IPv4` 还是 `IPv6`)配置 `.spec.ipFamilyPolicy`
- 设置为 `SingleStack` 并设置 `.spec.ipFamilies` 为服务的当前地址族。
+1. 在集群上启用双栈时,控制面会将现有服务(无论是 `IPv4` 还是 `IPv6`)配置
+ `.spec.ipFamilyPolicy` 为 `SingleStack` 并设置 `.spec.ipFamilies`
+ 为服务的当前地址族。
{{< codenew file="service/networking/dual-stack-default-svc.yaml" >}}
@@ -322,7 +333,7 @@ These examples demonstrate the default behavior when dual-stack is newly enabled
2. 在集群上启用双栈时,带有选择算符的现有
[无头服务](/zh/docs/concepts/services-networking/service/#headless-services)
由控制面设置 `.spec.ipFamilyPolicy` 为 `SingleStack`
- 并设置 `.spec.ipFamilies` 为第一个服务群集 IP 范围的地址族(通过配置 kube-apiserver 的
+ 并设置 `.spec.ipFamilies` 为第一个服务集群 IP 范围的地址族(通过配置 kube-apiserver 的
`--service-cluster-ip-range` 参数),即使 `.spec.ClusterIP` 的设置值为 `None` 也如此。
{{< codenew file="service/networking/dual-stack-default-svc.yaml" >}}
@@ -375,21 +386,25 @@ Services can be changed from single-stack to dual-stack and from dual-stack to s
-->
1. 要将服务从单栈更改为双栈,根据需要将 `.spec.ipFamilyPolicy` 从 `SingleStack` 改为
`PreferDualStack` 或 `RequireDualStack`。
- 当你将此服务从单栈更改为双栈时,Kubernetes 将分配缺失的地址族,以便现在该服务具有 IPv4 和 IPv6 地址。
+ 当你将此服务从单栈更改为双栈时,Kubernetes 将分配缺失的地址族,以便现在
+ 该服务具有 IPv4 和 IPv6 地址。
编辑服务规约将 `.spec.ipFamilyPolicy` 从 `SingleStack` 改为 `PreferDualStack`。
之前:
+
```yaml
spec:
ipFamilyPolicy: SingleStack
```
+
之后:
+
```yaml
spec:
ipFamilyPolicy: PreferDualStack
@@ -399,9 +414,10 @@ Services can be changed from single-stack to dual-stack and from dual-stack to s
1. To change a Service from dual-stack to single-stack, change `.spec.ipFamilyPolicy` from `PreferDualStack` or `RequireDualStack` to `SingleStack`. When you change this Service from dual-stack to single-stack, Kubernetes retains only the first element in the `.spec.ClusterIPs` array, and sets `.spec.ClusterIP` to that IP address and sets `.spec.ipFamilies` to the address family of `.spec.ClusterIPs`.
-->
-2. 要将服务从双栈更改为单栈,请将 `.spec.ipFamilyPolicy` 从 `PreferDualStack` 或 `RequireDualStack`
- 改为 `SingleStack`。
- 当你将此服务从双栈更改为单栈时,Kubernetes 只保留 `.spec.ClusterIPs` 数组中的第一个元素,并设置 `.spec.ClusterIP` 为那个 IP 地址,
+2. 要将服务从双栈更改为单栈,请将 `.spec.ipFamilyPolicy` 从 `PreferDualStack` 或
+ `RequireDualStack` 改为 `SingleStack`。
+ 当你将此服务从双栈更改为单栈时,Kubernetes 只保留 `.spec.ClusterIPs`
+ 数组中的第一个元素,并设置 `.spec.ClusterIP` 为那个 IP 地址,
并设置 `.spec.ipFamilies` 为 `.spec.ClusterIPs` 地址族。
对于[不带选择算符的无头服务](/zh/docs/concepts/services-networking/service/#without-selectors),
-若没有显式设置 `.spec.ipFamilyPolicy`,则 `.spec.ipFamilyPolicy` 字段默认设置为 `RequireDualStack`。
+若没有显式设置 `.spec.ipFamilyPolicy`,则 `.spec.ipFamilyPolicy`
+字段默认设置为 `RequireDualStack`。
-
要为你的服务提供双栈负载均衡器:
- * 将 `.spec.type` 字段设置为 `LoadBalancer`
- * 将 `.spec.ipFamilyPolicy` 字段设置为 `PreferDualStack` 或者 `RequireDualStack`
+* 将 `.spec.type` 字段设置为 `LoadBalancer`
+* 将 `.spec.ipFamilyPolicy` 字段设置为 `PreferDualStack` 或者 `RequireDualStack`
+
+{{< note >}}
-{{< note >}}
为了使用双栈的负载均衡器类型服务,你的云驱动必须支持 IPv4 和 IPv6 的负载均衡器。
{{< /note >}}
@@ -445,13 +462,16 @@ To use a dual-stack `LoadBalancer` type Service, your cloud provider must suppor
-如果你要启用出口流量,以便使用非公开路由 IPv6 地址的 Pod 到达集群外地址(例如公网),则需要通过透明代理或 IP 伪装等机制使 Pod 使用公共路由的 IPv6 地址。
-[ip-masq-agent](https://github.com/kubernetes-sigs/ip-masq-agent)项目支持在双栈集群上进行 IP 伪装。
+如果你要启用出站流量,以便使用非公开路由 IPv6 地址的 Pod 到达集群外地址
+(例如公网),则需要通过透明代理或 IP 伪装等机制使 Pod 使用公共路由的
+IPv6 地址。
+[ip-masq-agent](https://github.com/kubernetes-sigs/ip-masq-agent)项目
+支持在双栈集群上进行 IP 伪装。
+{{< note >}}
-{{< note >}}
确认你的 {{< glossary_tooltip text="CNI" term_id="cni" >}} 驱动支持 IPv6。
{{< /note >}}
@@ -459,5 +479,7 @@ Ensure your {{< glossary_tooltip text="CNI" term_id="cni" >}} provider supports
-* [验证 IPv4/IPv6 双协议栈](/zh/docs/tasks/network/validate-dual-stack)网络
\ No newline at end of file
+* [验证 IPv4/IPv6 双协议栈](/zh/docs/tasks/network/validate-dual-stack)网络
+* [使用 kubeadm 启用双协议栈网络](/zh/docs/setup/production-environment/tools/kubeadm/dual-stack-support/)
diff --git a/content/zh/docs/concepts/services-networking/endpoint-slices.md b/content/zh/docs/concepts/services-networking/endpoint-slices.md
index bfd8019d3c..54d086ddb5 100644
--- a/content/zh/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/zh/docs/concepts/services-networking/endpoint-slices.md
@@ -1,25 +1,27 @@
---
title: 端点切片(Endpoint Slices)
content_type: concept
-weight: 35
+weight: 45
---
-{{< feature-state for_k8s_version="v1.17" state="beta" >}}
+{{< feature-state for_k8s_version="v1.21" state="stable" >}}
-_端点切片(Endpoint Slices)_ 提供了一种简单的方法来跟踪 Kubernetes 集群中的网络端点
+_端点切片(EndpointSlices)_ 提供了一种简单的方法来跟踪 Kubernetes 集群中的网络端点
(network endpoints)。它们为 Endpoints 提供了一种可伸缩和可拓展的替代方案。
@@ -85,7 +87,7 @@ EndpointSlice 的名称必须是合法的
例如,下面是 Kubernetes 服务 `example` 的 EndpointSlice 资源示例。
```yaml
-apiVersion: discovery.k8s.io/v1beta1
+apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata:
name: example-abc
@@ -102,9 +104,8 @@ endpoints:
conditions:
ready: true
hostname: pod-1
- topology:
- kubernetes.io/hostname: node-1
- topology.kubernetes.io/zone: us-west2-a
+ nodeName: node-1
+ zone: us-west2-a
```
### 拓扑信息 {#topology}
-{{< feature-state for_k8s_version="v1.20" state="deprecated" >}}
+EndpointSlice 中的每个端点都可以包含一定的拓扑信息。
+拓扑信息包括端点的位置,对应节点、可用区的信息。
+这些信息体现为 EndpointSlices 的如下端点字段:
+
+
+* `nodeName` - 端点所在的 Node 名称;
+* `zone` - 端点所处的可用区。
{{< note >}}
-EndpointSlices 中的 topology 字段已被弃用,并将在以后的版本中删除。
-将使用新的 `nodeName` 字段代替在 topology 中设置 `kubernetes.io/hostname`。
-可以确定的是,其他覆盖区和域的拓扑字段用 EndpointSlice 标签来表达更合适,
-该标签将应用于 EndpointSlice 内的所有端点。
+
+在 v1 API 中,逐个端点设置的 `topology` 实际上被去除,以鼓励使用专用
+的字段 `nodeName` 和 `zone`。
+
+
+对 `EndpointSlice` 对象的 `endpoint` 字段设置任意的拓扑结构信息这一操作已被
+废弃,不再被 v1 API 所支持。取而代之的是 v1 API 所支持的 `nodeName` 和 `zone`
+这些独立的字段。这些字段可以在不同的 API 版本之间自动完成转译。
+例如,v1beta1 API 中 `topology` 字段的 `topology.kubernetes.io/zone` 取值可以
+在 v1 API 中通过 `zone` 字段访问。
{{< /note >}}
-EndpointSlice 中的每个端点都可以包含一定的拓扑信息。
-这一信息用来标明端点的位置,包含对应节点、可用区、区域的信息。
-当这些值可用时,控制面会为 EndpointSlice 设置如下拓扑标签:
-
-
-* `kubernetes.io/hostname` - 端点所在的节点名称
-* `topology.kubernetes.io/zone` - 端点所处的可用区
-* `topology.kubernetes.io/region` - 端点所处的区域
-
-
-这些标签的值时根据与切片中各个端点相关联的资源来生成的。
-标签 `hostname` 代表的是对应的 Pod 的 NodeName 字段的取值。
-`zone` 和 `region` 标签则代表的是对应的节点所拥有的同名标签的值。
-
### 管理 {#management}
-通常,控制面(尤其是端点切片的 {{< glossary_tooltip text="controller" term_id="controller" >}})
+通常,控制面(尤其是端点切片的 {{< glossary_tooltip text="控制器" term_id="controller" >}})
会创建和管理 EndpointSlice 对象。EndpointSlice 对象还有一些其他使用场景,
例如作为服务网格(Service Mesh)的实现。这些场景都会导致有其他实体
或者控制器负责管理额外的 EndpointSlice 集合。
diff --git a/content/zh/docs/concepts/services-networking/network-policies.md b/content/zh/docs/concepts/services-networking/network-policies.md
index 8b38fa25d4..75631fb241 100644
--- a/content/zh/docs/concepts/services-networking/network-policies.md
+++ b/content/zh/docs/concepts/services-networking/network-policies.md
@@ -427,47 +427,138 @@ When the feature gate is enabled, you can set the `protocol` field of a NetworkP
来禁用 `SCTPSupport` [特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)。
启用该特性门控后,用户可以将 NetworkPolicy 的 `protocol` 字段设置为 `SCTP`。
+{{< note >}}
-{{< note >}}
你必须使用支持 SCTP 协议网络策略的 {{< glossary_tooltip text="CNI" term_id="cni" >}} 插件。
{{< /note >}}
+
+## 针对某个端口范围 {#targeting-a-range-of-ports}
+
+{{< feature-state for_k8s_version="v1.21" state="alpha" >}}
+
+
+在编写 NetworkPolicy 时,你可以针对一个端口范围而不是某个固定端口。
+
+这一目的可以通过使用 `endPort` 字段来实现,如下例所示:
+
+```yaml
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: multi-port-egress
+ namespace: default
+spec:
+ podSelector:
+ matchLabels:
+ role: db
+ policyTypes:
+ - Egress
+ egress:
+ - to:
+ - ipBlock:
+ cidr: 10.0.0.0/24
+ ports:
+ - protocol: TCP
+ port: 32000
+ endPort: 32768
+```
+
+
+上面的规则允许名字空间 `default` 中所有带有标签 `db` 的 Pod 使用 TCP 协议
+与 `10.0.0.0/24` 范围内的 IP 通信,只要目标端口介于 32000 和 32768 之间就可以。
+
+
+使用此字段时存在以下限制:
+
+* 作为一种 Alpha 阶段的特性,端口范围设定默认是被禁用的。要在整个集群
+ 范围内允许使用 `endPort` 字段,你(或者你的集群管理员)需要为 API
+ 服务器设置 `-feature-gates=NetworkPolicyEndPort=true,...` 以启用
+ `NetworkPolicyEndPort`
+ [特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)。
+* `endPort` 字段必须等于或者大于 `port` 字段的值。
+* 两个字段的设置值都只能是数字。
+
+{{< note >}}
+
+你的集群所使用的 {{< glossary_tooltip text="CNI" term_id="cni" >}} 插件
+必须支持在 NetworkPolicy 规约中使用 `endPort` 字段。
+{{< /note >}}
+
+
+## 基于名字指向某名字空间 {#targeting-a-namespace-by-its-name}
+
+{{< feature-state state="beta" for_k8s_version="1.21" >}}
+
+
+只要 `NamespaceDefaultLabelName`
+[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)
+被启用,Kubernetes 控制面会在所有名字空间上设置一个不可变更的标签
+`kubernetes.io/metadata.name`。该标签的值是名字空间的名称。
+
+如果 NetworkPolicy 无法在某些对象字段中指向某名字空间,你可以使用标准的
+标签方式来指向特定名字空间。
+
-## 你通过网络策略(至少目前还)无法完成的工作
+## 通过网络策略(至少目前还)无法完成的工作
-到 Kubernetes v1.20 为止,NetworkPolicy API 还不支持以下功能,不过
+到 Kubernetes {{< skew latestVersion >}} 为止,NetworkPolicy API 还不支持以下功能,不过
你可能可以使用操作系统组件(如 SELinux、OpenVSwitch、IPTables 等等)
或者第七层技术(Ingress 控制器、服务网格实现)或准入控制器来实现一些
替代方案。
如果你对 Kubernetes 中的网络安全性还不太了解,了解使用 NetworkPolicy API
还无法实现下面的用户场景是很值得的。
-对这些用户场景中的一部分(而非全部)的讨论扔在进行,或许在将来 NetworkPolicy
-API 中会给出一定支持。
- 强制集群内部流量经过某公用网关(这种场景最好通过服务网格或其他代理来实现);
- 与 TLS 相关的场景(考虑使用服务网格或者 Ingress 控制器);
- 特定于节点的策略(你可以使用 CIDR 来表达这一需求不过你无法使用节点在
Kubernetes 中的其他标识信息来辩识目标节点);
-- 基于名字来选择名字空间或者服务(不过,你可以使用 {{< glossary_tooltip text="标签" term_id="label" >}}
+- 基于名字来选择服务(不过,你可以使用 {{< glossary_tooltip text="标签" term_id="label" >}}
来选择目标 Pod 或名字空间,这也通常是一种可靠的替代方案);
- 创建或管理由第三方来实际完成的“策略请求”;
-{{< feature-state for_k8s_version="v1.17" state="alpha" >}}
+{{< feature-state for_k8s_version="v1.21" state="deprecated" >}}
+
+{{< note >}}
+
+此功能特性,尤其是 Alpha 阶段的 `topologyKeys` API,在 Kubernetes v1.21
+版本中已被废弃。Kubernetes v1.21 版本中引入的
+[拓扑感知的提示](/zh/docs/concepts/services-networking/topology-aware-hints/),
+提供类似的功能。
+{{ note >}}
-## 介绍 {#introduction}
+## 拓扑感知的流量路由
-默认情况下,发往 `ClusterIP` 或者 `NodePort` 服务的流量可能会被路由到任意一个服务后端的地址上。
-从 Kubernetes 1.7 开始,可以将“外部”流量路由到节点上运行的 Pod 上,但不支持 `ClusterIP` 服务,
-更复杂的拓扑 — 比如分区路由 — 也还不支持。
-通过允许 `Service` 创建者根据源 `Node` 和目的 `Node` 的标签来定义流量路由策略,
-服务拓扑特性实现了服务流量的路由。
+默认情况下,发往 `ClusterIP` 或者 `NodePort` 服务的流量可能会被路由到
+服务的任一后端的地址。Kubernetes 1.7 允许将“外部”流量路由到接收到流量的
+节点上的 Pod。对于 `ClusterIP` 服务,无法完成同节点优先的路由,你也无法
+配置集群优选路由到同一可用区中的端点。
+通过在 Service 上配置 `topologyKeys`,你可以基于来源节点和目标节点的
+标签来定义流量路由策略。
-通过对源 `Node` 和目的 `Node` 标签的匹配,运营者可以使用任何符合运营者要求的度量值
-来指定彼此“较近”和“较远”的节点组。
-例如,对于在公有云上的运营者来说,更偏向于把流量控制在同一区域内,
-因为区域间的流量是有费用成本的,而区域内的流量没有。
-其它常用需求还包括把流量路由到由 `DaemonSet` 管理的本地 Pod 上,或者
-把保持流量在连接同一机架交换机的 `Node` 上,以获得低延时。
+
+通过对源和目的之间的标签匹配,作为集群操作者的你可以根据节点间彼此“较近”和“较远”
+来定义节点集合。你可以基于符合自身需求的任何度量值来定义标签。
+例如,在公有云上,你可能更偏向于把流量控制在同一区内,因为区间流量是有费用成本的,
+而区内流量则没有。
+其它常见需求还包括把流量路由到由 `DaemonSet` 管理的本地 Pod 上,或者
+把将流量转发到连接在同一机架交换机的节点上,以获得低延时。
-
## 约束条件 {#constraints}
* 服务拓扑和 `externalTrafficPolicy=Local` 是不兼容的,所以 `Service` 不能同时使用这两种特性。
- 但是在同一个集群的不同 `Service` 上是可以分别使用这两种特性的,只要不在同一个 `Service` 上就可以。
+ 但是在同一个集群的不同 `Service` 上是可以分别使用这两种特性的,只要不在同一个
+ `Service` 上就可以。
* 有效的拓扑键目前只有:`kubernetes.io/hostname`、`topology.kubernetes.io/zone` 和
`topology.kubernetes.io/region`,但是未来会推广到其它的 `Node` 标签。
@@ -171,23 +180,21 @@ traffic as follows.
## 示例
-
以下是使用服务拓扑功能的常见示例。
### 仅节点本地端点
-
-仅路由到节点本地端点的一种服务。 如果节点上不存在端点,流量则被丢弃:
+仅路由到节点本地端点的一种服务。如果节点上不存在端点,流量则被丢弃:
```yaml
apiVersion: v1
@@ -207,12 +214,11 @@ spec:
### 首选节点本地端点
-
首选节点本地端点,如果节点本地端点不存在,则回退到集群范围端点的一种服务:
```yaml
@@ -234,13 +240,13 @@ spec:
-### 仅地域或区域端点
-
-首选地域端点而不是区域端点的一种服务。 如果以上两种范围内均不存在端点,流量则被丢弃。
+### 仅地域或区域端点
+首选地域端点而不是区域端点的一种服务。 如果以上两种范围内均不存在端点,
+流量则被丢弃。
```yaml
apiVersion: v1
@@ -261,13 +267,13 @@ spec:
-### 优先选择节点本地端点,地域端点,然后是区域端点
-
-优先选择节点本地端点,地域端点,然后是区域端点,然后才是集群范围端点的一种服务。
+### 优先选择节点本地端点、地域端点,然后是区域端点
+
+优先选择节点本地端点,地域端点,然后是区域端点,最后才是集群范围端点的
+一种服务。
```yaml
apiVersion: v1
@@ -296,3 +302,4 @@ spec:
-->
* 阅读关于[启用服务拓扑](/zh/docs/tasks/administer-cluster/enabling-service-topology/)
* 阅读[用服务连接应用程序](/zh/docs/concepts/services-networking/connect-applications-service/)
+
diff --git a/content/zh/docs/concepts/services-networking/service.md b/content/zh/docs/concepts/services-networking/service.md
index 3497dd817d..78b16d6e13 100644
--- a/content/zh/docs/concepts/services-networking/service.md
+++ b/content/zh/docs/concepts/services-networking/service.md
@@ -312,12 +312,26 @@ selectors and uses DNS names instead. For more information, see the
ExternalName Service 是 Service 的特例,它没有选择算符,但是使用 DNS 名称。
有关更多信息,请参阅本文档后面的[ExternalName](#externalname)。
+
+### 超出容量的 Endpoints {#over-capacity-endpoints}
+
+如果某个 Endpoints 资源中包含的端点个数超过 1000,则 Kubernetes v1.21 版本
+(及更新版本)的集群会将为该 Endpoints 添加注解
+`endpoints.kubernetes.io/over-capacity: warning`。
+这一注解表明所影响到的 Endpoints 对象已经超出容量。
+
### EndpointSlice
-{{< feature-state for_k8s_version="v1.17" state="beta" >}}
+{{< feature-state for_k8s_version="v1.21" state="stable" >}}
-### 应用程序协议 {#application-protocol}
+### 应用协议 {#application-protocol}
{{< feature-state for_k8s_version="v1.20" state="stable" >}}
+
`appProtocol` 字段提供了一种为每个 Service 端口指定应用协议的方式。
此字段的取值会被映射到对应的 Endpoints 和 EndpointSlices 对象。
@@ -1077,11 +1092,15 @@ The set of protocols that can be used for LoadBalancer type of Services is still
{{< note >}}
可用于 LoadBalancer 类型服务的协议集仍然由云提供商决定。
{{< /note >}}
+
+### 禁用负载均衡器节点端口分配 {#load-balancer-nodeport-allocation}
{{< feature-state for_k8s_version="v1.20" state="alpha" >}}
+
-### 禁用负载均衡器节点端口分配 {#load-balancer-nodeport-allocation}
-
-{{< feature-state for_k8s_version="v1.20" state="alpha" >}}
-
从 v1.20 版本开始, 你可以通过设置 `spec.allocateLoadBalancerNodePorts` 为 `false`
对类型为 LoadBalancer 的服务禁用节点端口分配。
这仅适用于直接将流量路由到 Pod 而不是使用节点端口的负载均衡器实现。
默认情况下,`spec.allocateLoadBalancerNodePorts` 为 `true`,
LoadBalancer 类型的服务继续分配节点端口。
-如果现有服务已被分配节点端口,将参数 `spec.allocateLoadBalancerNodePorts` 设置为 `false` 时,
-这些服务上已分配置的节点端口不会被自动释放。
+如果现有服务已被分配节点端口,将参数 `spec.allocateLoadBalancerNodePorts`
+设置为 `false` 时,这些服务上已分配置的节点端口不会被自动释放。
你必须显式地在每个服务端口中删除 `nodePorts` 项以释放对应端口。
你必须启用 `ServiceLBNodePortControl` 特性门控才能使用该字段。
+
+
+#### 设置负载均衡器实现的类别 {#load-balancer-class}
+
+{{< feature-state for_k8s_version="v1.21" state="alpha" >}}
+
+
+从 v1.21 开始,你可以有选择地为 `LoadBalancer` 类型的服务设置字段
+`.spec.loadBalancerClass`,以指定其负载均衡器实现的类别。
+默认情况下,`.spec.loadBalancerClass` 的取值是 `nil`,`LoadBalancer` 类型
+服务会使用云提供商的默认负载均衡器实现。
+如果设置了 `.spec.loadBalancerClass`,则假定存在某个与所指定的类相匹配的
+负载均衡器实现在监视服务变化。
+所有默认的负载均衡器实现(例如,由云提供商所提供的)都会忽略设置了此字段
+的服务。`.spec.loadBalancerClass` 只能设置到类型为 `LoadBalancer` 的 Service
+之上,而且一旦设置之后不可变更。
+
+
+`.spec.loadBalancerClass` 的值必须是一个标签风格的标识符,
+可以有选择地带有类似 "`internal-vip`" 或 "`example.com/internal-vip`" 这类
+前缀。没有前缀的名字是保留给最终用户的。
+你必须启用 `ServiceLoadBalancerClass` 特性门控才能使用此字段。
+
-本教程介绍如何了使用 [StatefulSets](/zh/docs/concepts/abstractions/controllers/statefulsets/) 来管理应用。演示了如何创建、删除、扩容/缩容和更新 StatefulSets 的 Pods。
+本教程介绍如何了使用 [StatefulSets](/zh/docs/concepts/abstractions/controllers/statefulsets/) 来管理应用。
+演示了如何创建、删除、扩容/缩容和更新 StatefulSets 的 Pods。
@@ -71,7 +72,8 @@ After this tutorial, you will be familiar with the following.
* How to update a StatefulSet's Pods
-->
-StatefulSets 旨在与有状态的应用及分布式系统一起使用。然而在 Kubernetes 上管理有状态应用和分布式系统是一个宽泛而复杂的话题。为了演示 StatefulSet 的基本特性,并且不使前后的主题混淆,你将会使用 StatefulSet 部署一个简单的 web 应用。
+StatefulSets 旨在与有状态的应用及分布式系统一起使用。然而在 Kubernetes 上管理有状态应用和分布式系统是一个宽泛而复杂的话题。
+为了演示 StatefulSet 的基本特性,并且不使前后的主题混淆,你将会使用 StatefulSet 部署一个简单的 web 应用。
在阅读本教程后,你将熟悉以下内容:
@@ -89,7 +91,8 @@ StatefulSets 旨在与有状态的应用及分布式系统一起使用。然而
## 创建 StatefulSet
-作为开始,使用如下示例创建一个 StatefulSet。它和 [StatefulSets](/zh/docs/concepts/abstractions/controllers/statefulsets/) 概念中的示例相似。它创建了一个 [Headless Service](/zh/docs/user-guide/services/#headless-services) `nginx` 用来发布 StatefulSet `web` 中的 Pod 的 IP 地址。
+作为开始,使用如下示例创建一个 StatefulSet。它和 [StatefulSets](/zh/docs/concepts/abstractions/controllers/statefulsets/) 概念中的示例相似。
+它创建了一个 [Headless Service](/zh/docs/user-guide/services/#headless-services) `nginx` 用来发布 StatefulSet `web` 中的 Pod 的 IP 地址。
{{< codenew file="application/web/web.yaml" >}}
@@ -104,7 +107,8 @@ of the StatefulSet's Pods.
下载上面的例子并保存为文件 `web.yaml`。
-你需要使用两个终端窗口。在第一个终端中,使用 [`kubectl get`](/zh/docs/user-guide/kubectl/{{< param "version" >}}/#get) 来查看 StatefulSet 的 Pods 的创建情况。
+你需要使用两个终端窗口。
+在第一个终端中,使用 [`kubectl get`](/zh/docs/user-guide/kubectl/{{< param "version" >}}/#get) 来查看 StatefulSet 的 Pods 的创建情况。
```shell
kubectl get pods -w -l app=nginx
@@ -130,7 +134,8 @@ The command above creates two Pods, each running an
`web` StatefulSet to verify that they were created successfully.
-->
-上面的命令创建了两个 Pod,每个都运行了一个 [NGINX](https://www.nginx.com) web 服务器。获取 `nginx` Service 和 `web` StatefulSet 来验证是否成功的创建了它们。
+上面的命令创建了两个 Pod,每个都运行了一个 [NGINX](https://www.nginx.com) web 服务器。
+获取 `nginx` Service 和 `web` StatefulSet 来验证是否成功的创建了它们。
```shell
kubectl get service nginx
@@ -155,7 +160,8 @@ look like the example below.
### 顺序创建 Pod
-对于一个拥有 N 个副本的 StatefulSet,Pod 被部署时是按照 {0 …… N-1} 的序号顺序创建的。在第一个终端中使用 `kubectl get` 检查输出。这个输出最终将看起来像下面的样子。
+对于一个拥有 N 个副本的 StatefulSet,Pod 被部署时是按照 {0 …… N-1} 的序号顺序创建的。
+在第一个终端中使用 `kubectl get` 检查输出。这个输出最终将看起来像下面的样子。
```shell
kubectl get pods -w -l app=nginx
@@ -221,7 +227,9 @@ Each Pod has a stable hostname based on its ordinal index. Use
`hostname` command in each Pod.
-->
-如同 [StatefulSets](/zh/docs/concepts/abstractions/controllers/statefulsets/) 概念中所提到的,StatefulSet 中的 Pod 拥有一个具有黏性的、独一无二的身份标志。这个标志基于 StatefulSet 控制器分配给每个 Pod 的唯一顺序索引。Pod 的名称的形式为`-`。`web`StatefulSet 拥有两个副本,所以它创建了两个 Pod:`web-0`和`web-1`。
+如同 [StatefulSets](/zh/docs/concepts/abstractions/controllers/statefulsets/) 概念中所提到的, StatefulSet 中的 Pod 拥有一个具有黏性的、独一无二的身份标志。
+这个标志基于 StatefulSet 控制器分配给每个 Pod 的唯一顺序索引。Pod 的名称的形式为`-`。
+`web`StatefulSet 拥有两个副本,所以它创建了两个 Pod:`web-0`和`web-1`。
### 使用稳定的网络身份标识
@@ -240,7 +248,8 @@ Using `nslookup` on the Pods' hostnames, you can examine their in-cluster DNS
addresses.
-->
-使用 [`kubectl run`](/zh/docs/reference/generated/kubectl/kubectl-commands/#run) 运行一个提供 `nslookup` 命令的容器,该命令来自于 `dnsutils` 包。通过对 Pod 的主机名执行 `nslookup`,你可以检查他们在集群内部的 DNS 地址。
+使用 [`kubectl run`](/zh/docs/reference/generated/kubectl/kubectl-commands/#run) 运行一个提供 `nslookup` 命令的容器,该命令来自于 `dnsutils` 包。
+通过对 Pod 的主机名执行 `nslookup`,你可以检查他们在集群内部的 DNS 地址。
```shell
kubectl run -i --tty --image busybox:1.28 dns-test --restart=Never --rm
@@ -267,7 +276,8 @@ contain the Pods' IP addresses.
In one terminal, watch the StatefulSet's Pods.
-->
-headless service 的 CNAME 指向 SRV 记录(记录每个 Running 和 Ready 状态的 Pod)。SRV 记录指向一个包含 Pod IP 地址的记录表项。
+headless service 的 CNAME 指向 SRV 记录(记录每个 Running 和 Ready 状态的 Pod)。
+SRV 记录指向一个包含 Pod IP 地址的记录表项。
在一个终端中查看 StatefulSet 的 Pod。
@@ -355,10 +365,12 @@ application will be able to discover the Pods' addresses when they transition
to Running and Ready.
-->
-Pod 的序号、主机名、SRV 条目和记录名称没有改变,但和 Pod 相关联的 IP 地址可能发生了改变。在本教程中使用的集群中它们就改变了。这就是为什么不要在其他应用中使用 StatefulSet 中的 Pod 的 IP 地址进行连接,这点很重要。
+Pod 的序号、主机名、SRV 条目和记录名称没有改变,但和 Pod 相关联的 IP 地址可能发生了改变。
+在本教程中使用的集群中它们就改变了。这就是为什么不要在其他应用中使用 StatefulSet 中的 Pod 的 IP 地址进行连接,这点很重要。
-如果你需要查找并连接一个 StatefulSet 的活动成员,你应该查询 Headless Service 的 CNAME。和 CNAME 相关联的 SRV 记录只会包含 StatefulSet 中处于 Running 和 Ready 状态的 Pod。
+如果你需要查找并连接一个 StatefulSet 的活动成员,你应该查询 Headless Service 的 CNAME。
+和 CNAME 相关联的 SRV 记录只会包含 StatefulSet 中处于 Running 和 Ready 状态的 Pod。
如果你的应用已经实现了用于测试 liveness 和 readiness 的连接逻辑,你可以使用 Pod 的 SRV 记录(`web-0.nginx.default.svc.cluster.local`,
@@ -399,7 +411,8 @@ webservers serve the hostnames.
StatefulSet 控制器创建了两个 PersistentVolumeClaims,绑定到两个 [PersistentVolumes](/zh/docs/concepts/storage/volumes/)。由于本教程使用的集群配置为动态提供 PersistentVolume,所有的 PersistentVolume 都是自动创建和绑定的。
-NGINX web 服务器默认会加载位于 `/usr/share/nginx/html/index.html` 的 index 文件。StatefulSets `spec` 中的 `volumeMounts` 字段保证了 `/usr/share/nginx/html` 文件夹由一个 PersistentVolume 支持。
+NGINX web 服务器默认会加载位于 `/usr/share/nginx/html/index.html` 的 index 文件。
+StatefulSets `spec` 中的 `volumeMounts` 字段保证了 `/usr/share/nginx/html` 文件夹由一个 PersistentVolume 支持。
将 Pod 的主机名写入它们的`index.html`文件并验证 NGINX web 服务器使用该主机名提供服务。
@@ -419,7 +432,8 @@ you will need to fix the permissions of the directory mounted by the `volumeMoun
(due to a [bug when using hostPath volumes](https://github.com/kubernetes/kubernetes/issues/2630)) with:
-->
-请注意,如果你看见上面的 curl 命令返回了 403 Forbidden 的响应,你需要像这样修复使用 `volumeMounts`(due to a [bug when using hostPath volumes](https://github.com/kubernetes/kubernetes/issues/2630))挂载的目录的权限:
+请注意,如果你看见上面的 curl 命令返回了 403 Forbidden 的响应,
+你需要像这样修复使用 `volumeMounts`(due to a [bug when using hostPath volumes](https://github.com/kubernetes/kubernetes/issues/2630))挂载的目录的权限:
```shell
for i in 0 1; do kubectl exec web-$i -- chmod 755 /usr/share/nginx/html; done
@@ -501,12 +515,15 @@ This is accomplished by updating the `replicas` field. You can use either
In one terminal window, watch the Pods in the StatefulSet.
-->
-虽然 `web-0` 和 `web-1` 被重新调度了,但它们仍然继续监听各自的主机名,因为和它们的 PersistentVolumeClaim 相关联的 PersistentVolume 被重新挂载到了各自的 `volumeMount` 上。不管 `web-0` 和 `web-1` 被调度到了哪个节点上,它们的 PersistentVolumes 将会被挂载到合适的挂载点上。
+虽然 `web-0` 和 `web-1` 被重新调度了,但它们仍然继续监听各自的主机名,因为和它们的 PersistentVolumeClaim 相关联的 PersistentVolume 被重新挂载到了各自的 `volumeMount` 上。
+不管 `web-0` 和 `web-1` 被调度到了哪个节点上,它们的 PersistentVolumes 将会被挂载到合适的挂载点上。
## 扩容/缩容 StatefulSet
-扩容/缩容 StatefulSet 指增加或减少它的副本数。这通过更新 `replicas` 字段完成。你可以使用[`kubectl scale`](/zh/docs/user-guide/kubectl/{{< param "version" >}}/#scale) 或者[`kubectl patch`](/zh/docs/user-guide/kubectl/{{< param "version" >}}/#patch)来扩容/缩容一个 StatefulSet。
+扩容/缩容 StatefulSet 指增加或减少它的副本数。这通过更新 `replicas` 字段完成。
+你可以使用[`kubectl scale`](/zh/docs/user-guide/kubectl/{{< param "version" >}}/#scale)
+或者[`kubectl patch`](/zh/docs/user-guide/kubectl/{{< param "version" >}}/#patch)来扩容/缩容一个 StatefulSet。
### 扩容
@@ -567,7 +584,8 @@ subsequent Pod.
In one terminal, watch the StatefulSet's Pods.
-->
-StatefulSet 控制器扩展了副本的数量。如同[创建 StatefulSet](#顺序创建pod) 所述,StatefulSet 按序号索引顺序的创建每个 Pod,并且会等待前一个 Pod 变为 Running 和 Ready 才会启动下一个 Pod。
+StatefulSet 控制器扩展了副本的数量。
+如同[创建 StatefulSet](#顺序创建pod) 所述,StatefulSet 按序号索引顺序的创建每个 Pod,并且会等待前一个 Pod 变为 Running 和 Ready 才会启动下一个 Pod。
### 缩容
@@ -658,13 +676,17 @@ StatefulSet. There are two valid update strategies, `RollingUpdate` and
`RollingUpdate` update strategy is the default for StatefulSets.
-->
-五个 PersistentVolumeClaims 和五个 PersistentVolumes 仍然存在。查看 Pod 的 [稳定存储](#stable-storage),我们发现当删除 StatefulSet 的 Pod 时,挂载到 StatefulSet 的 Pod 的 PersistentVolumes 不会被删除。当这种删除行为是由 StatefulSet 缩容引起时也是一样的。
+五个 PersistentVolumeClaims 和五个 PersistentVolumes 仍然存在。
+查看 Pod 的 [稳定存储](#stable-storage),我们发现当删除 StatefulSet 的 Pod 时,挂载到 StatefulSet 的 Pod 的 PersistentVolumes 不会被删除。
+当这种删除行为是由 StatefulSet 缩容引起时也是一样的。
## 更新 StatefulSet
-Kubernetes 1.7 版本的 StatefulSet 控制器支持自动更新。更新策略由 StatefulSet API Object 的`spec.updateStrategy` 字段决定。这个特性能够用来更新一个 StatefulSet 中的 Pod 的 container images,resource requests,以及 limits,labels 和 annotations。`RollingUpdate`滚动更新是 StatefulSets 默认策略。
+Kubernetes 1.7 版本的 StatefulSet 控制器支持自动更新。
+更新策略由 StatefulSet API Object 的`spec.updateStrategy` 字段决定。这个特性能够用来更新一个 StatefulSet 中的 Pod 的 container images,resource requests,以及 limits,labels 和 annotations。
+`RollingUpdate`滚动更新是 StatefulSets 默认策略。
-StatefulSet 里的 Pod 采用和序号相反的顺序更新。在更新下一个 Pod 前,StatefulSet 控制器终止每个 Pod 并等待它们变成 Running 和 Ready。请注意,虽然在顺序后继者变成 Running 和 Ready 之前 StatefulSet 控制器不会更新下一个 Pod,但它仍然会重建任何在更新过程中发生故障的 Pod,使用的是它们当前的版本。已经接收到更新请求的 Pod 将会被恢复为更新的版本,没有收到请求的 Pod 则会被恢复为之前的版本。像这样,控制器尝试继续使应用保持健康并在出现间歇性故障时保持更新的一致性。
+StatefulSet 里的 Pod 采用和序号相反的顺序更新。在更新下一个 Pod 前,StatefulSet 控制器终止每个 Pod 并等待它们变成 Running 和 Ready。
+请注意,虽然在顺序后继者变成 Running 和 Ready 之前 StatefulSet 控制器不会更新下一个 Pod,但它仍然会重建任何在更新过程中发生故障的 Pod,使用的是它们当前的版本。
+已经接收到更新请求的 Pod 将会被恢复为更新的版本,没有收到请求的 Pod 则会被恢复为之前的版本。
+像这样,控制器尝试继续使应用保持健康并在出现间歇性故障时保持更新的一致性。
获取 Pod 来查看他们的容器镜像。
@@ -791,7 +816,8 @@ StatefulSet 中的所有 Pod 现在都在运行之前的容器镜像。
#### 分段更新
-你可以使用 `RollingUpdate` 更新策略的 `partition` 参数来分段更新一个 StatefulSet。分段的更新将会使 StatefulSet 中的其余所有 Pod 保持当前版本的同时仅允许改变 StatefulSet 的 `.spec.template`。
+你可以使用 `RollingUpdate` 更新策略的 `partition` 参数来分段更新一个 StatefulSet。
+分段的更新将会使 StatefulSet 中的其余所有 Pod 保持当前版本的同时仅允许改变 StatefulSet 的 `.spec.template`。
Patch `web` StatefulSet 来对 `updateStrategy` 字段添加一个分区。
@@ -864,7 +890,8 @@ you specified [above](#staging-an-update).
Patch the StatefulSet to decrement the partition.
-->
-请注意,虽然更新策略是 `RollingUpdate`,StatefulSet 控制器还是会使用原始的容器恢复 Pod。这是因为 Pod 的序号比 `updateStrategy` 指定的 `partition` 更小。
+请注意,虽然更新策略是 `RollingUpdate`,StatefulSet 控制器还是会使用原始的容器恢复 Pod。
+这是因为 Pod 的序号比 `updateStrategy` 指定的 `partition` 更小。
#### 灰度发布
@@ -974,12 +1001,14 @@ update.
The partition is currently set to `2`. Set the partition to `0`.
-->
-`web-1` 被按照原来的配置恢复,因为 Pod 的序号小于分区。当指定了分区时,如果更新了 StatefulSet 的 `.spec.template`,则所有序号大于或等于分区的 Pod 都将被更新。如果一个序号小于分区的 Pod 被删除或者终止,它将被按照原来的配置恢复。
+`web-1` 被按照原来的配置恢复,因为 Pod 的序号小于分区。当指定了分区时,如果更新了 StatefulSet 的 `.spec.template`,则所有序号大于或等于分区的 Pod 都将被更新。
+如果一个序号小于分区的 Pod 被删除或者终止,它将被按照原来的配置恢复。
#### 分阶段的发布
-你可以使用类似[灰度发布](#灰度发布)的方法执行一次分阶段的发布(例如一次线性的、等比的或者指数形式的发布)。要执行一次分阶段的发布,你需要设置 `partition` 为希望控制器暂停更新的序号。
+你可以使用类似[灰度发布](#灰度发布)的方法执行一次分阶段的发布(例如一次线性的、等比的或者指数形式的发布)。
+要执行一次分阶段的发布,你需要设置 `partition` 为希望控制器暂停更新的序号。
分区当前为`2`。请将分区设置为`0`。
@@ -1055,7 +1084,8 @@ In one terminal window, watch the Pods in the StatefulSet.
### On Delete 策略
-`OnDelete` 更新策略实现了传统(1.7 之前)行为,它也是默认的更新策略。当你选择这个更新策略并修改 StatefulSet 的 `.spec.template` 字段时,StatefulSet 控制器将不会自动的更新 Pod。
+`OnDelete` 更新策略实现了传统(1.7 之前)行为,它也是默认的更新策略。
+当你选择这个更新策略并修改 StatefulSet 的 `.spec.template` 字段时,StatefulSet 控制器将不会自动的更新 Pod。
## 删除 StatefulSet
@@ -1079,7 +1109,8 @@ command. This parameter tells Kubernetes to only delete the StatefulSet, and to
not delete any of its Pods.
-->
-使用 [`kubectl delete`](/zh/docs/reference/generated/kubectl/kubectl-commands/#delete) 删除 StatefulSet。请确保提供了 `--cascade=false` 参数给命令。这个参数告诉 Kubernetes 只删除 StatefulSet 而不要删除它的任何 Pod。
+使用 [`kubectl delete`](/zh/docs/reference/generated/kubectl/kubectl-commands/#delete) 删除 StatefulSet。
+请确保提供了 `--cascade=false` 参数给命令。这个参数告诉 Kubernetes 只删除 StatefulSet 而不要删除它的任何 Pod。
```shell
kubectl delete statefulset web --cascade=false
@@ -1194,7 +1225,9 @@ Let's take another look at the contents of the `index.html` file served by the
Pods' webservers.
-->
-当重新创建 `web` StatefulSet 时,`web-0`被第一个重新启动。由于 `web-1` 已经处于 Running 和 Ready 状态,当 `web-0` 变成 Running 和 Ready 时,StatefulSet 会直接接收这个 Pod。由于你重新创建的 StatefulSet 的 `replicas` 等于 2,一旦 `web-0` 被重新创建并且 `web-1` 被认为已经处于 Running 和 Ready 状态时,`web-2`将会被终止。
+当重新创建 `web` StatefulSet 时,`web-0`被第一个重新启动。
+由于 `web-1` 已经处于 Running 和 Ready 状态,当 `web-0` 变成 Running 和 Ready 时,StatefulSet 会直接接收这个 Pod。
+由于你重新创建的 StatefulSet 的 `replicas` 等于 2,一旦 `web-0` 被重新创建并且 `web-1` 被认为已经处于 Running 和 Ready 状态时,`web-2`将会被终止。
让我们再看看被 Pod 的 web 服务器加载的 `index.html` 的内容。
@@ -1217,7 +1250,9 @@ PersistentVolume was remounted.
In one terminal window, watch the Pods in the StatefulSet.
-->
-尽管你同时删除了 StatefulSet 和 `web-0` Pod,但它仍然使用最初写入 `index.html` 文件的主机名进行服务。这是因为 StatefulSet 永远不会删除和一个 Pod 相关联的 PersistentVolumes。当你重建这个 StatefulSet 并且重新启动了 `web-0` 时,它原本的 PersistentVolume 会被重新挂载。
+尽管你同时删除了 StatefulSet 和 `web-0` Pod,但它仍然使用最初写入 `index.html` 文件的主机名进行服务。
+这是因为 StatefulSet 永远不会删除和一个 Pod 相关联的 PersistentVolumes。
+当你重建这个 StatefulSet 并且重新启动了 `web-0` 时,它原本的 PersistentVolume 会被重新挂载。
### 级联删除
@@ -1272,7 +1307,8 @@ it will not delete the Headless Service associated with the StatefulSet. You
must delete the `nginx` Service manually.
-->
-如同你在[缩容](#ordered-pod-termination)一节看到的,Pod 按照和他们序号索引相反的顺序每次终止一个。在终止一个 Pod 前,StatefulSet 控制器会等待 Pod 后继者被完全终止。
+如同你在[缩容](#ordered-pod-termination)一节看到的,Pod 按照和他们序号索引相反的顺序每次终止一个。
+在终止一个 Pod 前,StatefulSet 控制器会等待 Pod 后继者被完全终止。
请注意,虽然级联删除会删除 StatefulSet 和它的 Pod,但它并不会删除和 StatefulSet 关联的 Headless Service。你必须手动删除`nginx` Service。
@@ -1360,7 +1396,8 @@ Pod.
## Pod 管理策略
-对于某些分布式系统来说,StatefulSet 的顺序性保证是不必要和/或者不应该的。这些系统仅仅要求唯一性和身份标志。为了解决这个问题,在 Kubernetes 1.7 中我们针对 StatefulSet API Object 引入了 `.spec.podManagementPolicy`。
+对于某些分布式系统来说,StatefulSet 的顺序性保证是不必要和/或者不应该的。这些系统仅仅要求唯一性和身份标志。
+为了解决这个问题,在 Kubernetes 1.7 中我们针对 StatefulSet API Object 引入了 `.spec.podManagementPolicy`。
### OrderedReady Pod 管理策略
From 7703a4a738d12e8d9a0319b6e46ffb24f65abc3c Mon Sep 17 00:00:00 2001
From: Qiming Teng
Date: Wed, 28 Apr 2021 17:42:43 +0800
Subject: [PATCH 032/129] [zh] Resync concepts section (11)
---
.../docs/concepts/extend-kubernetes/_index.md | 29 +++++--
.../api-extension/apiserver-aggregation.md | 7 +-
.../api-extension/custom-resources.md | 8 +-
.../compute-storage-net/device-plugins.md | 85 +++++++++++++++++--
.../compute-storage-net/network-plugins.md | 2 +-
5 files changed, 108 insertions(+), 23 deletions(-)
diff --git a/content/zh/docs/concepts/extend-kubernetes/_index.md b/content/zh/docs/concepts/extend-kubernetes/_index.md
index 2d48a28e24..22d9c7dac2 100644
--- a/content/zh/docs/concepts/extend-kubernetes/_index.md
+++ b/content/zh/docs/concepts/extend-kubernetes/_index.md
@@ -2,6 +2,10 @@
title: 扩展 Kubernetes
weight: 110
description: 改变你的 Kubernetes 集群的行为的若干方法。
+feature:
+ title: 为扩展性设计
+ description: >
+ 无需更改上游源码即可扩展你的 Kubernetes 集群。
content_type: concept
no_list: true
---
@@ -14,6 +18,10 @@ reviewers:
- lavalamp
- cheftako
- chenopis
+feature:
+ title: Designed for extensibility
+ description: >
+ Add features to your Kubernetes cluster without changing upstream source code.
content_type: concept
no_list: true
-->
@@ -176,9 +184,11 @@ Kubernetes control plane.
下面的示意图中展示了这些扩展点如何与 Kubernetes 控制面交互。
-
-
+
+
+
+
+
+
### 鉴权 {#authorization}
diff --git a/content/zh/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation.md b/content/zh/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation.md
index e08fa7690d..f11620acf2 100644
--- a/content/zh/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation.md
+++ b/content/zh/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation.md
@@ -64,9 +64,7 @@ apiserver-builder 库同时提供构造扩展 API 服务器和控制器框架代
Extension API servers should have low latency networking to and from the kube-apiserver.
Discovery requests are required to round-trip from the kube-apiserver in five seconds or less.
-If your extension API server cannot achieve that latency requirement, consider making changes that let you meet it. You can also set the
-`EnableAggregatedDiscoveryTimeout=false` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) on the kube-apiserver
-to disable the timeout restriction. This deprecated feature gate will be removed in a future release.
+If your extension API server cannot achieve that latency requirement, consider making changes that let you meet it.
-->
### 反应延迟 {#response-latency}
@@ -74,9 +72,6 @@ to disable the timeout restriction. This deprecated feature gate will be removed
发现请求需要在五秒钟或更短的时间内完成到 kube-apiserver 的往返。
如果你的扩展 API 服务器无法满足这一延迟要求,应考虑如何更改配置已满足需要。
-你也可以为 kube-apiserver 设置 `EnableAggregatedDiscoveryTimeout=false`
-[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)
-来禁用超时限制。此特性门控已经废弃,将在未来版本中被删除。
## {{% heading "whatsnext" %}}
diff --git a/content/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources.md b/content/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources.md
index a893ef8765..5094d8910b 100644
--- a/content/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources.md
+++ b/content/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources.md
@@ -67,7 +67,7 @@ Kubernetes 安装中就可用。定制资源所代表的是对特定 Kubernetes
@@ -93,13 +93,13 @@ desired state, and continually maintains this state.
You can deploy and update a custom controller on a running cluster, independently
of the cluster's lifecycle. Custom controllers can work with any kind of resource,
but they are especially effective when combined with custom resources. The
-[Operator pattern](https://coreos.com/blog/introducing-operators.html) combines custom
+[Operator pattern](/docs/concepts/extend-kubernetes/operator/) combines custom
resources and custom controllers. You can use custom controllers to encode domain knowledge
for specific applications into an extension of the Kubernetes API.
-->
你可以在一个运行中的集群上部署和更新定制控制器,这类操作与集群的生命周期无关。
定制控制器可以用于任何类别的资源,不过它们与定制资源结合起来时最为有效。
-[Operator 模式](https://coreos.com/blog/introducing-operators.html)就是将定制资源
+[Operator 模式](/zh/docs/concepts/extend-kubernetes/operator/)就是将定制资源
与定制控制器相结合的。你可以使用定制控制器来将特定于某应用的领域知识组织
起来,以编码的形式构造对 Kubernetes API 的扩展。
@@ -257,7 +257,7 @@ Kubernetes 提供了两种方式供你向集群中添加定制资源:
+这一 `List` 端点提供运行中 Pods 的资源信息,包括类似独占式分配的
+CPU ID、设备插件所报告的设备 ID 以及这些设备分配所处的 NUMA 节点 ID。
+
+```gRPC
+// ListPodResourcesResponse 是 List 函数的响应
+message ListPodResourcesResponse {
+ repeated PodResources pod_resources = 1;
+}
+
+// PodResources 包含关于分配给 Pod 的节点资源的信息
+message PodResources {
+ string name = 1;
+ string namespace = 2;
+ repeated ContainerResources containers = 3;
+}
+
+// ContainerResources 包含分配给容器的资源的信息
+message ContainerResources {
+ string name = 1;
+ repeated ContainerDevices devices = 2;
+ repeated int64 cpu_ids = 3;
+}
+
+// Topology 描述资源的硬件拓扑结构
+message TopologyInfo {
+ repeated NUMANode nodes = 1;
+}
+
+// NUMA 代表的是 NUMA 节点
+message NUMANode {
+ int64 ID = 1;
+}
+
+// ContainerDevices 包含分配给容器的设备信息
+message ContainerDevices {
+ string resource_name = 1;
+ repeated string device_ids = 2;
+ TopologyInfo topology = 3;
+}
+```
+
+
+端点 `GetAllocatableResources` 提供最初在工作节点上可用的资源的信息。
+此端点所提供的信息比导出给 API 服务器的信息更丰富。
+
+
+```gRPC
+// AllocatableResourcesResponses 包含 kubelet 所了解到的所有设备的信息
+message AllocatableResourcesResponse {
+ repeated ContainerDevices devices = 1;
+ repeated int64 cpu_ids = 2;
+}
+
+```
+
+
+`ContainerDevices` 会向外提供各个设备所隶属的 NUMA 单元这类拓扑信息。
+NUMA 单元通过一个整数 ID 来标识,其取值与设备插件所报告的一致。
+[设备插件注册到 kubelet 时](/zh/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/)
+会报告这类信息。
+
gRPC 服务通过 `/var/lib/kubelet/pod-resources/kubelet.sock` 的 UNIX 套接字来提供服务。
@@ -350,9 +425,9 @@ gRPC 服务通过 `/var/lib/kubelet/pod-resources/kubelet.sock` 的 UNIX 套接
中声明将 `/var/lib/kubelet/pod-resources` 目录以
{{< glossary_tooltip text="卷" term_id="volume" >}}的形式被挂载到设备监控代理中。
-对“PodResources 服务”的支持要求启用 `KubeletPodResources`
+对“PodResourcesLister 服务”的支持要求启用 `KubeletPodResources`
[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)。
-从 Kubernetes 1.15 开始默认启用,自从 Kubernetes 1.20开始为 v1。
+从 Kubernetes 1.15 开始默认启用,自从 Kubernetes 1.20 开始为 v1。
## 安装
From af860986bd703cba3044e5f258354c71b8892bc2 Mon Sep 17 00:00:00 2001
From: TAKAHASHI Shuuji
Date: Fri, 23 Apr 2021 12:45:20 +0000
Subject: [PATCH 033/129] Add the search box and the toggle section navigation
(for mobile)
---
assets/scss/_custom.scss | 6 +-----
layouts/partials/blog-sidebar.html | 7 +++++++
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/assets/scss/_custom.scss b/assets/scss/_custom.scss
index 29a8e1ecf8..e7f0902346 100644
--- a/assets/scss/_custom.scss
+++ b/assets/scss/_custom.scss
@@ -444,7 +444,7 @@ body.cid-community > #deprecation-warning > .deprecation-warning > * {
.td-sidebar__inner {
form.td-sidebar__search {
- button.td-sidebar__toggle {
+ .td-sidebar__toggle {
&:hover {
color: #000000;
}
@@ -482,10 +482,6 @@ main.content {
.td-blog {
- .td-sidebar-nav {
- max-height: calc(100vh - 8rem);
- }
-
.widget-link {
margin-bottom: 1rem;
diff --git a/layouts/partials/blog-sidebar.html b/layouts/partials/blog-sidebar.html
index f1d7b1aac0..bbdbd82330 100644
--- a/layouts/partials/blog-sidebar.html
+++ b/layouts/partials/blog-sidebar.html
@@ -5,6 +5,13 @@ sidebar-tree in use elsewhere on the site. */}}
{{ $shouldDelayActive := ge (len .Site.Pages) 2000 }}