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/), +提供类似的功能。 +{{}} -## 介绍 {#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 控制面交互。 - - + +![扩展点与控制面](/docs/concepts/extend-kubernetes/control-plane.png) + +![扩展点](/docs/concepts/extend-kubernetes/extension-points.png) + +![扩展流程图](/docs/concepts/extend-kubernetes/flowchart.png) ### 鉴权 {#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 }}
+ + +


diff --git a/content/en/docs/setup/release/_index.md b/content/en/docs/setup/release/_index.md deleted file mode 100755 index e6d5944331..0000000000 --- a/content/en/docs/setup/release/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Release notes and version skew" -weight: 10 ---- diff --git a/content/en/docs/setup/release/notes.md b/content/en/docs/setup/release/notes.md deleted file mode 100644 index 2741de7e50..0000000000 --- a/content/en/docs/setup/release/notes.md +++ /dev/null @@ -1,1626 +0,0 @@ ---- -title: v1.21 Release Notes -weight: 10 -card: - name: release-notes - weight: 20 - anchors: - - anchor: "#" - title: Current Release Notes - - anchor: "#urgent-upgrade-notes" - title: Urgent Upgrade Notes ---- - - - -# v1.21.0 - -[Documentation](https://docs.k8s.io) - -## Downloads for v1.21.0 - -### Source Code - -filename | sha512 hash --------- | ----------- -[kubernetes.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes.tar.gz) | `19bb76a3fa5ce4b9f043b2a3a77c32365ab1fcb902d8dd6678427fb8be8f49f64a5a03dc46aaef9c7dadee05501cf83412eda46f0edacbb8fc1ed0bf5fb79142` -[kubernetes-src.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-src.tar.gz) | `f942e6d6c10007a6e9ce21e94df597015ae646a7bc3e515caf1a3b79f1354efb9aff59c40f2553a8e3d43fe4a01742241f5af18b69666244906ed11a22e3bc49` - -### Client Binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-darwin-amd64.tar.gz) | `be9d1440e418e5253fb8a3d8aba705ca8160746a9bd17325ad626a986b6da9f733af864155a651a32b7bca94b533b8d596005ddbe5248bdeea85db47a1b957ed` -[kubernetes-client-darwin-arm64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-darwin-arm64.tar.gz) | `eed0ddc81d104bb2d41ace13f737c490423d5df4ebddc7376e45c18ed66af35933c9376b912c1c3da105945b04056f6ca0870c156bee8a307cf4189ca5eb1dd1` -[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-linux-386.tar.gz) | `8a2f30c4434199762f2a96141dab4241c1cce2711bea9ea39cc63c2c5e7d31719ed7f076efac1931604e3a94578d3bbf0cfa454965708c96f3cfb91789868746` -[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-linux-amd64.tar.gz) | `cd3cfa645fa31de3716f1f63506e31b73d2aa8d37bb558bb3b3e8c151f35b3d74d44e03cbd05be67e380f9a5d015aba460222afdac6677815cd99a85c2325cf0` -[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-linux-arm.tar.gz) | `936042aa11cea0f6dfd2c30fc5dbe655420b34799bede036b1299a92d6831f589ca10290b73b9c9741560b603ae31e450ad024e273f2b4df5354bfac272691d8` -[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-linux-arm64.tar.gz) | `42beb75364d7bf4bf526804b8a35bd0ab3e124b712e9d1f45c1b914e6be0166619b30695feb24b3eecef134991dacb9ab3597e788bd9e45cf35addddf20dd7f6` -[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-linux-ppc64le.tar.gz) | `4baba2ed7046b28370eccc22e2378ae79e3ce58220d6f4f1b6791e8233bec8379e30200bb20b971456b83f2b791ea166fdfcf1ea56908bc1eea03590c0eda468` -[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-linux-s390x.tar.gz) | `37fa0c4d703aef09ce68c10ef3e7362b0313c8f251ce38eea579cd18fae4023d3d2b70e0f31577cabe6958ab9cfc30e98d25a7c64e69048b423057c3cf728339` -[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-windows-386.tar.gz) | `6900db36c1e3340edfd6dfd8d720575a904c932d39a8a7fa36401595e971a0235bd42111dbcc1cbb77e7374e47f1380a68c637997c18f96a0d9cdc9f3714c4c9` -[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-client-windows-amd64.tar.gz) | `90de67f6f79fc63bcfdf35066e3d84501cc85433265ffad36fd1a7a428a31b446249f0644a1e97495ea8b2a08e6944df6ef30363003750339edaa2aceffe937c` - -### Server Binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-server-linux-amd64.tar.gz) | `3941dcc2309ac19ec185603a79f5a086d8a198f98c04efa23f15a177e5e1f34946ea9392ba9f5d24d0d727839438f067fef1001fc6e88b27b8b01e35bbd962ca` -[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-server-linux-arm.tar.gz) | `6507abf6c2ec2b336901dc23269f6c577ec0049b8bad3c9dd6ad63f21aa10f09bfbbfa6e064c2466d250411d3e10f8672791a9e10942e38de7bfbaf7a8bcc9da` -[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-server-linux-arm64.tar.gz) | `5abe76f867ca6865344e957bf166b81766c049ec4eb183a8a5580c22a7f8474db1edf90fd901a5833e56128b6825811653a1d27f72fd34ce5b1287a8c10da05c` -[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-server-linux-ppc64le.tar.gz) | `62507b182ca25396a285d91241536860e58f54fac937e97cbdf91948c83bb41be97d33277400489bf50e85164d560205540b76e94e5d519892312bdc63df1067` -[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-server-linux-s390x.tar.gz) | `04f2a1f7d1388e4a7d7d9f597f872a3da36f26839cfed16aad6df07021c03f4dca1df06b19cfda56df09d1c2d9a13ebd0af40ca1b9b6aecfaf427ab7712d88f3` - -### Node Binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-node-linux-amd64.tar.gz) | `c1831c708109c31b3878e5a9327ea4b9e546504d0b6b00f3d43db78b5dd7d5114d32ac24a9a505f9cadbe61521f0419933348d2cd309ed8cfe3987d9ca8a7e2c` -[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-node-linux-arm.tar.gz) | `b68dd5bcfc7f9ce2781952df40c8c3a64c29701beff6ac22f042d6f31d4de220e9200b7e8272ddf608114327770acdaf3cb9a34a0a5206e784bda717ea080e0f` -[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-node-linux-arm64.tar.gz) | `7fa84fc500c28774ed25ca34b6f7b208a2bea29d6e8379f84b9f57bd024aa8fe574418cee7ee26edd55310716d43d65ae7b9cbe11e40c995fe2eac7f66bdb423` -[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-node-linux-ppc64le.tar.gz) | `a4278b3f8e458e9581e01f0c5ba8443303c987988ee136075a8f2f25515d70ca549fbd2e4d10eefca816c75c381d62d71494bd70c47034ab47f8315bbef4ae37` -[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-node-linux-s390x.tar.gz) | `8de2bc6f22f232ff534b45012986eac23893581ccb6c45bd637e40dbe808ce31d5a92375c00dc578bdbadec342b6e5b70c1b9f3d3a7bb26ccfde97d71f9bf84a` -[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes-node-windows-amd64.tar.gz) | `b82e94663d330cff7a117f99a7544f27d0bc92b36b5a283b3c23725d5b33e6f15e0ebf784627638f22f2d58c58c0c2b618ddfd226a64ae779693a0861475d355` - -## Changelog since v1.20.0 - -## What's New (Major Themes) - -### Deprecation of PodSecurityPolicy - -PSP as an admission controller resource is being deprecated. Deployed PodSecurityPolicy's will keep working until version 1.25, their target removal from the codebase. A new feature, with a working title of "PSP replacement policy", is being developed in [KEP-2579](https://features.k8s.io/2579). To learn more, read [PodSecurityPolicy Deprecation: Past, Present, and Future](https://blog.k8s.io/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/). - -### Kubernetes API Reference Documentation - -The API reference is now generated with [`gen-resourcesdocs`](https://github.com/kubernetes-sigs/reference-docs/tree/c96658d89fb21037b7d00d27e6dbbe6b32375837/gen-resourcesdocs) and it is moving to [Kubernetes API](https://docs.k8s.io/reference/kubernetes-api/) - -### Kustomize Updates in Kubectl - -[Kustomize](https://github.com/kubernetes-sigs/kustomize) version in kubectl had a jump from v2.0.3 to [v4.0.5](https://github.com/kubernetes/kubernetes/pull/98946). Kustomize is now treated as a library and future updates will be less sporadic. - -### Default Container Labels - -Pod with multiple containers can use `kubectl.kubernetes.io/default-container` label to have a container preselected for kubectl commands. More can be read in [KEP-2227](https://github.com/kubernetes/enhancements/blob/master/keps/sig-cli/2227-kubectl-default-container/README.md). - -### Immutable Secrets and ConfigMaps - -Immutable Secrets and ConfigMaps graduates to GA. This feature allows users to specify that the contents of a particular Secret or ConfigMap is immutable for its object lifetime. For such instances, Kubelet will not watch/poll for changes and therefore reducing apiserver load. - -### Structured Logging in Kubelet - -Kubelet has adopted structured logging, thanks to community effort in accomplishing this within the release timeline. Structured logging in the project remains an ongoing effort -- for folks interested in participating, [keep an eye / chime in to the mailing list discussion](https://groups.google.com/g/kubernetes-dev/c/y4WIw-ntUR8). - -### Storage Capacity Tracking - -Traditionally, the Kubernetes scheduler was based on the assumptions that additional persistent storage is available everywhere in the cluster and has infinite capacity. Topology constraints addressed the first point, but up to now pod scheduling was still done without considering that the remaining storage capacity may not be enough to start a new pod. [Storage capacity tracking](https://docs.k8s.io/concepts/storage/storage-capacity/) addresses that by adding an API for a CSI driver to report storage capacity and uses that information in the Kubernetes scheduler when choosing a node for a pod. This feature serves as a stepping stone for supporting dynamic provisioning for local volumes and other volume types that are more capacity constrained. - -### Generic Ephemeral Volumes - -[Generic ephermeral volumes](https://docs.k8s.io/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes) feature allows any existing storage driver that supports dynamic provisioning to be used as an ephemeral volume with the volume’s lifecycle bound to the Pod. It can be used to provide scratch storage that is different from the root disk, for example persistent memory, or a separate local disk on that node. All StorageClass parameters for volume provisioning are supported. All features supported with PersistentVolumeClaims are supported, such as storage capacity tracking, snapshots and restore, and volume resizing. - -### CSI Service Account Token - -CSI Service Account Token feature moves to Beta in 1.21. This feature improves the security posture and allows CSI drivers to receive pods' [bound service account tokens](https://github.com/kubernetes/enhancements/blob/master/keps/sig-auth/1205-bound-service-account-tokens/README.md). This feature also provides a knob to re-publish volumes so that short-lived volumes can be refreshed. - -### CSI Health Monitoring - -The CSI health monitoring feature is being released as a second Alpha in Kubernetes 1.21. This feature enables CSI Drivers to share abnormal volume conditions from the underlying storage systems with Kubernetes so that they can be reported as events on PVCs or Pods. This feature serves as a stepping stone towards programmatic detection and resolution of individual volume health issues by Kubernetes. - -## Known Issues - -### `TopologyAwareHints` feature falls back to default behavior - -The feature gate currently falls back to the default behavior in most cases. Enabling the feature gate will add hints to `EndpointSlices`, but functional differences are only observed in non-dual stack kube-proxy implementation. [The fix will be available in coming releases](https://github.com/kubernetes/kubernetes/pull/100804). - -## Urgent Upgrade Notes - -### (No, really, you MUST read this before you upgrade) - -- Kube-proxy's IPVS proxy mode no longer sets the net.ipv4.conf.all.route_localnet sysctl parameter. Nodes upgrading will have net.ipv4.conf.all.route_localnet set to 1 but new nodes will inherit the system default (usually 0). If you relied on any behavior requiring net.ipv4.conf.all.route_localnet, you must set ensure it is enabled as kube-proxy will no longer set it automatically. This change helps to further mitigate CVE-2020-8558. ([#92938](https://github.com/kubernetes/kubernetes/pull/92938), [@lbernail](https://github.com/lbernail)) [SIG Network and Release] - - Kubeadm: during "init" an empty cgroupDriver value in the KubeletConfiguration is now always set to "systemd" unless the user is explicit about it. This requires existing machine setups to configure the container runtime to use the "systemd" driver. Documentation on this topic can be found here: https://kubernetes.io/docs/setup/production-environment/container-runtimes/. When upgrading existing clusters / nodes using "kubeadm upgrade" the old cgroupDriver value is preserved, but in 1.22 this change will also apply to "upgrade". For more information on migrating to the "systemd" driver or remaining on the "cgroupfs" driver see: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/. ([#99471](https://github.com/kubernetes/kubernetes/pull/99471), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle] - - Newly provisioned PVs by EBS plugin will no longer use the deprecated "failure-domain.beta.kubernetes.io/zone" and "failure-domain.beta.kubernetes.io/region" labels. It will use "topology.kubernetes.io/zone" and "topology.kubernetes.io/region" labels instead. ([#99130](https://github.com/kubernetes/kubernetes/pull/99130), [@ayberk](https://github.com/ayberk)) [SIG Cloud Provider, Storage and Testing] - - Newly provisioned PVs by OpenStack Cinder plugin will no longer use the deprecated "failure-domain.beta.kubernetes.io/zone" and "failure-domain.beta.kubernetes.io/region" labels. It will use "topology.kubernetes.io/zone" and "topology.kubernetes.io/region" labels instead. ([#99719](https://github.com/kubernetes/kubernetes/pull/99719), [@jsafrane](https://github.com/jsafrane)) [SIG Cloud Provider and Storage] - - Newly provisioned PVs by gce-pd will no longer have the beta FailureDomain label. gce-pd volume plugin will start to have GA topology label instead. ([#98700](https://github.com/kubernetes/kubernetes/pull/98700), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Cloud Provider, Storage and Testing] - - OpenStack Cinder CSI migration is on by default, Clinder CSI driver must be installed on clusters on OpenStack for Cinder volumes to work. ([#98538](https://github.com/kubernetes/kubernetes/pull/98538), [@dims](https://github.com/dims)) [SIG Storage] - - Remove alpha `CSIMigrationXXComplete` flag and add alpha `InTreePluginXXUnregister` flag. Deprecate `CSIMigrationvSphereComplete` flag and it will be removed in v1.22. ([#98243](https://github.com/kubernetes/kubernetes/pull/98243), [@Jiawei0227](https://github.com/Jiawei0227)) - - Remove storage metrics `storage_operation_errors_total`, since we already have `storage_operation_status_count`.And add new field `status` for `storage_operation_duration_seconds`, so that we can know about all status storage operation latency. ([#98332](https://github.com/kubernetes/kubernetes/pull/98332), [@JornShen](https://github.com/JornShen)) [SIG Instrumentation and Storage] - - The metric `storage_operation_errors_total` is not removed, but is marked deprecated, and the metric `storage_operation_status_count` is marked deprecated. In both cases the `storage_operation_duration_seconds` metric can be used to recover equivalent counts (using `status=fail-unknown` in the case of `storage_operations_errors_total`). ([#99045](https://github.com/kubernetes/kubernetes/pull/99045), [@mattcary](https://github.com/mattcary)) - - `ServiceNodeExclusion`, `NodeDisruptionExclusion` and `LegacyNodeRoleBehavior` features have been promoted to GA. `ServiceNodeExclusion` and `NodeDisruptionExclusion` are now unconditionally enabled, while `LegacyNodeRoleBehavior` is unconditionally disabled. To prevent control plane nodes from being added to load balancers automatically, upgrade users need to add "node.kubernetes.io/exclude-from-external-load-balancers" label to control plane nodes. ([#97543](https://github.com/kubernetes/kubernetes/pull/97543), [@pacoxu](https://github.com/pacoxu)) - -## Changes by Kind - -### Deprecation - -- Aborting the drain command in a list of nodes will be deprecated. The new behavior will make the drain command go through all nodes even if one or more nodes failed during the drain. For now, users can try such experience by enabling --ignore-errors flag. ([#98203](https://github.com/kubernetes/kubernetes/pull/98203), [@yuzhiquan](https://github.com/yuzhiquan)) -- Delete deprecated `service.beta.kubernetes.io/azure-load-balancer-mixed-protocols` mixed procotol annotation in favor of the MixedProtocolLBService feature ([#97096](https://github.com/kubernetes/kubernetes/pull/97096), [@nilo19](https://github.com/nilo19)) [SIG Cloud Provider] -- Deprecate the `topologyKeys` field in Service. This capability will be replaced with upcoming work around Topology Aware Subsetting and Service Internal Traffic Policy. ([#96736](https://github.com/kubernetes/kubernetes/pull/96736), [@andrewsykim](https://github.com/andrewsykim)) [SIG Apps] -- Kube-proxy: remove deprecated --cleanup-ipvs flag of kube-proxy, and make --cleanup flag always to flush IPVS ([#97336](https://github.com/kubernetes/kubernetes/pull/97336), [@maaoBit](https://github.com/maaoBit)) [SIG Network] -- Kubeadm: deprecated command "alpha selfhosting pivot" is now removed. ([#97627](https://github.com/kubernetes/kubernetes/pull/97627), [@knight42](https://github.com/knight42)) -- Kubeadm: graduate the command `kubeadm alpha kubeconfig user` to `kubeadm kubeconfig user`. The `kubeadm alpha kubeconfig user` command is deprecated now. ([#97583](https://github.com/kubernetes/kubernetes/pull/97583), [@knight42](https://github.com/knight42)) [SIG Cluster Lifecycle] -- Kubeadm: the "kubeadm alpha certs" command is removed now, please use "kubeadm certs" instead. ([#97706](https://github.com/kubernetes/kubernetes/pull/97706), [@knight42](https://github.com/knight42)) [SIG Cluster Lifecycle] -- Kubeadm: the deprecated kube-dns is no longer supported as an option. If "ClusterConfiguration.dns.type" is set to "kube-dns" kubeadm will now throw an error. ([#99646](https://github.com/kubernetes/kubernetes/pull/99646), [@rajansandeep](https://github.com/rajansandeep)) [SIG Cluster Lifecycle] -- Kubectl: The deprecated `kubectl alpha debug` command is removed. Use `kubectl debug` instead. ([#98111](https://github.com/kubernetes/kubernetes/pull/98111), [@pandaamanda](https://github.com/pandaamanda)) [SIG CLI] -- Official support to build kubernetes with docker-machine / remote docker is removed. This change does not affect building kubernetes with docker locally. ([#97935](https://github.com/kubernetes/kubernetes/pull/97935), [@adeniyistephen](https://github.com/adeniyistephen)) [SIG Release and Testing] -- Remove deprecated `--generator, --replicas, --service-generator, --service-overrides, --schedule` from `kubectl run` - Deprecate `--serviceaccount, --hostport, --requests, --limits` in `kubectl run` ([#99732](https://github.com/kubernetes/kubernetes/pull/99732), [@soltysh](https://github.com/soltysh)) -- Remove the deprecated metrics "scheduling_algorithm_preemption_evaluation_seconds" and "binding_duration_seconds", suggest to use "scheduler_framework_extension_point_duration_seconds" instead. ([#96447](https://github.com/kubernetes/kubernetes/pull/96447), [@chendave](https://github.com/chendave)) [SIG Cluster Lifecycle, Instrumentation, Scheduling and Testing] -- Removing experimental windows container hyper-v support with Docker ([#97141](https://github.com/kubernetes/kubernetes/pull/97141), [@wawa0210](https://github.com/wawa0210)) [SIG Node and Windows] -- Rename metrics `etcd_object_counts` to `apiserver_storage_object_counts` and mark it as stable. The original `etcd_object_counts` metrics name is marked as "Deprecated" and will be removed in the future. ([#99785](https://github.com/kubernetes/kubernetes/pull/99785), [@erain](https://github.com/erain)) [SIG API Machinery, Instrumentation and Testing] -- The GA TokenRequest and TokenRequestProjection feature gates have been removed and are unconditionally enabled. Remove explicit use of those feature gates in CLI invocations. ([#97148](https://github.com/kubernetes/kubernetes/pull/97148), [@wawa0210](https://github.com/wawa0210)) [SIG Node] -- The PodSecurityPolicy API is deprecated in 1.21, and will no longer be served starting in 1.25. ([#97171](https://github.com/kubernetes/kubernetes/pull/97171), [@deads2k](https://github.com/deads2k)) [SIG Auth and CLI] -- The `batch/v2alpha1` CronJob type definitions and clients are deprecated and removed. ([#96987](https://github.com/kubernetes/kubernetes/pull/96987), [@soltysh](https://github.com/soltysh)) [SIG API Machinery, Apps, CLI and Testing] -- The `export` query parameter (inconsistently supported by API resources and deprecated in v1.14) is fully removed. Requests setting this query parameter will now receive a 400 status response. ([#98312](https://github.com/kubernetes/kubernetes/pull/98312), [@deads2k](https://github.com/deads2k)) [SIG API Machinery, Auth and Testing] -- `audit.k8s.io/v1beta1` and `audit.k8s.io/v1alpha1` audit policy configuration and audit events are deprecated in favor of `audit.k8s.io/v1`, available since v1.13. kube-apiserver invocations that specify alpha or beta policy configurations with `--audit-policy-file`, or explicitly request alpha or beta audit events with `--audit-log-version` / `--audit-webhook-version` must update to use `audit.k8s.io/v1` and accept `audit.k8s.io/v1` events prior to v1.24. ([#98858](https://github.com/kubernetes/kubernetes/pull/98858), [@carlory](https://github.com/carlory)) [SIG Auth] -- `discovery.k8s.io/v1beta1` EndpointSlices are deprecated in favor of `discovery.k8s.io/v1`, and will no longer be served in Kubernetes v1.25. ([#100472](https://github.com/kubernetes/kubernetes/pull/100472), [@liggitt](https://github.com/liggitt)) -- `diskformat` storage class parameter for in-tree vSphere volume plugin is deprecated as of v1.21 release. Please consider updating storageclass and remove `diskformat` parameter. vSphere CSI Driver does not support diskformat storageclass parameter. - - vSphere releases less than 67u3 are deprecated as of v1.21. Please consider upgrading vSphere to 67u3 or above. vSphere CSI Driver requires minimum vSphere 67u3. - - VM Hardware version less than 15 is deprecated as of v1.21. Please consider upgrading the Node VM Hardware version to 15 or above. vSphere CSI Driver recommends Node VM's Hardware version set to at least vmx-15. - - Multi vCenter support is deprecated as of v1.21. If you have a Kubernetes cluster spanning across multiple vCenter servers, please consider moving all k8s nodes to a single vCenter Server. vSphere CSI Driver does not support Kubernetes deployment spanning across multiple vCenter servers. - - Support for these deprecations will be available till Kubernetes v1.24. ([#98546](https://github.com/kubernetes/kubernetes/pull/98546), [@divyenpatel](https://github.com/divyenpatel)) - -### API Change - -- 1. PodAffinityTerm includes a namespaceSelector field to allow selecting eligible namespaces based on their labels. - 2. A new CrossNamespacePodAffinity quota scope API that allows restricting which namespaces allowed to use PodAffinityTerm with corss-namespace reference via namespaceSelector or namespaces fields. ([#98582](https://github.com/kubernetes/kubernetes/pull/98582), [@ahg-g](https://github.com/ahg-g)) [SIG API Machinery, Apps, Auth and Testing] -- Add Probe-level terminationGracePeriodSeconds field ([#99375](https://github.com/kubernetes/kubernetes/pull/99375), [@ehashman](https://github.com/ehashman)) [SIG API Machinery, Apps, Node and Testing] -- Added `.spec.completionMode` field to Job, with accepted values `NonIndexed` (default) and `Indexed`. This is an alpha field and is only honored by servers with the `IndexedJob` feature gate enabled. ([#98441](https://github.com/kubernetes/kubernetes/pull/98441), [@alculquicondor](https://github.com/alculquicondor)) [SIG Apps and CLI] -- Adds support for endPort field in NetworkPolicy ([#97058](https://github.com/kubernetes/kubernetes/pull/97058), [@rikatz](https://github.com/rikatz)) [SIG Apps and Network] -- CSIServiceAccountToken graduates to Beta and enabled by default. ([#99298](https://github.com/kubernetes/kubernetes/pull/99298), [@zshihang](https://github.com/zshihang)) -- Cluster admins can now turn off `/debug/pprof` and `/debug/flags/v` endpoint in kubelet by setting `enableProfilingHandler` and `enableDebugFlagsHandler` to `false` in the Kubelet configuration file. Options `enableProfilingHandler` and `enableDebugFlagsHandler` can be set to `true` only when `enableDebuggingHandlers` is also set to `true`. ([#98458](https://github.com/kubernetes/kubernetes/pull/98458), [@SaranBalaji90](https://github.com/SaranBalaji90)) -- DaemonSets accept a MaxSurge integer or percent on their rolling update strategy that will launch the updated pod on nodes and wait for those pods to go ready before marking the old out-of-date pods as deleted. This allows workloads to avoid downtime during upgrades when deployed using DaemonSets. This feature is alpha and is behind the DaemonSetUpdateSurge feature gate. ([#96441](https://github.com/kubernetes/kubernetes/pull/96441), [@smarterclayton](https://github.com/smarterclayton)) [SIG Apps and Testing] -- Enable SPDY pings to keep connections alive, so that `kubectl exec` and `kubectl portforward` won't be interrupted. ([#97083](https://github.com/kubernetes/kubernetes/pull/97083), [@knight42](https://github.com/knight42)) [SIG API Machinery and CLI] -- FieldManager no longer owns fields that get reset before the object is persisted (e.g. "status wiping"). ([#99661](https://github.com/kubernetes/kubernetes/pull/99661), [@kevindelgado](https://github.com/kevindelgado)) [SIG API Machinery, Auth and Testing] -- Fixes server-side apply for APIService resources. ([#98576](https://github.com/kubernetes/kubernetes/pull/98576), [@kevindelgado](https://github.com/kevindelgado)) -- Generic ephemeral volumes are beta. ([#99643](https://github.com/kubernetes/kubernetes/pull/99643), [@pohly](https://github.com/pohly)) [SIG API Machinery, Apps, Auth, CLI, Node, Storage and Testing] -- Hugepages request values are limited to integer multiples of the page size. ([#98515](https://github.com/kubernetes/kubernetes/pull/98515), [@lala123912](https://github.com/lala123912)) [SIG Apps] -- Implement the GetAvailableResources in the podresources API. ([#95734](https://github.com/kubernetes/kubernetes/pull/95734), [@fromanirh](https://github.com/fromanirh)) [SIG Instrumentation, Node and Testing] -- IngressClass resource can now reference a resource in a specific namespace - for implementation-specific configuration (previously only Cluster-level resources were allowed). - This feature can be enabled using the IngressClassNamespacedParams feature gate. ([#99275](https://github.com/kubernetes/kubernetes/pull/99275), [@hbagdi](https://github.com/hbagdi)) -- Jobs API has a new `.spec.suspend` field that can be used to suspend and resume Jobs. This is an alpha field which is only honored by servers with the `SuspendJob` feature gate enabled. ([#98727](https://github.com/kubernetes/kubernetes/pull/98727), [@adtac](https://github.com/adtac)) -- Kubelet Graceful Node Shutdown feature graduates to Beta and enabled by default. ([#99735](https://github.com/kubernetes/kubernetes/pull/99735), [@bobbypage](https://github.com/bobbypage)) -- Kubernetes is now built using go1.15.7 ([#98363](https://github.com/kubernetes/kubernetes/pull/98363), [@cpanato](https://github.com/cpanato)) [SIG Cloud Provider, Instrumentation, Node, Release and Testing] -- Namespace API objects now have a `kubernetes.io/metadata.name` label matching their metadata.name field to allow selecting any namespace by its name using a label selector. ([#96968](https://github.com/kubernetes/kubernetes/pull/96968), [@jayunit100](https://github.com/jayunit100)) [SIG API Machinery, Apps, Cloud Provider, Storage and Testing] -- One new field "InternalTrafficPolicy" in Service is added. - It specifies if the cluster internal traffic should be routed to all endpoints or node-local endpoints only. - "Cluster" routes internal traffic to a Service to all endpoints. - "Local" routes traffic to node-local endpoints only, and traffic is dropped if no node-local endpoints are ready. - The default value is "Cluster". ([#96600](https://github.com/kubernetes/kubernetes/pull/96600), [@maplain](https://github.com/maplain)) [SIG API Machinery, Apps and Network] -- PodDisruptionBudget API objects can now contain conditions in status. ([#98127](https://github.com/kubernetes/kubernetes/pull/98127), [@mortent](https://github.com/mortent)) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Cluster Lifecycle and Instrumentation] -- PodSecurityPolicy only stores "generic" as allowed volume type if the GenericEphemeralVolume feature gate is enabled ([#98918](https://github.com/kubernetes/kubernetes/pull/98918), [@pohly](https://github.com/pohly)) [SIG Auth and Security] -- Promote CronJobs to batch/v1 ([#99423](https://github.com/kubernetes/kubernetes/pull/99423), [@soltysh](https://github.com/soltysh)) [SIG API Machinery, Apps, CLI and Testing] -- Promote Immutable Secrets/ConfigMaps feature to Stable. This allows to set `immutable` field in Secret or ConfigMap object to mark their contents as immutable. ([#97615](https://github.com/kubernetes/kubernetes/pull/97615), [@wojtek-t](https://github.com/wojtek-t)) [SIG Apps, Architecture, Node and Testing] -- Remove support for building Kubernetes with bazel. ([#99561](https://github.com/kubernetes/kubernetes/pull/99561), [@BenTheElder](https://github.com/BenTheElder)) [SIG API Machinery, Apps, Architecture, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Release, Scalability, Scheduling, Storage, Testing and Windows] -- Scheduler extender filter interface now can report unresolvable failed nodes in the new field `FailedAndUnresolvableNodes` of `ExtenderFilterResult` struct. Nodes in this map will be skipped in the preemption phase. ([#92866](https://github.com/kubernetes/kubernetes/pull/92866), [@cofyc](https://github.com/cofyc)) [SIG Scheduling] -- Services can specify loadBalancerClass to use a custom load balancer ([#98277](https://github.com/kubernetes/kubernetes/pull/98277), [@XudongLiuHarold](https://github.com/XudongLiuHarold)) -- Storage capacity tracking (= the CSIStorageCapacity feature) graduates to Beta and enabled by default, storage.k8s.io/v1alpha1/VolumeAttachment and storage.k8s.io/v1alpha1/CSIStorageCapacity objects are deprecated ([#99641](https://github.com/kubernetes/kubernetes/pull/99641), [@pohly](https://github.com/pohly)) -- Support for Indexed Job: a Job that is considered completed when Pods associated to indexes from 0 to (.spec.completions-1) have succeeded. ([#98812](https://github.com/kubernetes/kubernetes/pull/98812), [@alculquicondor](https://github.com/alculquicondor)) [SIG Apps and CLI] -- The BoundServiceAccountTokenVolume feature has been promoted to beta, and enabled by default. - - This changes the tokens provided to containers at `/var/run/secrets/kubernetes.io/serviceaccount/token` to be time-limited, auto-refreshed, and invalidated when the containing pod is deleted. - - Clients should reload the token from disk periodically (once per minute is recommended) to ensure they continue to use a valid token. `k8s.io/client-go` version v11.0.0+ and v0.15.0+ reload tokens automatically. - - By default, injected tokens are given an extended lifetime so they remain valid even after a new refreshed token is provided. The metric `serviceaccount_stale_tokens_total` can be used to monitor for workloads that are depending on the extended lifetime and are continuing to use tokens even after a refreshed token is provided to the container. If that metric indicates no existing workloads are depending on extended lifetimes, injected token lifetime can be shortened to 1 hour by starting `kube-apiserver` with `--service-account-extend-token-expiration=false`. ([#95667](https://github.com/kubernetes/kubernetes/pull/95667), [@zshihang](https://github.com/zshihang)) [SIG API Machinery, Auth, Cluster Lifecycle and Testing] -- The EndpointSlice Controllers are now GA. The `EndpointSliceController` will not populate the `deprecatedTopology` field and will only provide topology information through the `zone` and `nodeName` fields. ([#99870](https://github.com/kubernetes/kubernetes/pull/99870), [@swetharepakula](https://github.com/swetharepakula)) -- The Endpoints controller will now set the `endpoints.kubernetes.io/over-capacity` annotation to "warning" when an Endpoints resource contains more than 1000 addresses. In a future release, the controller will truncate Endpoints that exceed this limit. The EndpointSlice API can be used to support significantly larger number of addresses. ([#99975](https://github.com/kubernetes/kubernetes/pull/99975), [@robscott](https://github.com/robscott)) [SIG Apps and Network] -- The PodDisruptionBudget API has been promoted to policy/v1 with no schema changes. The only functional change is that an empty selector (`{}`) written to a policy/v1 PodDisruptionBudget now selects all pods in the namespace. The behavior of the policy/v1beta1 API remains unchanged. The policy/v1beta1 PodDisruptionBudget API is deprecated and will no longer be served in 1.25+. ([#99290](https://github.com/kubernetes/kubernetes/pull/99290), [@mortent](https://github.com/mortent)) [SIG API Machinery, Apps, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Scheduling and Testing] -- The `EndpointSlice` API is now GA. The `EndpointSlice` topology field has been removed from the GA API and will be replaced by a new per Endpoint Zone field. If the topology field was previously used, it will be converted into an annotation in the v1 Resource. The `discovery.k8s.io/v1alpha1` API is removed. ([#99662](https://github.com/kubernetes/kubernetes/pull/99662), [@swetharepakula](https://github.com/swetharepakula)) -- The `controller.kubernetes.io/pod-deletion-cost` annotation can be set to offer a hint on the cost of deleting a `Pod` compared to other pods belonging to the same ReplicaSet. Pods with lower deletion cost are deleted first. This is an alpha feature. ([#99163](https://github.com/kubernetes/kubernetes/pull/99163), [@ahg-g](https://github.com/ahg-g)) -- The kube-apiserver now resets `managedFields` that got corrupted by a mutating admission controller. ([#98074](https://github.com/kubernetes/kubernetes/pull/98074), [@kwiesmueller](https://github.com/kwiesmueller)) -- Topology Aware Hints are now available in alpha and can be enabled with the `TopologyAwareHints` feature gate. ([#99522](https://github.com/kubernetes/kubernetes/pull/99522), [@robscott](https://github.com/robscott)) [SIG API Machinery, Apps, Auth, Instrumentation, Network and Testing] -- Users might specify the `kubectl.kubernetes.io/default-exec-container` annotation in a Pod to preselect container for kubectl commands. ([#97099](https://github.com/kubernetes/kubernetes/pull/97099), [@pacoxu](https://github.com/pacoxu)) [SIG CLI] - -### Feature - -- A client-go metric, rest_client_exec_plugin_call_total, has been added to track total calls to client-go credential plugins. ([#98892](https://github.com/kubernetes/kubernetes/pull/98892), [@ankeesler](https://github.com/ankeesler)) [SIG API Machinery, Auth, Cluster Lifecycle and Instrumentation] -- A new histogram metric to track the time it took to delete a job by the `TTLAfterFinished` controller ([#98676](https://github.com/kubernetes/kubernetes/pull/98676), [@ahg-g](https://github.com/ahg-g)) -- AWS cloud provider supports auto-discovering subnets without any `kubernetes.io/cluster/` tags. It also supports additional service annotation `service.beta.kubernetes.io/aws-load-balancer-subnets` to manually configure the subnets. ([#97431](https://github.com/kubernetes/kubernetes/pull/97431), [@kishorj](https://github.com/kishorj)) -- Aborting the drain command in a list of nodes will be deprecated. The new behavior will make the drain command go through all nodes even if one or more nodes failed during the drain. For now, users can try such experience by enabling --ignore-errors flag. ([#98203](https://github.com/kubernetes/kubernetes/pull/98203), [@yuzhiquan](https://github.com/yuzhiquan)) -- Add --permit-address-sharing flag to `kube-apiserver` to listen with `SO_REUSEADDR`. While allowing to listen on wildcard IPs like 0.0.0.0 and specific IPs in parallel, it avoids waiting for the kernel to release socket in `TIME_WAIT` state, and hence, considerably reducing `kube-apiserver` restart times under certain conditions. ([#93861](https://github.com/kubernetes/kubernetes/pull/93861), [@sttts](https://github.com/sttts)) -- Add `csi_operations_seconds` metric on kubelet that exposes CSI operations duration and status for node CSI operations. ([#98979](https://github.com/kubernetes/kubernetes/pull/98979), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Instrumentation and Storage] -- Add `migrated` field into `storage_operation_duration_seconds` metric ([#99050](https://github.com/kubernetes/kubernetes/pull/99050), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Apps, Instrumentation and Storage] -- Add flag --lease-reuse-duration-seconds for kube-apiserver to config etcd lease reuse duration. ([#97009](https://github.com/kubernetes/kubernetes/pull/97009), [@lingsamuel](https://github.com/lingsamuel)) [SIG API Machinery and Scalability] -- Add metric etcd_lease_object_counts for kube-apiserver to observe max objects attached to a single etcd lease. ([#97480](https://github.com/kubernetes/kubernetes/pull/97480), [@lingsamuel](https://github.com/lingsamuel)) [SIG API Machinery, Instrumentation and Scalability] -- Add support to generate client-side binaries for new darwin/arm64 platform ([#97743](https://github.com/kubernetes/kubernetes/pull/97743), [@dims](https://github.com/dims)) [SIG Release and Testing] -- Added `ephemeral_volume_controller_create[_failures]_total` counters to kube-controller-manager metrics ([#99115](https://github.com/kubernetes/kubernetes/pull/99115), [@pohly](https://github.com/pohly)) [SIG API Machinery, Apps, Cluster Lifecycle, Instrumentation and Storage] -- Added support for installing `arm64` node artifacts. ([#99242](https://github.com/kubernetes/kubernetes/pull/99242), [@liu-cong](https://github.com/liu-cong)) -- Adds alpha feature `VolumeCapacityPriority` which makes the scheduler prioritize nodes based on the best matching size of statically provisioned PVs across multiple topologies. ([#96347](https://github.com/kubernetes/kubernetes/pull/96347), [@cofyc](https://github.com/cofyc)) [SIG Apps, Network, Scheduling, Storage and Testing] -- Adds the ability to pass --strict-transport-security-directives to the kube-apiserver to set the HSTS header appropriately. Be sure you understand the consequences to browsers before setting this field. ([#96502](https://github.com/kubernetes/kubernetes/pull/96502), [@249043822](https://github.com/249043822)) [SIG Auth] -- Adds two new metrics to cronjobs, a histogram to track the time difference when a job is created and the expected time when it should be created, as well as a gauge for the missed schedules of a cronjob ([#99341](https://github.com/kubernetes/kubernetes/pull/99341), [@alaypatel07](https://github.com/alaypatel07)) -- Alpha implementation of Kubectl Command Headers: SIG CLI KEP 859 enabled when KUBECTL_COMMAND_HEADERS environment variable set on the client command line. ([#98952](https://github.com/kubernetes/kubernetes/pull/98952), [@seans3](https://github.com/seans3)) -- Base-images: Update to debian-iptables:buster-v1.4.0 - - Uses iptables 1.8.5 - - base-images: Update to debian-base:buster-v1.3.0 - - cluster/images/etcd: Build etcd:3.4.13-2 image - - Uses debian-base:buster-v1.3.0 ([#98401](https://github.com/kubernetes/kubernetes/pull/98401), [@pacoxu](https://github.com/pacoxu)) [SIG Testing] -- CRIContainerLogRotation graduates to GA and unconditionally enabled. ([#99651](https://github.com/kubernetes/kubernetes/pull/99651), [@umohnani8](https://github.com/umohnani8)) -- Component owner can configure the allowlist of metric label with flag '--allow-metric-labels'. ([#99385](https://github.com/kubernetes/kubernetes/pull/99385), [@YoyinZyc](https://github.com/YoyinZyc)) [SIG API Machinery, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation and Release] -- Component owner can configure the allowlist of metric label with flag '--allow-metric-labels'. ([#99738](https://github.com/kubernetes/kubernetes/pull/99738), [@YoyinZyc](https://github.com/YoyinZyc)) [SIG API Machinery, Cluster Lifecycle and Instrumentation] -- EmptyDir memory backed volumes are sized as the the minimum of pod allocatable memory on a host and an optional explicit user provided value. ([#100319](https://github.com/kubernetes/kubernetes/pull/100319), [@derekwaynecarr](https://github.com/derekwaynecarr)) [SIG Node] -- Enables Kubelet to check volume condition and log events to corresponding pods. ([#99284](https://github.com/kubernetes/kubernetes/pull/99284), [@fengzixu](https://github.com/fengzixu)) [SIG Apps, Instrumentation, Node and Storage] -- EndpointSliceNodeName graduates to GA and thus will be unconditionally enabled -- NodeName will always be available in the v1beta1 API. ([#99746](https://github.com/kubernetes/kubernetes/pull/99746), [@swetharepakula](https://github.com/swetharepakula)) -- Export `NewDebuggingRoundTripper` function and `DebugLevel` options in the k8s.io/client-go/transport package. ([#98324](https://github.com/kubernetes/kubernetes/pull/98324), [@atosatto](https://github.com/atosatto)) -- Kube-proxy iptables: new metric sync_proxy_rules_iptables_total that exposes the number of rules programmed per table in each iteration ([#99653](https://github.com/kubernetes/kubernetes/pull/99653), [@aojea](https://github.com/aojea)) [SIG Instrumentation and Network] -- Kube-scheduler now logs plugin scoring summaries at --v=4 ([#99411](https://github.com/kubernetes/kubernetes/pull/99411), [@damemi](https://github.com/damemi)) [SIG Scheduling] -- Kubeadm now includes CoreDNS v1.8.0. ([#96429](https://github.com/kubernetes/kubernetes/pull/96429), [@rajansandeep](https://github.com/rajansandeep)) [SIG Cluster Lifecycle] -- Kubeadm: IPv6DualStack feature gate graduates to Beta and enabled by default ([#99294](https://github.com/kubernetes/kubernetes/pull/99294), [@pacoxu](https://github.com/pacoxu)) -- Kubeadm: a warning to user as ipv6 site-local is deprecated ([#99574](https://github.com/kubernetes/kubernetes/pull/99574), [@pacoxu](https://github.com/pacoxu)) [SIG Cluster Lifecycle and Network] -- Kubeadm: add support for certificate chain validation. When using kubeadm in external CA mode, this allows an intermediate CA to be used to sign the certificates. The intermediate CA certificate must be appended to each signed certificate for this to work correctly. ([#97266](https://github.com/kubernetes/kubernetes/pull/97266), [@robbiemcmichael](https://github.com/robbiemcmichael)) [SIG Cluster Lifecycle] -- Kubeadm: amend the node kernel validation to treat CGROUP_PIDS, FAIR_GROUP_SCHED as required and CFS_BANDWIDTH, CGROUP_HUGETLB as optional ([#96378](https://github.com/kubernetes/kubernetes/pull/96378), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle and Node] -- Kubeadm: apply the "node.kubernetes.io/exclude-from-external-load-balancers" label on control plane nodes during "init", "join" and "upgrade" to preserve backwards compatibility with the lagacy LB mode where nodes labeled as "master" where excluded. To opt-out you can remove the label from a node. See #97543 and the linked KEP for more details. ([#98269](https://github.com/kubernetes/kubernetes/pull/98269), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle] -- Kubeadm: if the user has customized their image repository via the kubeadm configuration, pass the custom pause image repository and tag to the kubelet via --pod-infra-container-image not only for Docker but for all container runtimes. This flag tells the kubelet that it should not garbage collect the image. ([#99476](https://github.com/kubernetes/kubernetes/pull/99476), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle] -- Kubeadm: perform pre-flight validation on host/node name upon `kubeadm init` and `kubeadm join`, showing warnings on non-compliant names ([#99194](https://github.com/kubernetes/kubernetes/pull/99194), [@pacoxu](https://github.com/pacoxu)) -- Kubectl version changed to write a warning message to stderr if the client and server version difference exceeds the supported version skew of +/-1 minor version. ([#98250](https://github.com/kubernetes/kubernetes/pull/98250), [@brianpursley](https://github.com/brianpursley)) [SIG CLI] -- Kubectl: Add `--use-protocol-buffers` flag to kubectl top pods and nodes. ([#96655](https://github.com/kubernetes/kubernetes/pull/96655), [@serathius](https://github.com/serathius)) -- Kubectl: `kubectl get` will omit managed fields by default now. Users could set `--show-managed-fields` to true to show managedFields when the output format is either `json` or `yaml`. ([#96878](https://github.com/kubernetes/kubernetes/pull/96878), [@knight42](https://github.com/knight42)) [SIG CLI and Testing] -- Kubectl: a Pod can be preselected as default container using `kubectl.kubernetes.io/default-container` annotation ([#99833](https://github.com/kubernetes/kubernetes/pull/99833), [@mengjiao-liu](https://github.com/mengjiao-liu)) -- Kubectl: add bash-completion for comma separated list on `kubectl get` ([#98301](https://github.com/kubernetes/kubernetes/pull/98301), [@phil9909](https://github.com/phil9909)) -- Kubernetes is now built using go1.15.8 ([#98834](https://github.com/kubernetes/kubernetes/pull/98834), [@cpanato](https://github.com/cpanato)) [SIG Cloud Provider, Instrumentation, Release and Testing] -- Kubernetes is now built with Golang 1.16 ([#98572](https://github.com/kubernetes/kubernetes/pull/98572), [@justaugustus](https://github.com/justaugustus)) [SIG API Machinery, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Node, Release and Testing] -- Kubernetes is now built with Golang 1.16.1 ([#100106](https://github.com/kubernetes/kubernetes/pull/100106), [@justaugustus](https://github.com/justaugustus)) [SIG Cloud Provider, Instrumentation, Release and Testing] -- Metrics can now be disabled explicitly via a command line flag (i.e. '--disabled-metrics=metric1,metric2') ([#99217](https://github.com/kubernetes/kubernetes/pull/99217), [@logicalhan](https://github.com/logicalhan)) -- New admission controller `DenyServiceExternalIPs` is available. Clusters which do not *need* the Service `externalIPs` feature should enable this controller and be more secure. ([#97395](https://github.com/kubernetes/kubernetes/pull/97395), [@thockin](https://github.com/thockin)) -- Overall, enable the feature of `PreferNominatedNode` will improve the performance of scheduling where preemption might frequently happen, but in theory, enable the feature of `PreferNominatedNode`, the pod might not be scheduled to the best candidate node in the cluster. ([#93179](https://github.com/kubernetes/kubernetes/pull/93179), [@chendave](https://github.com/chendave)) [SIG Scheduling and Testing] -- Persistent Volumes formatted with the btrfs filesystem will now automatically resize when expanded. ([#99361](https://github.com/kubernetes/kubernetes/pull/99361), [@Novex](https://github.com/Novex)) [SIG Storage] -- Port the devicemanager to Windows node to allow device plugins like directx ([#93285](https://github.com/kubernetes/kubernetes/pull/93285), [@aarnaud](https://github.com/aarnaud)) [SIG Node, Testing and Windows] -- Removes cAdvisor JSON metrics (/stats/container, /stats//, /stats////) from the kubelet. ([#99236](https://github.com/kubernetes/kubernetes/pull/99236), [@pacoxu](https://github.com/pacoxu)) -- Rename metrics `etcd_object_counts` to `apiserver_storage_object_counts` and mark it as stable. The original `etcd_object_counts` metrics name is marked as "Deprecated" and will be removed in the future. ([#99785](https://github.com/kubernetes/kubernetes/pull/99785), [@erain](https://github.com/erain)) [SIG API Machinery, Instrumentation and Testing] -- Sysctls graduates to General Availability and thus unconditionally enabled. ([#99158](https://github.com/kubernetes/kubernetes/pull/99158), [@wgahnagl](https://github.com/wgahnagl)) -- The Kubernetes pause image manifest list now contains an image for Windows Server 20H2. ([#97322](https://github.com/kubernetes/kubernetes/pull/97322), [@claudiubelu](https://github.com/claudiubelu)) [SIG Windows] -- The NodeAffinity plugin implements the PreFilter extension, offering enhanced performance for Filter. ([#99213](https://github.com/kubernetes/kubernetes/pull/99213), [@AliceZhang2016](https://github.com/AliceZhang2016)) [SIG Scheduling] -- The `CronJobControllerV2` feature flag graduates to Beta and set to be enabled by default. ([#98878](https://github.com/kubernetes/kubernetes/pull/98878), [@soltysh](https://github.com/soltysh)) -- The `EndpointSlice` mirroring controller mirrors endpoints annotations and labels to the generated endpoint slices, it also ensures that updates on any of these fields are mirrored. - The well-known annotation `endpoints.kubernetes.io/last-change-trigger-time` is skipped and not mirrored. ([#98116](https://github.com/kubernetes/kubernetes/pull/98116), [@aojea](https://github.com/aojea)) -- The `RunAsGroup` feature has been promoted to GA in this release. ([#94641](https://github.com/kubernetes/kubernetes/pull/94641), [@krmayankk](https://github.com/krmayankk)) [SIG Auth and Node] -- The `ServiceAccountIssuerDiscovery` feature has graduated to GA, and is unconditionally enabled. The `ServiceAccountIssuerDiscovery` feature-gate will be removed in 1.22. ([#98553](https://github.com/kubernetes/kubernetes/pull/98553), [@mtaufen](https://github.com/mtaufen)) [SIG API Machinery, Auth and Testing] -- The `TTLAfterFinished` feature flag is now beta and enabled by default ([#98678](https://github.com/kubernetes/kubernetes/pull/98678), [@ahg-g](https://github.com/ahg-g)) -- The apimachinery util/net function used to detect the bind address `ResolveBindAddress()` takes into consideration global IP addresses on loopback interfaces when 1) the host has default routes, or 2) there are no global IPs on those interfaces in order to support more complex network scenarios like BGP Unnumbered RFC 5549 ([#95790](https://github.com/kubernetes/kubernetes/pull/95790), [@aojea](https://github.com/aojea)) [SIG Network] -- The feature gate `RootCAConfigMap` graduated to GA in v1.21 and therefore will be unconditionally enabled. This flag will be removed in v1.22 release. ([#98033](https://github.com/kubernetes/kubernetes/pull/98033), [@zshihang](https://github.com/zshihang)) -- The pause image upgraded to `v3.4.1` in kubelet and kubeadm for both Linux and Windows. ([#98205](https://github.com/kubernetes/kubernetes/pull/98205), [@pacoxu](https://github.com/pacoxu)) -- Update pause container to run as pseudo user and group `65535:65535`. This implies the release of version 3.5 of the container images. ([#97963](https://github.com/kubernetes/kubernetes/pull/97963), [@saschagrunert](https://github.com/saschagrunert)) [SIG CLI, Cloud Provider, Cluster Lifecycle, Node, Release, Security and Testing] -- Update the latest validated version of Docker to 20.10 ([#98977](https://github.com/kubernetes/kubernetes/pull/98977), [@neolit123](https://github.com/neolit123)) [SIG CLI, Cluster Lifecycle and Node] -- Upgrade node local dns to 1.17.0 for better IPv6 support ([#99749](https://github.com/kubernetes/kubernetes/pull/99749), [@pacoxu](https://github.com/pacoxu)) [SIG Cloud Provider and Network] -- Upgrades `IPv6Dualstack` to `Beta` and turns it on by default. New clusters or existing clusters are not be affected until an actor starts adding secondary Pods and service CIDRS CLI flags as described here: [IPv4/IPv6 Dual-stack](https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/563-dual-stack) ([#98969](https://github.com/kubernetes/kubernetes/pull/98969), [@khenidak](https://github.com/khenidak)) -- Users might specify the `kubectl.kubernetes.io/default-container` annotation in a Pod to preselect container for kubectl commands. ([#99581](https://github.com/kubernetes/kubernetes/pull/99581), [@mengjiao-liu](https://github.com/mengjiao-liu)) [SIG CLI] -- When downscaling ReplicaSets, ready and creation timestamps are compared in a logarithmic scale. ([#99212](https://github.com/kubernetes/kubernetes/pull/99212), [@damemi](https://github.com/damemi)) [SIG Apps and Testing] -- When the kubelet is watching a ConfigMap or Secret purely in the context of setting environment variables - for containers, only hold that watch for a defined duration before cancelling it. This change reduces the CPU - and memory usage of the kube-apiserver in large clusters. ([#99393](https://github.com/kubernetes/kubernetes/pull/99393), [@chenyw1990](https://github.com/chenyw1990)) [SIG API Machinery, Node and Testing] -- WindowsEndpointSliceProxying feature gate has graduated to beta and is enabled by default. This means kube-proxy will read from EndpointSlices instead of Endpoints on Windows by default. ([#99794](https://github.com/kubernetes/kubernetes/pull/99794), [@robscott](https://github.com/robscott)) [SIG Network] -- `kubectl wait` ensures that observedGeneration >= generation to prevent stale state reporting. An example scenario can be found on CRD updates. ([#97408](https://github.com/kubernetes/kubernetes/pull/97408), [@KnicKnic](https://github.com/KnicKnic)) - -### Documentation - -- Azure file migration graduates to beta, with CSIMigrationAzureFile flag off by default - as it requires installation of AzureFile CSI Driver. Users should enable CSIMigration and - CSIMigrationAzureFile features and install the [AzureFile CSI Driver](https://github.com/kubernetes-sigs/azurefile-csi-driver) - to avoid disruption to existing Pod and PVC objects at that time. Azure File CSI driver does not support using same persistent - volume with different fsgroups. When CSI migration is enabled for azurefile driver, such case is not supported. - (there is a case we support where volume is mounted with 0777 and then it readable/writable by everyone) ([#96293](https://github.com/kubernetes/kubernetes/pull/96293), [@andyzhangx](https://github.com/andyzhangx)) -- Official support to build kubernetes with docker-machine / remote docker is removed. This change does not affect building kubernetes with docker locally. ([#97935](https://github.com/kubernetes/kubernetes/pull/97935), [@adeniyistephen](https://github.com/adeniyistephen)) [SIG Release and Testing] -- Set kubelet option `--volume-stats-agg-period` to negative value to disable volume calculations. ([#96675](https://github.com/kubernetes/kubernetes/pull/96675), [@pacoxu](https://github.com/pacoxu)) [SIG Node] - -### Failing Test - -- Escape the special characters like `[`, `]` and ` ` that exist in vsphere windows path ([#98830](https://github.com/kubernetes/kubernetes/pull/98830), [@liyanhui1228](https://github.com/liyanhui1228)) [SIG Storage and Windows] -- Kube-proxy: fix a bug on UDP `NodePort` Services where stale connection tracking entries may blackhole the traffic directed to the `NodePort` ([#98305](https://github.com/kubernetes/kubernetes/pull/98305), [@aojea](https://github.com/aojea)) -- Kubelet: fixes a bug in the HostPort dockershim implementation that caused the conformance test "HostPort validates that there is no conflict between pods with same hostPort but different hostIP and protocol" to fail. ([#98755](https://github.com/kubernetes/kubernetes/pull/98755), [@aojea](https://github.com/aojea)) [SIG Cloud Provider, Network and Node] - -### Bug or Regression - -- AcceleratorStats will be available in the Summary API of kubelet when cri_stats_provider is used. ([#96873](https://github.com/kubernetes/kubernetes/pull/96873), [@ruiwen-zhao](https://github.com/ruiwen-zhao)) [SIG Node] -- All data is no longer automatically deleted when a failure is detected during creation of the volume data file on a CSI volume. Now only the data file and volume path is removed. ([#96021](https://github.com/kubernetes/kubernetes/pull/96021), [@huffmanca](https://github.com/huffmanca)) -- Clean ReplicaSet by revision instead of creation timestamp in deployment controller ([#97407](https://github.com/kubernetes/kubernetes/pull/97407), [@waynepeking348](https://github.com/waynepeking348)) [SIG Apps] -- Cleanup subnet in frontend IP configs to prevent huge subnet request bodies in some scenarios. ([#98133](https://github.com/kubernetes/kubernetes/pull/98133), [@nilo19](https://github.com/nilo19)) [SIG Cloud Provider] -- Client-go exec credential plugins will pass stdin only when interactive terminal is detected on stdin. This fixes a bug where previously it was checking if **stdout** is an interactive terminal. ([#99654](https://github.com/kubernetes/kubernetes/pull/99654), [@ankeesler](https://github.com/ankeesler)) -- Cloud-controller-manager: routes controller should not depend on --allocate-node-cidrs ([#97029](https://github.com/kubernetes/kubernetes/pull/97029), [@andrewsykim](https://github.com/andrewsykim)) [SIG Cloud Provider and Testing] -- Cluster Autoscaler version bump to v1.20.0 ([#97011](https://github.com/kubernetes/kubernetes/pull/97011), [@towca](https://github.com/towca)) -- Creating a PVC with DataSource should fail for non-CSI plugins. ([#97086](https://github.com/kubernetes/kubernetes/pull/97086), [@xing-yang](https://github.com/xing-yang)) [SIG Apps and Storage] -- EndpointSlice controller is now less likely to emit FailedToUpdateEndpointSlices events. ([#99345](https://github.com/kubernetes/kubernetes/pull/99345), [@robscott](https://github.com/robscott)) [SIG Apps and Network] -- EndpointSlice controllers are less likely to create duplicate EndpointSlices. ([#100103](https://github.com/kubernetes/kubernetes/pull/100103), [@robscott](https://github.com/robscott)) [SIG Apps and Network] -- EndpointSliceMirroring controller is now less likely to emit FailedToUpdateEndpointSlices events. ([#99756](https://github.com/kubernetes/kubernetes/pull/99756), [@robscott](https://github.com/robscott)) [SIG Apps and Network] -- Ensure all vSphere nodes are are tracked by volume attach-detach controller ([#96689](https://github.com/kubernetes/kubernetes/pull/96689), [@gnufied](https://github.com/gnufied)) -- Ensure empty string annotations are copied over in rollbacks. ([#94858](https://github.com/kubernetes/kubernetes/pull/94858), [@waynepeking348](https://github.com/waynepeking348)) -- Ensure only one LoadBalancer rule is created when HA mode is enabled ([#99825](https://github.com/kubernetes/kubernetes/pull/99825), [@feiskyer](https://github.com/feiskyer)) [SIG Cloud Provider] -- Ensure that client-go's EventBroadcaster is safe (non-racy) during shutdown. ([#95664](https://github.com/kubernetes/kubernetes/pull/95664), [@DirectXMan12](https://github.com/DirectXMan12)) [SIG API Machinery] -- Explicitly pass `KUBE_BUILD_CONFORMANCE=y` in `package-tarballs` to reenable building the conformance tarballs. ([#100571](https://github.com/kubernetes/kubernetes/pull/100571), [@puerco](https://github.com/puerco)) -- Fix Azure file migration e2e test failure when CSIMigration is turned on. ([#97877](https://github.com/kubernetes/kubernetes/pull/97877), [@andyzhangx](https://github.com/andyzhangx)) -- Fix CSI-migrated inline EBS volumes failing to mount if their volumeID is prefixed by aws:// ([#96821](https://github.com/kubernetes/kubernetes/pull/96821), [@wongma7](https://github.com/wongma7)) [SIG Storage] -- Fix CVE-2020-8555 for Gluster client connections. ([#97922](https://github.com/kubernetes/kubernetes/pull/97922), [@liggitt](https://github.com/liggitt)) [SIG Storage] -- Fix NPE in ephemeral storage eviction ([#98261](https://github.com/kubernetes/kubernetes/pull/98261), [@wzshiming](https://github.com/wzshiming)) [SIG Node] -- Fix PermissionDenied issue on SMB mount for Windows ([#99550](https://github.com/kubernetes/kubernetes/pull/99550), [@andyzhangx](https://github.com/andyzhangx)) -- Fix bug that would let the Horizontal Pod Autoscaler scale down despite at least one metric being unavailable/invalid ([#99514](https://github.com/kubernetes/kubernetes/pull/99514), [@mikkeloscar](https://github.com/mikkeloscar)) [SIG Apps and Autoscaling] -- Fix cgroup handling for systemd with cgroup v2 ([#98365](https://github.com/kubernetes/kubernetes/pull/98365), [@odinuge](https://github.com/odinuge)) [SIG Node] -- Fix counting error in service/nodeport/loadbalancer quota check ([#97451](https://github.com/kubernetes/kubernetes/pull/97451), [@pacoxu](https://github.com/pacoxu)) [SIG API Machinery, Network and Testing] -- Fix errors when accessing Windows container stats for Dockershim ([#98510](https://github.com/kubernetes/kubernetes/pull/98510), [@jsturtevant](https://github.com/jsturtevant)) [SIG Node and Windows] -- Fix kube-proxy container image architecture for non amd64 images. ([#98526](https://github.com/kubernetes/kubernetes/pull/98526), [@saschagrunert](https://github.com/saschagrunert)) -- Fix missing cadvisor machine metrics. ([#97006](https://github.com/kubernetes/kubernetes/pull/97006), [@lingsamuel](https://github.com/lingsamuel)) [SIG Node] -- Fix nil VMSS name when setting service to auto mode ([#97366](https://github.com/kubernetes/kubernetes/pull/97366), [@nilo19](https://github.com/nilo19)) [SIG Cloud Provider] -- Fix privileged config of Pod Sandbox which was previously ignored. ([#96877](https://github.com/kubernetes/kubernetes/pull/96877), [@xeniumlee](https://github.com/xeniumlee)) -- Fix the panic when kubelet registers if a node object already exists with no Status.Capacity or Status.Allocatable ([#95269](https://github.com/kubernetes/kubernetes/pull/95269), [@SataQiu](https://github.com/SataQiu)) [SIG Node] -- Fix the regression with the slow pods termination. Before this fix pods may take an additional time to terminate - up to one minute. Reversing the change that ensured that CNI resources cleaned up when the pod is removed on API server. ([#97980](https://github.com/kubernetes/kubernetes/pull/97980), [@SergeyKanzhelev](https://github.com/SergeyKanzhelev)) [SIG Node] -- Fix to recover CSI volumes from certain dangling attachments ([#96617](https://github.com/kubernetes/kubernetes/pull/96617), [@yuga711](https://github.com/yuga711)) [SIG Apps and Storage] -- Fix: azure file latency issue for metadata-heavy workloads ([#97082](https://github.com/kubernetes/kubernetes/pull/97082), [@andyzhangx](https://github.com/andyzhangx)) [SIG Cloud Provider and Storage] -- Fixed Cinder volume IDs on OpenStack Train ([#96673](https://github.com/kubernetes/kubernetes/pull/96673), [@jsafrane](https://github.com/jsafrane)) [SIG Cloud Provider] -- Fixed FibreChannel volume plugin corrupting filesystems on detach of multipath volumes. ([#97013](https://github.com/kubernetes/kubernetes/pull/97013), [@jsafrane](https://github.com/jsafrane)) [SIG Storage] -- Fixed a bug in kubelet that will saturate CPU utilization after containerd got restarted. ([#97174](https://github.com/kubernetes/kubernetes/pull/97174), [@hanlins](https://github.com/hanlins)) [SIG Node] -- Fixed a bug that causes smaller number of conntrack-max being used under CPU static policy. (#99225, @xh4n3) ([#99613](https://github.com/kubernetes/kubernetes/pull/99613), [@xh4n3](https://github.com/xh4n3)) [SIG Network] -- Fixed a bug that on k8s nodes, when the policy of INPUT chain in filter table is not ACCEPT, healthcheck nodeport would not work. - Added iptables rules to allow healthcheck nodeport traffic. ([#97824](https://github.com/kubernetes/kubernetes/pull/97824), [@hanlins](https://github.com/hanlins)) [SIG Network] -- Fixed a bug that the kubelet cannot start on BtrfS. ([#98042](https://github.com/kubernetes/kubernetes/pull/98042), [@gjkim42](https://github.com/gjkim42)) [SIG Node] -- Fixed a race condition on API server startup ensuring previously created webhook configurations are effective before the first write request is admitted. ([#95783](https://github.com/kubernetes/kubernetes/pull/95783), [@roycaihw](https://github.com/roycaihw)) [SIG API Machinery] -- Fixed an issue with garbage collection failing to clean up namespaced children of an object also referenced incorrectly by cluster-scoped children ([#98068](https://github.com/kubernetes/kubernetes/pull/98068), [@liggitt](https://github.com/liggitt)) [SIG API Machinery and Apps] -- Fixed authentication_duration_seconds metric scope. Previously, it included whole apiserver request duration which yields inaccurate results. ([#99944](https://github.com/kubernetes/kubernetes/pull/99944), [@marseel](https://github.com/marseel)) -- Fixed bug in CPUManager with race on container map access ([#97427](https://github.com/kubernetes/kubernetes/pull/97427), [@klueska](https://github.com/klueska)) [SIG Node] -- Fixed bug that caused cAdvisor to incorrectly detect single-socket multi-NUMA topology. ([#99315](https://github.com/kubernetes/kubernetes/pull/99315), [@iwankgb](https://github.com/iwankgb)) [SIG Node] -- Fixed cleanup of block devices when /var/lib/kubelet is a symlink. ([#96889](https://github.com/kubernetes/kubernetes/pull/96889), [@jsafrane](https://github.com/jsafrane)) [SIG Storage] -- Fixed no effect namespace when exposing deployment with --dry-run=client. ([#97492](https://github.com/kubernetes/kubernetes/pull/97492), [@masap](https://github.com/masap)) [SIG CLI] -- Fixed provisioning of Cinder volumes migrated to CSI when StorageClass with AllowedTopologies was used. ([#98311](https://github.com/kubernetes/kubernetes/pull/98311), [@jsafrane](https://github.com/jsafrane)) [SIG Storage] -- Fixes a bug of identifying the correct containerd process. ([#97888](https://github.com/kubernetes/kubernetes/pull/97888), [@pacoxu](https://github.com/pacoxu)) -- Fixes add-on manager leader election to use leases instead of endpoints, similar to what kube-controller-manager does in 1.20 ([#98968](https://github.com/kubernetes/kubernetes/pull/98968), [@liggitt](https://github.com/liggitt)) -- Fixes connection errors when using `--volume-host-cidr-denylist` or `--volume-host-allow-local-loopback` ([#98436](https://github.com/kubernetes/kubernetes/pull/98436), [@liggitt](https://github.com/liggitt)) [SIG Network and Storage] -- Fixes problem where invalid selector on `PodDisruptionBudget` leads to a nil pointer dereference that causes the Controller manager to crash loop. ([#98750](https://github.com/kubernetes/kubernetes/pull/98750), [@mortent](https://github.com/mortent)) -- Fixes spurious errors about IPv6 in `kube-proxy` logs on nodes with IPv6 disabled. ([#99127](https://github.com/kubernetes/kubernetes/pull/99127), [@danwinship](https://github.com/danwinship)) -- Fixing a bug where a failed node may not have the NoExecute taint set correctly ([#96876](https://github.com/kubernetes/kubernetes/pull/96876), [@howieyuen](https://github.com/howieyuen)) [SIG Apps and Node] -- GCE Internal LoadBalancer sync loop will now release the ILB IP address upon sync failure. An error in ILB forwarding rule creation will no longer leak IP addresses. ([#97740](https://github.com/kubernetes/kubernetes/pull/97740), [@prameshj](https://github.com/prameshj)) [SIG Cloud Provider and Network] -- Ignore update pod with no new images in alwaysPullImages admission controller ([#96668](https://github.com/kubernetes/kubernetes/pull/96668), [@pacoxu](https://github.com/pacoxu)) [SIG Apps, Auth and Node] -- Improve speed of vSphere PV provisioning and reduce number of API calls ([#100054](https://github.com/kubernetes/kubernetes/pull/100054), [@gnufied](https://github.com/gnufied)) [SIG Cloud Provider and Storage] -- KUBECTL_EXTERNAL_DIFF now accepts equal sign for additional parameters. ([#98158](https://github.com/kubernetes/kubernetes/pull/98158), [@dougsland](https://github.com/dougsland)) [SIG CLI] -- Kube-apiserver: an update of a pod with a generic ephemeral volume dropped that volume if the feature had been disabled since creating the pod with such a volume ([#99446](https://github.com/kubernetes/kubernetes/pull/99446), [@pohly](https://github.com/pohly)) [SIG Apps, Node and Storage] -- Kube-proxy: remove deprecated --cleanup-ipvs flag of kube-proxy, and make --cleanup flag always to flush IPVS ([#97336](https://github.com/kubernetes/kubernetes/pull/97336), [@maaoBit](https://github.com/maaoBit)) [SIG Network] -- Kubeadm installs etcd v3.4.13 when creating cluster v1.19 ([#97244](https://github.com/kubernetes/kubernetes/pull/97244), [@pacoxu](https://github.com/pacoxu)) -- Kubeadm: Fixes a kubeadm upgrade bug that could cause a custom CoreDNS configuration to be replaced with the default. ([#97016](https://github.com/kubernetes/kubernetes/pull/97016), [@rajansandeep](https://github.com/rajansandeep)) [SIG Cluster Lifecycle] -- Kubeadm: Some text in the `kubeadm upgrade plan` output has changed. If you have scripts or other automation that parses this output, please review these changes and update your scripts to account for the new output. ([#98728](https://github.com/kubernetes/kubernetes/pull/98728), [@stmcginnis](https://github.com/stmcginnis)) [SIG Cluster Lifecycle] -- Kubeadm: fix a bug in the host memory detection code on 32bit Linux platforms ([#97403](https://github.com/kubernetes/kubernetes/pull/97403), [@abelbarrera15](https://github.com/abelbarrera15)) [SIG Cluster Lifecycle] -- Kubeadm: fix a bug where "kubeadm join" would not properly handle missing names for existing etcd members. ([#97372](https://github.com/kubernetes/kubernetes/pull/97372), [@ihgann](https://github.com/ihgann)) [SIG Cluster Lifecycle] -- Kubeadm: fix a bug where "kubeadm upgrade" commands can fail if CoreDNS v1.8.0 is installed. ([#97919](https://github.com/kubernetes/kubernetes/pull/97919), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle] -- Kubeadm: fix a bug where external credentials in an existing admin.conf prevented the CA certificate to be written in the cluster-info ConfigMap. ([#98882](https://github.com/kubernetes/kubernetes/pull/98882), [@kvaps](https://github.com/kvaps)) [SIG Cluster Lifecycle] -- Kubeadm: get k8s CI version markers from k8s infra bucket ([#98836](https://github.com/kubernetes/kubernetes/pull/98836), [@hasheddan](https://github.com/hasheddan)) [SIG Cluster Lifecycle and Release] -- Kubeadm: skip validating pod subnet against node-cidr-mask when allocate-node-cidrs is set to be false ([#98984](https://github.com/kubernetes/kubernetes/pull/98984), [@SataQiu](https://github.com/SataQiu)) [SIG Cluster Lifecycle] -- Kubectl logs: `--ignore-errors` is now honored by all containers, maintaining consistency with parallelConsumeRequest behavior. ([#97686](https://github.com/kubernetes/kubernetes/pull/97686), [@wzshiming](https://github.com/wzshiming)) -- Kubectl-convert: Fix `no kind "Ingress" is registered for version` error ([#97754](https://github.com/kubernetes/kubernetes/pull/97754), [@wzshiming](https://github.com/wzshiming)) -- Kubectl: Fixed panic when describing an ingress backend without an API Group ([#100505](https://github.com/kubernetes/kubernetes/pull/100505), [@lauchokyip](https://github.com/lauchokyip)) [SIG CLI] -- Kubelet now cleans up orphaned volume directories automatically ([#95301](https://github.com/kubernetes/kubernetes/pull/95301), [@lorenz](https://github.com/lorenz)) [SIG Node and Storage] -- Kubelet.exe on Windows now checks that the process running as administrator and the executing user account is listed in the built-in administrators group. This is the equivalent to checking the process is running as uid 0. ([#96616](https://github.com/kubernetes/kubernetes/pull/96616), [@perithompson](https://github.com/perithompson)) [SIG Node and Windows] -- Kubelet: Fix kubelet from panic after getting the wrong signal ([#98200](https://github.com/kubernetes/kubernetes/pull/98200), [@wzshiming](https://github.com/wzshiming)) [SIG Node] -- Kubelet: Fix repeatedly acquiring the inhibit lock ([#98088](https://github.com/kubernetes/kubernetes/pull/98088), [@wzshiming](https://github.com/wzshiming)) [SIG Node] -- Kubelet: Fixed the bug of getting the number of cpu when the number of cpu logical processors is more than 64 in windows ([#97378](https://github.com/kubernetes/kubernetes/pull/97378), [@hwdef](https://github.com/hwdef)) [SIG Node and Windows] -- Limits lease to have 1000 maximum attached objects. ([#98257](https://github.com/kubernetes/kubernetes/pull/98257), [@lingsamuel](https://github.com/lingsamuel)) -- Mitigate CVE-2020-8555 for kube-up using GCE by preventing local loopback folume hosts. ([#97934](https://github.com/kubernetes/kubernetes/pull/97934), [@mattcary](https://github.com/mattcary)) [SIG Cloud Provider and Storage] -- On single-stack configured (IPv4 or IPv6, but not both) clusters, Services which are both headless (no clusterIP) and selectorless (empty or undefined selector) will report `ipFamilyPolicy RequireDualStack` and will have entries in `ipFamilies[]` for both IPv4 and IPv6. This is a change from alpha, but does not have any impact on the manually-specified Endpoints and EndpointSlices for the Service. ([#99555](https://github.com/kubernetes/kubernetes/pull/99555), [@thockin](https://github.com/thockin)) [SIG Apps and Network] -- Performance regression #97685 has been fixed. ([#97860](https://github.com/kubernetes/kubernetes/pull/97860), [@MikeSpreitzer](https://github.com/MikeSpreitzer)) [SIG API Machinery] -- Pod Log stats for windows now reports metrics ([#99221](https://github.com/kubernetes/kubernetes/pull/99221), [@jsturtevant](https://github.com/jsturtevant)) [SIG Node, Storage, Testing and Windows] -- Pod status updates faster when reacting on probe results. The first readiness probe will be called faster when startup probes succeeded, which will make Pod status as ready faster. ([#98376](https://github.com/kubernetes/kubernetes/pull/98376), [@matthyx](https://github.com/matthyx)) -- Readjust `kubelet_containers_per_pod_count` buckets to only show metrics greater than 1. ([#98169](https://github.com/kubernetes/kubernetes/pull/98169), [@wawa0210](https://github.com/wawa0210)) -- Remove CSI topology from migrated in-tree gcepd volume. ([#97823](https://github.com/kubernetes/kubernetes/pull/97823), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Cloud Provider and Storage] -- Requests with invalid timeout parameters in the request URL now appear in the audit log correctly. ([#96901](https://github.com/kubernetes/kubernetes/pull/96901), [@tkashem](https://github.com/tkashem)) [SIG API Machinery and Testing] -- Resolve a "concurrent map read and map write" crashing error in the kubelet ([#95111](https://github.com/kubernetes/kubernetes/pull/95111), [@choury](https://github.com/choury)) [SIG Node] -- Resolves spurious `Failed to list *v1.Secret` or `Failed to list *v1.ConfigMap` messages in kubelet logs. ([#99538](https://github.com/kubernetes/kubernetes/pull/99538), [@liggitt](https://github.com/liggitt)) [SIG Auth and Node] -- ResourceQuota of an entity now inclusively calculate Pod overhead ([#99600](https://github.com/kubernetes/kubernetes/pull/99600), [@gjkim42](https://github.com/gjkim42)) -- Return zero time (midnight on Jan. 1, 1970) instead of negative number when reporting startedAt and finishedAt of the not started or a running Pod when using `dockershim` as a runtime. ([#99585](https://github.com/kubernetes/kubernetes/pull/99585), [@Iceber](https://github.com/Iceber)) -- Reverts breaking change to inline AzureFile volumes; referenced secrets are now searched for in the same namespace as the pod as in previous releases. ([#100563](https://github.com/kubernetes/kubernetes/pull/100563), [@msau42](https://github.com/msau42)) -- Scores from InterPodAffinity have stronger differentiation. ([#98096](https://github.com/kubernetes/kubernetes/pull/98096), [@leileiwan](https://github.com/leileiwan)) [SIG Scheduling] -- Specifying the KUBE_TEST_REPO environment variable when e2e tests are executed will instruct the test infrastructure to load that image from a location within the specified repo, using a predefined pattern. ([#93510](https://github.com/kubernetes/kubernetes/pull/93510), [@smarterclayton](https://github.com/smarterclayton)) [SIG Testing] -- Static pods will be deleted gracefully. ([#98103](https://github.com/kubernetes/kubernetes/pull/98103), [@gjkim42](https://github.com/gjkim42)) [SIG Node] -- Sync node status during kubelet node shutdown. - Adds an pod admission handler that rejects new pods when the node is in progress of shutting down. ([#98005](https://github.com/kubernetes/kubernetes/pull/98005), [@wzshiming](https://github.com/wzshiming)) [SIG Node] -- The calculation of pod UIDs for static pods has changed to ensure each static pod gets a unique value - this will cause all static pod containers to be recreated/restarted if an in-place kubelet upgrade from 1.20 to 1.21 is performed. Note that draining pods before upgrading the kubelet across minor versions is the supported upgrade path. ([#87461](https://github.com/kubernetes/kubernetes/pull/87461), [@bboreham](https://github.com/bboreham)) [SIG Node] -- The maximum number of ports allowed in EndpointSlices has been increased from 100 to 20,000 ([#99795](https://github.com/kubernetes/kubernetes/pull/99795), [@robscott](https://github.com/robscott)) [SIG Network] -- Truncates a message if it hits the `NoteLengthLimit` when the scheduler records an event for the pod that indicates the pod has failed to schedule. ([#98715](https://github.com/kubernetes/kubernetes/pull/98715), [@carlory](https://github.com/carlory)) -- Updated k8s.gcr.io/ingress-gce-404-server-with-metrics-amd64 to a version that serves /metrics endpoint on a non-default port. ([#97621](https://github.com/kubernetes/kubernetes/pull/97621), [@vbannai](https://github.com/vbannai)) [SIG Cloud Provider] -- Updates the commands ` - - kubectl kustomize {arg} - - kubectl apply -k {arg} - `to use same code as kustomize CLI [v4.0.5](https://github.com/kubernetes-sigs/kustomize/releases/tag/kustomize%2Fv4.0.5) ([#98946](https://github.com/kubernetes/kubernetes/pull/98946), [@monopole](https://github.com/monopole)) -- Use force unmount for NFS volumes if regular mount fails after 1 minute timeout ([#96844](https://github.com/kubernetes/kubernetes/pull/96844), [@gnufied](https://github.com/gnufied)) [SIG Storage] -- Use network.Interface.VirtualMachine.ID to get the binded VM - Skip standalone VM when reconciling LoadBalancer ([#97635](https://github.com/kubernetes/kubernetes/pull/97635), [@nilo19](https://github.com/nilo19)) [SIG Cloud Provider] -- Using exec auth plugins with kubectl no longer results in warnings about constructing many client instances from the same exec auth config. ([#97857](https://github.com/kubernetes/kubernetes/pull/97857), [@liggitt](https://github.com/liggitt)) [SIG API Machinery and Auth] -- When a CNI plugin returns dual-stack pod IPs, kubelet will now try to respect the - "primary IP family" of the cluster by picking a primary pod IP of the same family - as the (primary) node IP, rather than assuming that the CNI plugin returned the IPs - in the order the administrator wanted (since some CNI plugins don't allow - configuring this). ([#97979](https://github.com/kubernetes/kubernetes/pull/97979), [@danwinship](https://github.com/danwinship)) [SIG Network and Node] -- When dynamically provisioning Azure File volumes for a premium account, the requested size will be set to 100GB if the request is initially lower than this value to accommodate Azure File requirements. ([#99122](https://github.com/kubernetes/kubernetes/pull/99122), [@huffmanca](https://github.com/huffmanca)) [SIG Cloud Provider and Storage] -- When using `Containerd` on Windows, the `C:\Windows\System32\drivers\etc\hosts` file will now be managed by kubelet. ([#83730](https://github.com/kubernetes/kubernetes/pull/83730), [@claudiubelu](https://github.com/claudiubelu)) -- `VolumeBindingArgs` now allow `BindTimeoutSeconds` to be set as zero, while the value zero indicates no waiting for the checking of volume binding operation. ([#99835](https://github.com/kubernetes/kubernetes/pull/99835), [@chendave](https://github.com/chendave)) [SIG Scheduling and Storage] -- `kubectl exec` and `kubectl attach` now honor the `--quiet` flag which suppresses output from the local binary that could be confused by a script with the remote command output (all non-failure output is hidden). In addition, print inline with exec and attach the list of alternate containers when we default to the first spec.container. ([#99004](https://github.com/kubernetes/kubernetes/pull/99004), [@smarterclayton](https://github.com/smarterclayton)) [SIG CLI] - -### Other (Cleanup or Flake) - -- APIs for kubelet annotations and labels from `k8s.io/kubernetes/pkg/kubelet/apis` are now moved under `k8s.io/kubelet/pkg/apis/` ([#98931](https://github.com/kubernetes/kubernetes/pull/98931), [@michaelbeaumont](https://github.com/michaelbeaumont)) -- Apiserver_request_duration_seconds is promoted to stable status. ([#99925](https://github.com/kubernetes/kubernetes/pull/99925), [@logicalhan](https://github.com/logicalhan)) [SIG API Machinery, Instrumentation and Testing] -- Bump github.com/Azure/go-autorest/autorest to v0.11.12 ([#97033](https://github.com/kubernetes/kubernetes/pull/97033), [@patrickshan](https://github.com/patrickshan)) [SIG API Machinery, CLI, Cloud Provider and Cluster Lifecycle] -- Clients required to use go1.15.8+ or go1.16+ if kube-apiserver has the goaway feature enabled to avoid unexpected data race condition. ([#98809](https://github.com/kubernetes/kubernetes/pull/98809), [@answer1991](https://github.com/answer1991)) -- Delete deprecated `service.beta.kubernetes.io/azure-load-balancer-mixed-protocols` mixed procotol annotation in favor of the MixedProtocolLBService feature ([#97096](https://github.com/kubernetes/kubernetes/pull/97096), [@nilo19](https://github.com/nilo19)) [SIG Cloud Provider] -- EndpointSlice generation is now incremented when labels change. ([#99750](https://github.com/kubernetes/kubernetes/pull/99750), [@robscott](https://github.com/robscott)) [SIG Network] -- Featuregate AllowInsecureBackendProxy graduates to GA and unconditionally enabled. ([#99658](https://github.com/kubernetes/kubernetes/pull/99658), [@deads2k](https://github.com/deads2k)) -- Increase timeout for pod lifecycle test to reach pod status=ready ([#96691](https://github.com/kubernetes/kubernetes/pull/96691), [@hh](https://github.com/hh)) -- Increased `CSINodeIDMaxLength` from 128 bytes to 192 bytes. ([#98753](https://github.com/kubernetes/kubernetes/pull/98753), [@Jiawei0227](https://github.com/Jiawei0227)) -- Kube-apiserver: The OIDC authenticator no longer waits 10 seconds before attempting to fetch the metadata required to verify tokens. ([#97693](https://github.com/kubernetes/kubernetes/pull/97693), [@enj](https://github.com/enj)) [SIG API Machinery and Auth] -- Kube-proxy: Traffic from the cluster directed to ExternalIPs is always sent directly to the Service. ([#96296](https://github.com/kubernetes/kubernetes/pull/96296), [@aojea](https://github.com/aojea)) [SIG Network and Testing] -- Kubeadm: change the default image repository for CI images from 'gcr.io/kubernetes-ci-images' to 'gcr.io/k8s-staging-ci-images' ([#97087](https://github.com/kubernetes/kubernetes/pull/97087), [@SataQiu](https://github.com/SataQiu)) [SIG Cluster Lifecycle] -- Kubectl: The deprecated `kubectl alpha debug` command is removed. Use `kubectl debug` instead. ([#98111](https://github.com/kubernetes/kubernetes/pull/98111), [@pandaamanda](https://github.com/pandaamanda)) [SIG CLI] -- Kubelet command line flags related to dockershim are now showing deprecation message as they will be removed along with dockershim in future release. ([#98730](https://github.com/kubernetes/kubernetes/pull/98730), [@dims](https://github.com/dims)) -- Official support to build kubernetes with docker-machine / remote docker is removed. This change does not affect building kubernetes with docker locally. ([#97618](https://github.com/kubernetes/kubernetes/pull/97618), [@jherrera123](https://github.com/jherrera123)) [SIG Release and Testing] -- Process start time on Windows now uses current process information ([#97491](https://github.com/kubernetes/kubernetes/pull/97491), [@jsturtevant](https://github.com/jsturtevant)) [SIG API Machinery, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation and Windows] -- Resolves flakes in the Ingress conformance tests due to conflicts with controllers updating the Ingress object ([#98430](https://github.com/kubernetes/kubernetes/pull/98430), [@liggitt](https://github.com/liggitt)) [SIG Network and Testing] -- The `AttachVolumeLimit` feature gate (GA since v1.17) has been removed and now unconditionally enabled. ([#96539](https://github.com/kubernetes/kubernetes/pull/96539), [@ialidzhikov](https://github.com/ialidzhikov)) -- The `CSINodeInfo` feature gate that is GA since v1.17 is unconditionally enabled, and can no longer be specified via the `--feature-gates` argument. ([#96561](https://github.com/kubernetes/kubernetes/pull/96561), [@ialidzhikov](https://github.com/ialidzhikov)) [SIG Apps, Auth, Scheduling, Storage and Testing] -- The `apiserver_request_total` metric is promoted to stable status and no longer has a content-type dimensions, so any alerts/charts which presume the existence of this will fail. This is however, unlikely to be the case since it was effectively an unbounded dimension in the first place. ([#99788](https://github.com/kubernetes/kubernetes/pull/99788), [@logicalhan](https://github.com/logicalhan)) -- The default delegating authorization options now allow unauthenticated access to healthz, readyz, and livez. A system:masters user connecting to an authz delegator will not perform an authz check. ([#98325](https://github.com/kubernetes/kubernetes/pull/98325), [@deads2k](https://github.com/deads2k)) [SIG API Machinery, Auth, Cloud Provider and Scheduling] -- The deprecated feature gates `CSIDriverRegistry`, `BlockVolume` and `CSIBlockVolume` are now unconditionally enabled and can no longer be specified in component invocations. ([#98021](https://github.com/kubernetes/kubernetes/pull/98021), [@gavinfish](https://github.com/gavinfish)) [SIG Storage] -- The deprecated feature gates `RotateKubeletClientCertificate`, `AttachVolumeLimit`, `VolumePVCDataSource` and `EvenPodsSpread` are now unconditionally enabled and can no longer be specified in component invocations. ([#97306](https://github.com/kubernetes/kubernetes/pull/97306), [@gavinfish](https://github.com/gavinfish)) [SIG Node, Scheduling and Storage] -- The e2e suite can be instructed not to wait for pods in kube-system to be ready or for all nodes to be ready by passing `--allowed-not-ready-nodes=-1` when invoking the e2e.test program. This allows callers to run subsets of the e2e suite in scenarios other than perfectly healthy clusters. ([#98781](https://github.com/kubernetes/kubernetes/pull/98781), [@smarterclayton](https://github.com/smarterclayton)) [SIG Testing] -- The feature gates `WindowsGMSA` and `WindowsRunAsUserName` that are GA since v1.18 are now removed. ([#96531](https://github.com/kubernetes/kubernetes/pull/96531), [@ialidzhikov](https://github.com/ialidzhikov)) [SIG Node and Windows] -- The new `-gce-zones` flag on the `e2e.test` binary instructs tests that check for information about how the cluster interacts with the cloud to limit their queries to the provided zone list. If not specified, the current behavior of asking the cloud provider for all available zones in multi zone clusters is preserved. ([#98787](https://github.com/kubernetes/kubernetes/pull/98787), [@smarterclayton](https://github.com/smarterclayton)) [SIG API Machinery, Cluster Lifecycle and Testing] -- Update cri-tools to [v1.20.0](https://github.com/kubernetes-sigs/cri-tools/releases/tag/v1.20.0) ([#97967](https://github.com/kubernetes/kubernetes/pull/97967), [@rajibmitra](https://github.com/rajibmitra)) [SIG Cloud Provider] -- Windows nodes on GCE will take longer to start due to dependencies installed at node creation time. ([#98284](https://github.com/kubernetes/kubernetes/pull/98284), [@pjh](https://github.com/pjh)) [SIG Cloud Provider] -- `apiserver_storage_objects` (a newer version of `etcd_object_counts`) is promoted and marked as stable. ([#100082](https://github.com/kubernetes/kubernetes/pull/100082), [@logicalhan](https://github.com/logicalhan)) - -### Uncategorized - -- GCE L4 Loadbalancers now handle > 5 ports in service spec correctly. ([#99595](https://github.com/kubernetes/kubernetes/pull/99595), [@prameshj](https://github.com/prameshj)) [SIG Cloud Provider] -- The DownwardAPIHugePages feature is beta. Users may use the feature if all workers in their cluster are min 1.20 version. The feature will be enabled by default in all installations in 1.22. ([#99610](https://github.com/kubernetes/kubernetes/pull/99610), [@derekwaynecarr](https://github.com/derekwaynecarr)) [SIG Node] - -## Dependencies - -### Added -- github.com/go-errors/errors: [v1.0.1](https://github.com/go-errors/errors/tree/v1.0.1) -- github.com/gobuffalo/here: [v0.6.0](https://github.com/gobuffalo/here/tree/v0.6.0) -- github.com/google/shlex: [e7afc7f](https://github.com/google/shlex/tree/e7afc7f) -- github.com/markbates/pkger: [v0.17.1](https://github.com/markbates/pkger/tree/v0.17.1) -- github.com/moby/spdystream: [v0.2.0](https://github.com/moby/spdystream/tree/v0.2.0) -- github.com/monochromegane/go-gitignore: [205db1a](https://github.com/monochromegane/go-gitignore/tree/205db1a) -- github.com/niemeyer/pretty: [a10e7ca](https://github.com/niemeyer/pretty/tree/a10e7ca) -- github.com/xlab/treeprint: [a009c39](https://github.com/xlab/treeprint/tree/a009c39) -- go.starlark.net: 8dd3e2e -- golang.org/x/term: 6a3ed07 -- sigs.k8s.io/kustomize/api: v0.8.5 -- sigs.k8s.io/kustomize/cmd/config: v0.9.7 -- sigs.k8s.io/kustomize/kustomize/v4: v4.0.5 -- sigs.k8s.io/kustomize/kyaml: v0.10.15 - -### Changed -- dmitri.shuralyov.com/gpu/mtl: 666a987 → 28db891 -- github.com/Azure/go-autorest/autorest: [v0.11.1 → v0.11.12](https://github.com/Azure/go-autorest/autorest/compare/v0.11.1...v0.11.12) -- github.com/NYTimes/gziphandler: [56545f4 → v1.1.1](https://github.com/NYTimes/gziphandler/compare/56545f4...v1.1.1) -- github.com/cilium/ebpf: [1c8d4c9 → v0.2.0](https://github.com/cilium/ebpf/compare/1c8d4c9...v0.2.0) -- github.com/container-storage-interface/spec: [v1.2.0 → v1.3.0](https://github.com/container-storage-interface/spec/compare/v1.2.0...v1.3.0) -- github.com/containerd/console: [v1.0.0 → v1.0.1](https://github.com/containerd/console/compare/v1.0.0...v1.0.1) -- github.com/containerd/containerd: [v1.4.1 → v1.4.4](https://github.com/containerd/containerd/compare/v1.4.1...v1.4.4) -- github.com/coredns/corefile-migration: [v1.0.10 → v1.0.11](https://github.com/coredns/corefile-migration/compare/v1.0.10...v1.0.11) -- github.com/creack/pty: [v1.1.7 → v1.1.11](https://github.com/creack/pty/compare/v1.1.7...v1.1.11) -- github.com/docker/docker: [bd33bbf → v20.10.2+incompatible](https://github.com/docker/docker/compare/bd33bbf...v20.10.2) -- github.com/go-logr/logr: [v0.2.0 → v0.4.0](https://github.com/go-logr/logr/compare/v0.2.0...v0.4.0) -- github.com/go-openapi/spec: [v0.19.3 → v0.19.5](https://github.com/go-openapi/spec/compare/v0.19.3...v0.19.5) -- github.com/go-openapi/strfmt: [v0.19.3 → v0.19.5](https://github.com/go-openapi/strfmt/compare/v0.19.3...v0.19.5) -- github.com/go-openapi/validate: [v0.19.5 → v0.19.8](https://github.com/go-openapi/validate/compare/v0.19.5...v0.19.8) -- github.com/gogo/protobuf: [v1.3.1 → v1.3.2](https://github.com/gogo/protobuf/compare/v1.3.1...v1.3.2) -- github.com/golang/mock: [v1.4.1 → v1.4.4](https://github.com/golang/mock/compare/v1.4.1...v1.4.4) -- github.com/google/cadvisor: [v0.38.5 → v0.39.0](https://github.com/google/cadvisor/compare/v0.38.5...v0.39.0) -- github.com/heketi/heketi: [c2e2a4a → v10.2.0+incompatible](https://github.com/heketi/heketi/compare/c2e2a4a...v10.2.0) -- github.com/kisielk/errcheck: [v1.2.0 → v1.5.0](https://github.com/kisielk/errcheck/compare/v1.2.0...v1.5.0) -- github.com/konsorten/go-windows-terminal-sequences: [v1.0.3 → v1.0.2](https://github.com/konsorten/go-windows-terminal-sequences/compare/v1.0.3...v1.0.2) -- github.com/kr/text: [v0.1.0 → v0.2.0](https://github.com/kr/text/compare/v0.1.0...v0.2.0) -- github.com/mattn/go-runewidth: [v0.0.2 → v0.0.7](https://github.com/mattn/go-runewidth/compare/v0.0.2...v0.0.7) -- github.com/miekg/dns: [v1.1.4 → v1.1.35](https://github.com/miekg/dns/compare/v1.1.4...v1.1.35) -- github.com/moby/sys/mountinfo: [v0.1.3 → v0.4.0](https://github.com/moby/sys/mountinfo/compare/v0.1.3...v0.4.0) -- github.com/moby/term: [672ec06 → df9cb8a](https://github.com/moby/term/compare/672ec06...df9cb8a) -- github.com/mrunalp/fileutils: [abd8a0e → v0.5.0](https://github.com/mrunalp/fileutils/compare/abd8a0e...v0.5.0) -- github.com/olekukonko/tablewriter: [a0225b3 → v0.0.4](https://github.com/olekukonko/tablewriter/compare/a0225b3...v0.0.4) -- github.com/opencontainers/runc: [v1.0.0-rc92 → v1.0.0-rc93](https://github.com/opencontainers/runc/compare/v1.0.0-rc92...v1.0.0-rc93) -- github.com/opencontainers/runtime-spec: [4d89ac9 → e6143ca](https://github.com/opencontainers/runtime-spec/compare/4d89ac9...e6143ca) -- github.com/opencontainers/selinux: [v1.6.0 → v1.8.0](https://github.com/opencontainers/selinux/compare/v1.6.0...v1.8.0) -- github.com/sergi/go-diff: [v1.0.0 → v1.1.0](https://github.com/sergi/go-diff/compare/v1.0.0...v1.1.0) -- github.com/sirupsen/logrus: [v1.6.0 → v1.7.0](https://github.com/sirupsen/logrus/compare/v1.6.0...v1.7.0) -- github.com/syndtr/gocapability: [d983527 → 42c35b4](https://github.com/syndtr/gocapability/compare/d983527...42c35b4) -- github.com/willf/bitset: [d5bec33 → v1.1.11](https://github.com/willf/bitset/compare/d5bec33...v1.1.11) -- github.com/yuin/goldmark: [v1.1.27 → v1.2.1](https://github.com/yuin/goldmark/compare/v1.1.27...v1.2.1) -- golang.org/x/crypto: 7f63de1 → 5ea612d -- golang.org/x/exp: 6cc2880 → 85be41e -- golang.org/x/mobile: d2bd2a2 → e6ae53a -- golang.org/x/mod: v0.3.0 → ce943fd -- golang.org/x/net: 69a7880 → 3d97a24 -- golang.org/x/sync: cd5d95a → 67f06af -- golang.org/x/sys: 5cba982 → a50acf3 -- golang.org/x/time: 3af7569 → f8bda1e -- golang.org/x/tools: c1934b7 → v0.1.0 -- gopkg.in/check.v1: 41f04d3 → 8fa4692 -- gopkg.in/yaml.v2: v2.2.8 → v2.4.0 -- gotest.tools/v3: v3.0.2 → v3.0.3 -- k8s.io/gengo: 83324d8 → b6c5ce2 -- k8s.io/klog/v2: v2.4.0 → v2.8.0 -- k8s.io/kube-openapi: d219536 → 591a79e -- k8s.io/system-validators: v1.2.0 → v1.4.0 -- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.14 → v0.0.15 -- sigs.k8s.io/structured-merge-diff/v4: v4.0.2 → v4.1.0 - -### Removed -- github.com/codegangsta/negroni: [v1.0.0](https://github.com/codegangsta/negroni/tree/v1.0.0) -- github.com/docker/spdystream: [449fdfc](https://github.com/docker/spdystream/tree/449fdfc) -- github.com/golangplus/bytes: [45c989f](https://github.com/golangplus/bytes/tree/45c989f) -- github.com/golangplus/fmt: [2a5d6d7](https://github.com/golangplus/fmt/tree/2a5d6d7) -- github.com/gorilla/context: [v1.1.1](https://github.com/gorilla/context/tree/v1.1.1) -- github.com/kr/pty: [v1.1.5](https://github.com/kr/pty/tree/v1.1.5) -- rsc.io/quote/v3: v3.1.0 -- rsc.io/sampler: v1.3.0 -- sigs.k8s.io/kustomize: v2.0.3+incompatible - - - -# v1.21.0-rc.0 - - -## Downloads for v1.21.0-rc.0 - -### Source Code - -filename | sha512 hash --------- | ----------- -[kubernetes.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes.tar.gz) | ef53a41955d6f8a8d2a94636af98b55d633fb8a5081517559039e019b3dd65c9d10d4e7fa297ab88a7865d772f3eecf72e7b0eeba5e87accb4000c91da33e148 -[kubernetes-src.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-src.tar.gz) | 9335a01b50d351776d3b8d00c07a5233844c51d307e361fa7e55a0620c1cb8b699e43eacf45ae9cafd8cbc44752e6987450c528a5bede8204706b7673000b5fc - -### Client binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-darwin-amd64.tar.gz) | 964135e43234cee275c452f5f06fb6d2bcd3cff3211a0d50fa35fff1cc4446bc5a0ac5125405dadcfb6596cb152afe29fabf7aad5b35b100e1288db890b70f8e -[kubernetes-client-darwin-arm64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-darwin-arm64.tar.gz) | 50d782abaa4ded5e706b3192d87effa953ceabbd7d91e3d48b0c1fa2206a1963a909c14b923560f5d09cac2c7392edc5f38a13fbf1e9a40bc94e3afe8de10622 -[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-linux-386.tar.gz) | 72af5562f24184a2d7c27f95fa260470da979fbdcacce39a372f8f3add2991d7af8bc78f4e1dbe7a0f97e3f559b149b72a51491d3b13008da81872ee50f02f37 -[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-linux-amd64.tar.gz) | 1eddb8f6b51e005bc6f7b519d036cbe3d2f6d97dbf7d212dd933fb56354c29f222d050519115a9bcf94555aef095db7cf763469e47bb4ae3c6c07f97edf437cb -[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-linux-arm.tar.gz) | 670f8ca60ea3cf0bb3262a772715e0ea735fccda6a92f3186299361dc455b304ae177d4017e0b67bbfa4a95e36f4cc3f7eb335e2a5130c93ac3fba2aff4519bf -[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-linux-arm64.tar.gz) | a69a47907cff138ba393d8c87044fd95d97f3ca8f35d301b50742e2801ad7c229d99d6667971091f65825eb51854d585be0dd7421670110b1aa567e67e7ab4b3 -[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-linux-ppc64le.tar.gz) | b929feade94b71c81908abdcd4343b1e1e20098fd65e10d4d02585ad649d292d06f52c7ddc349efa188ce5b093e703c7aa9582c6ae5a69699adb87bbf5350243 -[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-linux-s390x.tar.gz) | 899d1470e412282cf289d8e24806d1a08c62ec0151f345ae3c9e497cc7bc0feab76498de4dd897d6adcdfa0c422e6b1a37e25d928669030f53457fd69d6e7df7 -[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-windows-386.tar.gz) | 9f0bc90a269eabd06fe4f637b5172a3a6a7d3de26de0d66504c2e1f2093083c584ea39031db6075a7da7a86b98c48bed25aa88d4ac09060b38692c6a5b637078 -[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-client-windows-amd64.tar.gz) | 05c8cc10188a1294b0d51d052942742a9b26411a08ec73494bf0e728a8a167e0a7863bdfc8864e76a371b584380098381805341e18b4b283b5d0cf298d5f7c7c - -### Server binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-server-linux-amd64.tar.gz) | 355f278728ef7ac7eb2f5568c99c1429543c6302bbd0ed3bd0378c08116075e56ae850a49241313f078e2392702672ec6c9b70c8d97b4f2f5f4bee36828a63ba -[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-server-linux-arm.tar.gz) | 9ac02c2825e2fd4e92f0c0f67180c67c24e32841ccbabc82284bf6293727ffecfae65e8a42b527c2a7ca482752384928eb65c2a1706144ae7819a6b3a1ab291c -[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-server-linux-arm64.tar.gz) | eb412453da03c82a9248412c8ccf4d4baa1fbfa81edd8d4f81d28969b40a3727e18934accc68f643d253446c58ffd2623292402495480b3d4b2a837b5318b957 -[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-server-linux-ppc64le.tar.gz) | 07da2812c35bbc427ee5b4a0b601c3ae271e0d50ab0dd4c5c25399f43506fa2a187642eb9d4d2085df7b90264d48ea2f31088af87d9efa7eb2e87f91e1fdbde4 -[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-server-linux-s390x.tar.gz) | 3b79442a3d6e389c4ff105922a8e49994c0b6c088d2c501bd8c78d9f9e814902f5bb72c8f9c89380b750fda9b3a336759b9b68f11d70bef4f0e984564a95c29e - -### Node binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-node-linux-amd64.tar.gz) | f12edf1faf5f07de1ebc5a8626601c12927902e10aca3f11e398637382fdf55365dbd9a0ef38858553fb7569495ae2cf68f155dd2e49b85b27d76fb599bb92e4 -[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-node-linux-arm.tar.gz) | 4fba8fc4e2102f07fb778aab597ec7231ea65c35e1aa618fe98b707b64a931237bd842c173e9120326e4d9deb983bb3917176762bba2212612bbc09d6e2105c4 -[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-node-linux-arm64.tar.gz) | a2e1be5459a8346839970faf4e7ebdb8ab9f3273e02babf1f3199b06bdb67434a2d18fcd1628cf1b989756e99d8dad6624a455b9db11d50f51f509f4df5c27da -[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-node-linux-ppc64le.tar.gz) | 16d2c1cc295474fc49fe9a827ddd73e81bdd6b76af7074987b90250023f99b6d70bf474e204c7d556802111984fcb3a330740b150bdc7970d0e3634eb94a1665 -[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-node-linux-s390x.tar.gz) | 9dc6faa6cd007b13dfce703f3e271f80adcc4e029c90a4a9b4f2f143b9756f2893f8af3d7c2cf813f2bd6731cffd87d15d4229456c1685939f65bf467820ec6e -[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-rc.0/kubernetes-node-windows-amd64.tar.gz) | f8bac2974c9142bfb80cd5eadeda79f79f27b78899a4e6e71809b795c708824ba442be83fdbadb98e01c3823dd8350776358258a205e851ed045572923cacba7 - -## Changelog since v1.21.0-beta.1 - -## Urgent Upgrade Notes - -### (No, really, you MUST read this before you upgrade) - - - Migrated pkg/kubelet/cm/cpuset/cpuset.go to structured logging. Exit code changed from 255 to 1. ([#100007](https://github.com/kubernetes/kubernetes/pull/100007), [@utsavoza](https://github.com/utsavoza)) [SIG Instrumentation and Node] - -## Changes by Kind - -### API Change - -- Add Probe-level terminationGracePeriodSeconds field ([#99375](https://github.com/kubernetes/kubernetes/pull/99375), [@ehashman](https://github.com/ehashman)) [SIG API Machinery, Apps, Node and Testing] -- CSIServiceAccountToken is Beta now ([#99298](https://github.com/kubernetes/kubernetes/pull/99298), [@zshihang](https://github.com/zshihang)) [SIG Auth, Storage and Testing] -- Discovery.k8s.io/v1beta1 EndpointSlices are deprecated in favor of discovery.k8s.io/v1, and will no longer be served in Kubernetes v1.25. ([#100472](https://github.com/kubernetes/kubernetes/pull/100472), [@liggitt](https://github.com/liggitt)) [SIG Network] -- FieldManager no longer owns fields that get reset before the object is persisted (e.g. "status wiping"). ([#99661](https://github.com/kubernetes/kubernetes/pull/99661), [@kevindelgado](https://github.com/kevindelgado)) [SIG API Machinery, Auth and Testing] -- Generic ephemeral volumes are beta. ([#99643](https://github.com/kubernetes/kubernetes/pull/99643), [@pohly](https://github.com/pohly)) [SIG API Machinery, Apps, Auth, CLI, Node, Storage and Testing] -- Implement the GetAvailableResources in the podresources API. ([#95734](https://github.com/kubernetes/kubernetes/pull/95734), [@fromanirh](https://github.com/fromanirh)) [SIG Instrumentation, Node and Testing] -- The Endpoints controller will now set the `endpoints.kubernetes.io/over-capacity` annotation to "warning" when an Endpoints resource contains more than 1000 addresses. In a future release, the controller will truncate Endpoints that exceed this limit. The EndpointSlice API can be used to support significantly larger number of addresses. ([#99975](https://github.com/kubernetes/kubernetes/pull/99975), [@robscott](https://github.com/robscott)) [SIG Apps and Network] -- The PodDisruptionBudget API has been promoted to policy/v1 with no schema changes. The only functional change is that an empty selector (`{}`) written to a policy/v1 PodDisruptionBudget now selects all pods in the namespace. The behavior of the policy/v1beta1 API remains unchanged. The policy/v1beta1 PodDisruptionBudget API is deprecated and will no longer be served in 1.25+. ([#99290](https://github.com/kubernetes/kubernetes/pull/99290), [@mortent](https://github.com/mortent)) [SIG API Machinery, Apps, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Scheduling and Testing] -- Topology Aware Hints are now available in alpha and can be enabled with the `TopologyAwareHints` feature gate. ([#99522](https://github.com/kubernetes/kubernetes/pull/99522), [@robscott](https://github.com/robscott)) [SIG API Machinery, Apps, Auth, Instrumentation, Network and Testing] - -### Feature - -- Add e2e test to validate performance metrics of volume lifecycle operations ([#94334](https://github.com/kubernetes/kubernetes/pull/94334), [@RaunakShah](https://github.com/RaunakShah)) [SIG Storage and Testing] -- EmptyDir memory backed volumes are sized as the the minimum of pod allocatable memory on a host and an optional explicit user provided value. ([#100319](https://github.com/kubernetes/kubernetes/pull/100319), [@derekwaynecarr](https://github.com/derekwaynecarr)) [SIG Node] -- Enables Kubelet to check volume condition and log events to corresponding pods. ([#99284](https://github.com/kubernetes/kubernetes/pull/99284), [@fengzixu](https://github.com/fengzixu)) [SIG Apps, Instrumentation, Node and Storage] -- Introduce a churn operator to scheduler perf testing framework. ([#98900](https://github.com/kubernetes/kubernetes/pull/98900), [@Huang-Wei](https://github.com/Huang-Wei)) [SIG Scheduling and Testing] -- Kubernetes is now built with Golang 1.16.1 ([#100106](https://github.com/kubernetes/kubernetes/pull/100106), [@justaugustus](https://github.com/justaugustus)) [SIG Cloud Provider, Instrumentation, Release and Testing] -- Migrated pkg/kubelet/cm/devicemanager to structured logging ([#99976](https://github.com/kubernetes/kubernetes/pull/99976), [@knabben](https://github.com/knabben)) [SIG Instrumentation and Node] -- Migrated pkg/kubelet/cm/memorymanager to structured logging ([#99974](https://github.com/kubernetes/kubernetes/pull/99974), [@knabben](https://github.com/knabben)) [SIG Instrumentation and Node] -- Migrated pkg/kubelet/cm/topologymanager to structure logging ([#99969](https://github.com/kubernetes/kubernetes/pull/99969), [@knabben](https://github.com/knabben)) [SIG Instrumentation and Node] -- Rename metrics `etcd_object_counts` to `apiserver_storage_object_counts` and mark it as stable. The original `etcd_object_counts` metrics name is marked as "Deprecated" and will be removed in the future. ([#99785](https://github.com/kubernetes/kubernetes/pull/99785), [@erain](https://github.com/erain)) [SIG API Machinery, Instrumentation and Testing] -- Update pause container to run as pseudo user and group `65535:65535`. This implies the release of version 3.5 of the container images. ([#97963](https://github.com/kubernetes/kubernetes/pull/97963), [@saschagrunert](https://github.com/saschagrunert)) [SIG CLI, Cloud Provider, Cluster Lifecycle, Node, Release, Security and Testing] -- Users might specify the `kubectl.kubernetes.io/default-exec-container` annotation in a Pod to preselect container for kubectl commands. ([#99833](https://github.com/kubernetes/kubernetes/pull/99833), [@mengjiao-liu](https://github.com/mengjiao-liu)) [SIG CLI] - -### Bug or Regression - -- Add ability to skip OpenAPI handler installation to the GenericAPIServer ([#100341](https://github.com/kubernetes/kubernetes/pull/100341), [@kevindelgado](https://github.com/kevindelgado)) [SIG API Machinery] -- Count pod overhead against an entity's ResourceQuota ([#99600](https://github.com/kubernetes/kubernetes/pull/99600), [@gjkim42](https://github.com/gjkim42)) [SIG API Machinery and Node] -- EndpointSlice controllers are less likely to create duplicate EndpointSlices. ([#100103](https://github.com/kubernetes/kubernetes/pull/100103), [@robscott](https://github.com/robscott)) [SIG Apps and Network] -- Ensure only one LoadBalancer rule is created when HA mode is enabled ([#99825](https://github.com/kubernetes/kubernetes/pull/99825), [@feiskyer](https://github.com/feiskyer)) [SIG Cloud Provider] -- Fixed a race condition on API server startup ensuring previously created webhook configurations are effective before the first write request is admitted. ([#95783](https://github.com/kubernetes/kubernetes/pull/95783), [@roycaihw](https://github.com/roycaihw)) [SIG API Machinery] -- Fixed authentication_duration_seconds metric. Previously it included whole apiserver request duration. ([#99944](https://github.com/kubernetes/kubernetes/pull/99944), [@marseel](https://github.com/marseel)) [SIG API Machinery, Instrumentation and Scalability] -- Fixes issue where inline AzueFile secrets could not be accessed from the pod's namespace. ([#100563](https://github.com/kubernetes/kubernetes/pull/100563), [@msau42](https://github.com/msau42)) [SIG Storage] -- Improve speed of vSphere PV provisioning and reduce number of API calls ([#100054](https://github.com/kubernetes/kubernetes/pull/100054), [@gnufied](https://github.com/gnufied)) [SIG Cloud Provider and Storage] -- Kubectl: Fixed panic when describing an ingress backend without an API Group ([#100505](https://github.com/kubernetes/kubernetes/pull/100505), [@lauchokyip](https://github.com/lauchokyip)) [SIG CLI] -- Kubectl: fix case of age column in describe node (#96963, @bl-ue) ([#96963](https://github.com/kubernetes/kubernetes/pull/96963), [@bl-ue](https://github.com/bl-ue)) [SIG CLI] -- Kubelet.exe on Windows now checks that the process running as administrator and the executing user account is listed in the built-in administrators group. This is the equivalent to checking the process is running as uid 0. ([#96616](https://github.com/kubernetes/kubernetes/pull/96616), [@perithompson](https://github.com/perithompson)) [SIG Node and Windows] -- Kubelet: Fixed the bug of getting the number of cpu when the number of cpu logical processors is more than 64 in windows ([#97378](https://github.com/kubernetes/kubernetes/pull/97378), [@hwdef](https://github.com/hwdef)) [SIG Node and Windows] -- Pass `KUBE_BUILD_CONFORMANCE=y` to the package-tarballs to reenable building the conformance tarballs. ([#100571](https://github.com/kubernetes/kubernetes/pull/100571), [@puerco](https://github.com/puerco)) [SIG Release] -- Pod Log stats for windows now reports metrics ([#99221](https://github.com/kubernetes/kubernetes/pull/99221), [@jsturtevant](https://github.com/jsturtevant)) [SIG Node, Storage, Testing and Windows] - -### Other (Cleanup or Flake) - -- A new storage E2E testsuite covers CSIStorageCapacity publishing if a driver opts into the test. ([#100537](https://github.com/kubernetes/kubernetes/pull/100537), [@pohly](https://github.com/pohly)) [SIG Storage and Testing] -- Convert cmd/kubelet/app/server.go to structured logging ([#98334](https://github.com/kubernetes/kubernetes/pull/98334), [@wawa0210](https://github.com/wawa0210)) [SIG Node] -- If kube-apiserver enabled goaway feature, clients required golang 1.15.8 or 1.16+ version to avoid un-expected data race issue. ([#98809](https://github.com/kubernetes/kubernetes/pull/98809), [@answer1991](https://github.com/answer1991)) [SIG API Machinery] -- Increased CSINodeIDMaxLength from 128 bytes to 192 bytes. ([#98753](https://github.com/kubernetes/kubernetes/pull/98753), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Apps and Storage] -- Migrate `pkg/kubelet/pluginmanager` to structured logging ([#99885](https://github.com/kubernetes/kubernetes/pull/99885), [@qingwave](https://github.com/qingwave)) [SIG Node] -- Migrate `pkg/kubelet/preemption/preemption.go` and `pkg/kubelet/logs/container_log_manager.go` to structured logging ([#99848](https://github.com/kubernetes/kubernetes/pull/99848), [@qingwave](https://github.com/qingwave)) [SIG Node] -- Migrate `pkg/kubelet/(cri)` to structured logging ([#99006](https://github.com/kubernetes/kubernetes/pull/99006), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085)) [SIG Node] -- Migrate `pkg/kubelet/(node, pod)` to structured logging ([#98847](https://github.com/kubernetes/kubernetes/pull/98847), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085)) [SIG Node] -- Migrate `pkg/kubelet/(volume,container)` to structured logging ([#98850](https://github.com/kubernetes/kubernetes/pull/98850), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085)) [SIG Node] -- Migrate `pkg/kubelet/kubelet_node_status.go` to structured logging ([#98154](https://github.com/kubernetes/kubernetes/pull/98154), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085)) [SIG Node and Release] -- Migrate `pkg/kubelet/lifecycle,oom` to structured logging ([#99479](https://github.com/kubernetes/kubernetes/pull/99479), [@mengjiao-liu](https://github.com/mengjiao-liu)) [SIG Instrumentation and Node] -- Migrate cmd/kubelet/+ pkg/kubelet/cadvisor/cadvisor_linux.go + pkg/kubelet/cri/remote/util/util_unix.go + pkg/kubelet/images/image_manager.go to structured logging ([#99994](https://github.com/kubernetes/kubernetes/pull/99994), [@AfrouzMashayekhi](https://github.com/AfrouzMashayekhi)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/cm/container_manager_linux.go and pkg/kubelet/cm/container_manager_stub.go to structured logging ([#100001](https://github.com/kubernetes/kubernetes/pull/100001), [@shiyajuan123](https://github.com/shiyajuan123)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/cm/cpumanage/{topology/togit pology.go, policy_none.go, cpu_assignment.go} to structured logging ([#100163](https://github.com/kubernetes/kubernetes/pull/100163), [@lala123912](https://github.com/lala123912)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/cm/cpumanager/state to structured logging ([#99563](https://github.com/kubernetes/kubernetes/pull/99563), [@jmguzik](https://github.com/jmguzik)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/config to structured logging ([#100002](https://github.com/kubernetes/kubernetes/pull/100002), [@AfrouzMashayekhi](https://github.com/AfrouzMashayekhi)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/kubelet.go to structured logging ([#99861](https://github.com/kubernetes/kubernetes/pull/99861), [@navidshaikh](https://github.com/navidshaikh)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/kubeletconfig to structured logging ([#100265](https://github.com/kubernetes/kubernetes/pull/100265), [@ehashman](https://github.com/ehashman)) [SIG Node] -- Migrate pkg/kubelet/kuberuntime to structured logging ([#99970](https://github.com/kubernetes/kubernetes/pull/99970), [@krzysiekg](https://github.com/krzysiekg)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/prober to structured logging ([#99830](https://github.com/kubernetes/kubernetes/pull/99830), [@krzysiekg](https://github.com/krzysiekg)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/winstats to structured logging ([#99855](https://github.com/kubernetes/kubernetes/pull/99855), [@hexxdump](https://github.com/hexxdump)) [SIG Instrumentation and Node] -- Migrate probe log messages to structured logging ([#97093](https://github.com/kubernetes/kubernetes/pull/97093), [@aldudko](https://github.com/aldudko)) [SIG Instrumentation and Node] -- Migrate remaining kubelet files to structured logging ([#100196](https://github.com/kubernetes/kubernetes/pull/100196), [@ehashman](https://github.com/ehashman)) [SIG Instrumentation and Node] -- `apiserver_storage_objects` (a newer version of `etcd_object_counts) is promoted and marked as stable. ([#100082](https://github.com/kubernetes/kubernetes/pull/100082), [@logicalhan](https://github.com/logicalhan)) [SIG API Machinery, Instrumentation and Testing] - -## Dependencies - -### Added -_Nothing has changed._ - -### Changed -- github.com/cilium/ebpf: [1c8d4c9 → v0.2.0](https://github.com/cilium/ebpf/compare/1c8d4c9...v0.2.0) -- github.com/containerd/console: [v1.0.0 → v1.0.1](https://github.com/containerd/console/compare/v1.0.0...v1.0.1) -- github.com/containerd/containerd: [v1.4.1 → v1.4.4](https://github.com/containerd/containerd/compare/v1.4.1...v1.4.4) -- github.com/creack/pty: [v1.1.9 → v1.1.11](https://github.com/creack/pty/compare/v1.1.9...v1.1.11) -- github.com/docker/docker: [bd33bbf → v20.10.2+incompatible](https://github.com/docker/docker/compare/bd33bbf...v20.10.2) -- github.com/google/cadvisor: [v0.38.8 → v0.39.0](https://github.com/google/cadvisor/compare/v0.38.8...v0.39.0) -- github.com/konsorten/go-windows-terminal-sequences: [v1.0.3 → v1.0.2](https://github.com/konsorten/go-windows-terminal-sequences/compare/v1.0.3...v1.0.2) -- github.com/moby/sys/mountinfo: [v0.1.3 → v0.4.0](https://github.com/moby/sys/mountinfo/compare/v0.1.3...v0.4.0) -- github.com/moby/term: [672ec06 → df9cb8a](https://github.com/moby/term/compare/672ec06...df9cb8a) -- github.com/mrunalp/fileutils: [abd8a0e → v0.5.0](https://github.com/mrunalp/fileutils/compare/abd8a0e...v0.5.0) -- github.com/opencontainers/runc: [v1.0.0-rc92 → v1.0.0-rc93](https://github.com/opencontainers/runc/compare/v1.0.0-rc92...v1.0.0-rc93) -- github.com/opencontainers/runtime-spec: [4d89ac9 → e6143ca](https://github.com/opencontainers/runtime-spec/compare/4d89ac9...e6143ca) -- github.com/opencontainers/selinux: [v1.6.0 → v1.8.0](https://github.com/opencontainers/selinux/compare/v1.6.0...v1.8.0) -- github.com/sirupsen/logrus: [v1.6.0 → v1.7.0](https://github.com/sirupsen/logrus/compare/v1.6.0...v1.7.0) -- github.com/syndtr/gocapability: [d983527 → 42c35b4](https://github.com/syndtr/gocapability/compare/d983527...42c35b4) -- github.com/willf/bitset: [d5bec33 → v1.1.11](https://github.com/willf/bitset/compare/d5bec33...v1.1.11) -- gotest.tools/v3: v3.0.2 → v3.0.3 -- k8s.io/klog/v2: v2.5.0 → v2.8.0 -- sigs.k8s.io/structured-merge-diff/v4: v4.0.3 → v4.1.0 - -### Removed -_Nothing has changed._ - - - -# v1.21.0-beta.1 - - -## Downloads for v1.21.0-beta.1 - -### Source Code - -filename | sha512 hash --------- | ----------- -[kubernetes.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes.tar.gz) | c9f4f25242e319e5d90f49d26f239a930aad69677c0f3c2387c56bb13482648a26ed234be2bfe2352508f35010e3eb6d3b127c31a9f24fa1e53ac99c38520fe4 -[kubernetes-src.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-src.tar.gz) | 255357db8fa160cab2187658906b674a8b0d9b9a5b5f688cc7b69dc124f5da00362c6cc18ae9b80f7ddb3da6f64c2ab2f12fb9b63a4e063c7366a5375b175cda - -### Client binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-darwin-amd64.tar.gz) | 02efd389c8126456416fd2c7ea25c3cc30f612649ad91f631f068d6c0e5e539484d3763cb9a8645ad6b8077e4fcd1552a659d7516ebc4ce6828cf823b65c3016 -[kubernetes-client-darwin-arm64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-darwin-arm64.tar.gz) | ac90dcd1699d1d7ff9c8342d481f6d0d97ccdc3ec501a56dc7c9e1898a8f77f712bf66942d304bfe581b5494f13e3efa211865de88f89749780e9e26e673dbdb -[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-linux-386.tar.gz) | cce5fb84cc7a1ee664f89d8ad3064307c51c044e9ddd2ae5a004939b69d3b3ef6f29acc5782e27d0c8f0d6d3d9c96e922f5d1b99d210ca3e754666d775df9f0c -[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-linux-amd64.tar.gz) | 2e93bbd2e60ad7cd8fe495115e96c55b1dc8facd100a827ef9c197a732679b60cceb9ea7bf92a1f5e328c3b8adfa8d3922cbc5d8370e374f3381b83f5b877b4f -[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-linux-arm.tar.gz) | 23f03b6a8fa9decce9b89a2c1bd3dae6d0b2f9e533e35a79e2c5a29326a165259677594ae83c877219a21bdb95557a284e55f4eec12954742794579c89a7d7e5 -[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-linux-arm64.tar.gz) | 3acf3101b46568b0ded6b90f13df0e918870d6812dc1a584903ddb8ba146484a204b9e442f863df47c7d4dab043fd9f7294c5510d3eb09004993d6d3b1e9e13c -[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-linux-ppc64le.tar.gz) | f749198df69577f62872d3096138a1b8969ec6b1636eb68eb56640bf33cf5f97a11df4363462749a1c0dc3ccbb8ae76c5d66864bf1c5cf7e52599caaf498e504 -[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-linux-s390x.tar.gz) | 3f6c0189d59fca22cdded3a02c672ef703d17e6ab0831e173a870e14ccec436c142600e9fc35b403571b6906f2be8d18d38d33330f7caada971bbe1187b388f6 -[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-windows-386.tar.gz) | 03d92371c425cf331c80807c0ac56f953be304fc6719057258a363d527d186d610e1d4b4d401b34128062983265c2e21f2d2389231aa66a6f5787eee78142cf6 -[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-client-windows-amd64.tar.gz) | 489ece0c886a025ca3a25d28518637a5a824ea6544e7ef8778321036f13c8909a978ad4ceca966cec1e1cda99f25ca78bfd37460d1231c77436d216d43c872ad - -### Server binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-server-linux-amd64.tar.gz) | 2e95cb31d5afcb6842c41d25b7d0c18dd7e65693b2d93c8aa44e5275f9c6201e1a67685c7a8ddefa334babb04cb559d26e39b6a18497695a07dc270568cae108 -[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-server-linux-arm.tar.gz) | 2927e82b98404c077196ce3968f3afd51a7576aa56d516019bd3976771c0213ba01e78da5b77478528e770da0d334e9457995fafb98820ed68b2ee34beb68856 -[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-server-linux-arm64.tar.gz) | e0f7aea3ea598214a9817bc04949389cb7e4e7b9503141a590ef48c0b681fe44a4243ebc6280752fa41aa1093149b3ee1bcef7664edb746097a342281825430b -[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-server-linux-ppc64le.tar.gz) | c011f7eb01294e9ba5d5ced719068466f88ed595dcb8d554a36a4dd5118fb6b3d6bafe8bf89aa2d42988e69793ed777ba77b8876c6ec74f898a43cfce1f61bf4 -[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-server-linux-s390x.tar.gz) | 15f6683e7f16caab7eebead2b7c15799460abbf035a43de0b75f96b0be19908f58add98a777a0cca916230d60cf6bfe3fee92b9dcff50274b1e37c243c157969 - -### Node binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-node-linux-amd64.tar.gz) | ed58679561197110f366b9109f7afd62c227bfc271918ccf3eea203bb2ab6428eb5db4dd6c965f202a8a636f66da199470269b863815809b99d53d2fa47af2ea -[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-node-linux-arm.tar.gz) | 7e6c7f1957fcdecec8fef689c5019edbc0d0c11d22dafbfef0a07121d10d8f6273644f73511bd06a9a88b04d81a940bd6645ffb5711422af64af547a45c76273 -[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-node-linux-arm64.tar.gz) | a3618f29967e7a1574917a67f0296e65780321eda484b99aa32bfd4dc9b35acdefce33da952ac52dfb509fbac5bf700cf177431fad2ab4adcab0544538939faa -[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-node-linux-ppc64le.tar.gz) | 326d3eb521b41bdf489912177f70b8cdd7cd828bb9b3d847ed3694eb27e457f24e0a88b8e51b726eee39800a3c5a40c1b30e3a8ec4a34d8041b3d8ef05d1b749 -[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-node-linux-s390x.tar.gz) | 022d05ebaa66a0332c4fe18cdaf23d14c2c7e4d1f2af7f27baaf1eb042e6890dc3434b4ac8ba58c35d590717956f8c3458112685aff4938b94b18e263c3f4256 -[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.1/kubernetes-node-windows-amd64.tar.gz) | fa691ed93f07af6bc1cf57e20a30580d6c528f88e5fea3c14f39c1820969dc5a0eb476c5b87b288593d0c086c4dd93aff6165082393283c3f46c210f9bb66d61 - -## Changelog since v1.21.0-beta.0 - -## Urgent Upgrade Notes - -### (No, really, you MUST read this before you upgrade) - - - Kubeadm: during "init" an empty cgroupDriver value in the KubeletConfiguration is now always set to "systemd" unless the user is explicit about it. This requires existing machine setups to configure the container runtime to use the "systemd" driver. Documentation on this topic can be found here: https://kubernetes.io/docs/setup/production-environment/container-runtimes/. When upgrading existing clusters / nodes using "kubeadm upgrade" the old cgroupDriver value is preserved, but in 1.22 this change will also apply to "upgrade". For more information on migrating to the "systemd" driver or remaining on the "cgroupfs" driver see: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/. ([#99471](https://github.com/kubernetes/kubernetes/pull/99471), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle] - - Migrate `pkg/kubelet/(dockershim, network)` to structured logging - Exit code changed from 255 to 1 ([#98939](https://github.com/kubernetes/kubernetes/pull/98939), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085)) [SIG Network and Node] - - Migrate `pkg/kubelet/certificate` to structured logging - Exit code changed from 255 to 1 ([#98993](https://github.com/kubernetes/kubernetes/pull/98993), [@SataQiu](https://github.com/SataQiu)) [SIG Auth and Node] - - Newly provisioned PVs by EBS plugin will no longer use the deprecated "failure-domain.beta.kubernetes.io/zone" and "failure-domain.beta.kubernetes.io/region" labels. It will use "topology.kubernetes.io/zone" and "topology.kubernetes.io/region" labels instead. ([#99130](https://github.com/kubernetes/kubernetes/pull/99130), [@ayberk](https://github.com/ayberk)) [SIG Cloud Provider, Storage and Testing] - - Newly provisioned PVs by OpenStack Cinder plugin will no longer use the deprecated "failure-domain.beta.kubernetes.io/zone" and "failure-domain.beta.kubernetes.io/region" labels. It will use "topology.kubernetes.io/zone" and "topology.kubernetes.io/region" labels instead. ([#99719](https://github.com/kubernetes/kubernetes/pull/99719), [@jsafrane](https://github.com/jsafrane)) [SIG Cloud Provider and Storage] - - OpenStack Cinder CSI migration is on by default, Clinder CSI driver must be installed on clusters on OpenStack for Cinder volumes to work. ([#98538](https://github.com/kubernetes/kubernetes/pull/98538), [@dims](https://github.com/dims)) [SIG Storage] - - Package pkg/kubelet/server migrated to structured logging - Exit code changed from 255 to 1 ([#99838](https://github.com/kubernetes/kubernetes/pull/99838), [@adisky](https://github.com/adisky)) [SIG Node] - - Pkg/kubelet/kuberuntime/kuberuntime_manager.go migrated to structured logging - Exit code changed from 255 to 1 ([#99841](https://github.com/kubernetes/kubernetes/pull/99841), [@adisky](https://github.com/adisky)) [SIG Instrumentation and Node] - -## Changes by Kind - -### Deprecation - -- Kubeadm: the deprecated kube-dns is no longer supported as an option. If "ClusterConfiguration.dns.type" is set to "kube-dns" kubeadm will now throw an error. ([#99646](https://github.com/kubernetes/kubernetes/pull/99646), [@rajansandeep](https://github.com/rajansandeep)) [SIG Cluster Lifecycle] -- Remove deprecated --generator --replicas --service-generator --service-overrides --schedule from kubectl run - Deprecate --serviceaccount --hostport --requests --limits in kubectl run ([#99732](https://github.com/kubernetes/kubernetes/pull/99732), [@soltysh](https://github.com/soltysh)) [SIG CLI and Testing] -- `audit.k8s.io/v1beta1` and `audit.k8s.io/v1alpha1` audit policy configuration and audit events are deprecated in favor of `audit.k8s.io/v1`, available since v1.13. kube-apiserver invocations that specify alpha or beta policy configurations with `--audit-policy-file`, or explicitly request alpha or beta audit events with `--audit-log-version` / `--audit-webhook-version` must update to use `audit.k8s.io/v1` and accept `audit.k8s.io/v1` events prior to v1.24. ([#98858](https://github.com/kubernetes/kubernetes/pull/98858), [@carlory](https://github.com/carlory)) [SIG Auth] -- `diskformat` stroage class parameter for in-tree vSphere volume plugin is deprecated as of v1.21 release. Please consider updating storageclass and remove `diskformat` parameter. vSphere CSI Driver does not support diskformat storageclass parameter. - - vSphere releases less than 67u3 are deprecated as of v1.21. Please consider upgrading vSphere to 67u3 or above. vSphere CSI Driver requires minimum vSphere 67u3. - - VM Hardware version less than 15 is deprecated as of v1.21. Please consider upgrading the Node VM Hardware version to 15 or above. vSphere CSI Driver recommends Node VM's Hardware version set to at least vmx-15. - - Multi vCenter support is deprecated as of v1.21. If you have a Kubernetes cluster spanning across multiple vCenter servers, please consider moving all k8s nodes to a single vCenter Server. vSphere CSI Driver does not support Kubernetes deployment spanning across multiple vCenter servers. - - Support for these deprecations will be available till Kubernetes v1.24. ([#98546](https://github.com/kubernetes/kubernetes/pull/98546), [@divyenpatel](https://github.com/divyenpatel)) [SIG Cloud Provider and Storage] - -### API Change - -- 1. PodAffinityTerm includes a namespaceSelector field to allow selecting eligible namespaces based on their labels. - 2. A new CrossNamespacePodAffinity quota scope API that allows restricting which namespaces allowed to use PodAffinityTerm with corss-namespace reference via namespaceSelector or namespaces fields. ([#98582](https://github.com/kubernetes/kubernetes/pull/98582), [@ahg-g](https://github.com/ahg-g)) [SIG API Machinery, Apps, Auth and Testing] -- Add a default metadata name labels for selecting any namespace by its name. ([#96968](https://github.com/kubernetes/kubernetes/pull/96968), [@jayunit100](https://github.com/jayunit100)) [SIG API Machinery, Apps, Cloud Provider, Storage and Testing] -- Added `.spec.completionMode` field to Job, with accepted values `NonIndexed` (default) and `Indexed` ([#98441](https://github.com/kubernetes/kubernetes/pull/98441), [@alculquicondor](https://github.com/alculquicondor)) [SIG Apps and CLI] -- Clarified NetworkPolicy policyTypes documentation ([#97216](https://github.com/kubernetes/kubernetes/pull/97216), [@joejulian](https://github.com/joejulian)) [SIG Network] -- DaemonSets accept a MaxSurge integer or percent on their rolling update strategy that will launch the updated pod on nodes and wait for those pods to go ready before marking the old out-of-date pods as deleted. This allows workloads to avoid downtime during upgrades when deployed using DaemonSets. This feature is alpha and is behind the DaemonSetUpdateSurge feature gate. ([#96441](https://github.com/kubernetes/kubernetes/pull/96441), [@smarterclayton](https://github.com/smarterclayton)) [SIG Apps and Testing] -- EndpointSlice API is now GA. The EndpointSlice topology field has been removed from the GA API and will be replaced by a new per Endpoint Zone field. If the topology field was previously used, it will be converted into an annotation in the v1 Resource. The discovery.k8s.io/v1alpha1 API is removed. ([#99662](https://github.com/kubernetes/kubernetes/pull/99662), [@swetharepakula](https://github.com/swetharepakula)) [SIG API Machinery, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network and Testing] -- EndpointSlice Controllers are now GA. The EndpointSlice Controller will not populate the `deprecatedTopology` field and will only provide topology information through the `zone` and `nodeName` fields. ([#99870](https://github.com/kubernetes/kubernetes/pull/99870), [@swetharepakula](https://github.com/swetharepakula)) [SIG API Machinery, Apps, Auth, Network and Testing] -- IngressClass resource can now reference a resource in a specific namespace - for implementation-specific configuration(previously only Cluster-level resources were allowed). - This feature can be enabled using the IngressClassNamespacedParams feature gate. ([#99275](https://github.com/kubernetes/kubernetes/pull/99275), [@hbagdi](https://github.com/hbagdi)) [SIG API Machinery, CLI and Network] -- Introduce conditions for PodDisruptionBudget ([#98127](https://github.com/kubernetes/kubernetes/pull/98127), [@mortent](https://github.com/mortent)) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Cluster Lifecycle and Instrumentation] -- Jobs API has a new .spec.suspend field that can be used to suspend and resume Jobs ([#98727](https://github.com/kubernetes/kubernetes/pull/98727), [@adtac](https://github.com/adtac)) [SIG API Machinery, Apps, Node, Scheduling and Testing] -- Kubelet Graceful Node Shutdown feature is now beta. ([#99735](https://github.com/kubernetes/kubernetes/pull/99735), [@bobbypage](https://github.com/bobbypage)) [SIG Node] -- Limit the quest value of hugepage to integer multiple of page size. ([#98515](https://github.com/kubernetes/kubernetes/pull/98515), [@lala123912](https://github.com/lala123912)) [SIG Apps] -- One new field "InternalTrafficPolicy" in Service is added. - It specifies if the cluster internal traffic should be routed to all endpoints or node-local endpoints only. - "Cluster" routes internal traffic to a Service to all endpoints. - "Local" routes traffic to node-local endpoints only, and traffic is dropped if no node-local endpoints are ready. - The default value is "Cluster". ([#96600](https://github.com/kubernetes/kubernetes/pull/96600), [@maplain](https://github.com/maplain)) [SIG API Machinery, Apps and Network] -- PodSecurityPolicy only stores "generic" as allowed volume type if the GenericEphemeralVolume feature gate is enabled ([#98918](https://github.com/kubernetes/kubernetes/pull/98918), [@pohly](https://github.com/pohly)) [SIG Auth and Security] -- Promote CronJobs to batch/v1 ([#99423](https://github.com/kubernetes/kubernetes/pull/99423), [@soltysh](https://github.com/soltysh)) [SIG API Machinery, Apps, CLI and Testing] -- Remove support for building Kubernetes with bazel. ([#99561](https://github.com/kubernetes/kubernetes/pull/99561), [@BenTheElder](https://github.com/BenTheElder)) [SIG API Machinery, Apps, Architecture, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Release, Scalability, Scheduling, Storage, Testing and Windows] -- Setting loadBalancerClass in load balancer type of service is available with this PR. - Users who want to use a custom load balancer can specify loadBalancerClass to achieve it. ([#98277](https://github.com/kubernetes/kubernetes/pull/98277), [@XudongLiuHarold](https://github.com/XudongLiuHarold)) [SIG API Machinery, Apps, Cloud Provider and Network] -- Storage capacity tracking (= the CSIStorageCapacity feature) is beta, storage.k8s.io/v1alpha1/VolumeAttachment and storage.k8s.io/v1alpha1/CSIStorageCapacity objects are deprecated ([#99641](https://github.com/kubernetes/kubernetes/pull/99641), [@pohly](https://github.com/pohly)) [SIG API Machinery, Apps, Auth, Scheduling, Storage and Testing] -- Support for Indexed Job: a Job that is considered completed when Pods associated to indexes from 0 to (.spec.completions-1) have succeeded. ([#98812](https://github.com/kubernetes/kubernetes/pull/98812), [@alculquicondor](https://github.com/alculquicondor)) [SIG Apps and CLI] -- The apiserver now resets managedFields that got corrupted by a mutating admission controller. ([#98074](https://github.com/kubernetes/kubernetes/pull/98074), [@kwiesmueller](https://github.com/kwiesmueller)) [SIG API Machinery and Testing] -- `controller.kubernetes.io/pod-deletion-cost` annotation can be set to offer a hint on the cost of deleting a pod compared to other pods belonging to the same ReplicaSet. Pods with lower deletion cost are deleted first. This is an alpha feature. ([#99163](https://github.com/kubernetes/kubernetes/pull/99163), [@ahg-g](https://github.com/ahg-g)) [SIG Apps] - -### Feature - -- A client-go metric, rest_client_exec_plugin_call_total, has been added to track total calls to client-go credential plugins. ([#98892](https://github.com/kubernetes/kubernetes/pull/98892), [@ankeesler](https://github.com/ankeesler)) [SIG API Machinery, Auth, Cluster Lifecycle and Instrumentation] -- Add --use-protocol-buffers flag to kubectl top pods and nodes ([#96655](https://github.com/kubernetes/kubernetes/pull/96655), [@serathius](https://github.com/serathius)) [SIG CLI] -- Add support to generate client-side binaries for new darwin/arm64 platform ([#97743](https://github.com/kubernetes/kubernetes/pull/97743), [@dims](https://github.com/dims)) [SIG Release and Testing] -- Added `ephemeral_volume_controller_create[_failures]_total` counters to kube-controller-manager metrics ([#99115](https://github.com/kubernetes/kubernetes/pull/99115), [@pohly](https://github.com/pohly)) [SIG API Machinery, Apps, Cluster Lifecycle, Instrumentation and Storage] -- Adds alpha feature `VolumeCapacityPriority` which makes the scheduler prioritize nodes based on the best matching size of statically provisioned PVs across multiple topologies. ([#96347](https://github.com/kubernetes/kubernetes/pull/96347), [@cofyc](https://github.com/cofyc)) [SIG Apps, Network, Scheduling, Storage and Testing] -- Adds two new metrics to cronjobs, a histogram to track the time difference when a job is created and the expected time when it should be created, and a gauge for the missed schedules of a cronjob ([#99341](https://github.com/kubernetes/kubernetes/pull/99341), [@alaypatel07](https://github.com/alaypatel07)) [SIG Apps and Instrumentation] -- Alpha implementation of Kubectl Command Headers: SIG CLI KEP 859 enabled when KUBECTL_COMMAND_HEADERS environment variable set on the client command line. - - To enable: export KUBECTL_COMMAND_HEADERS=1; kubectl ... ([#98952](https://github.com/kubernetes/kubernetes/pull/98952), [@seans3](https://github.com/seans3)) [SIG API Machinery and CLI] -- Component owner can configure the allowlist of metric label with flag '--allow-metric-labels'. ([#99738](https://github.com/kubernetes/kubernetes/pull/99738), [@YoyinZyc](https://github.com/YoyinZyc)) [SIG API Machinery, Cluster Lifecycle and Instrumentation] -- Disruption controller only sends one event per PodDisruptionBudget if scale can't be computed ([#98128](https://github.com/kubernetes/kubernetes/pull/98128), [@mortent](https://github.com/mortent)) [SIG Apps] -- EndpointSliceNodeName will always be enabled, so NodeName will always be available in the v1beta1 API. ([#99746](https://github.com/kubernetes/kubernetes/pull/99746), [@swetharepakula](https://github.com/swetharepakula)) [SIG Apps and Network] -- Graduate CRIContainerLogRotation feature gate to GA. ([#99651](https://github.com/kubernetes/kubernetes/pull/99651), [@umohnani8](https://github.com/umohnani8)) [SIG Node and Testing] -- Kube-proxy iptables: new metric sync_proxy_rules_iptables_total that exposes the number of rules programmed per table in each iteration ([#99653](https://github.com/kubernetes/kubernetes/pull/99653), [@aojea](https://github.com/aojea)) [SIG Instrumentation and Network] -- Kube-scheduler now logs plugin scoring summaries at --v=4 ([#99411](https://github.com/kubernetes/kubernetes/pull/99411), [@damemi](https://github.com/damemi)) [SIG Scheduling] -- Kubeadm: a warning to user as ipv6 site-local is deprecated ([#99574](https://github.com/kubernetes/kubernetes/pull/99574), [@pacoxu](https://github.com/pacoxu)) [SIG Cluster Lifecycle and Network] -- Kubeadm: apply the "node.kubernetes.io/exclude-from-external-load-balancers" label on control plane nodes during "init", "join" and "upgrade" to preserve backwards compatibility with the lagacy LB mode where nodes labeled as "master" where excluded. To opt-out you can remove the label from a node. See #97543 and the linked KEP for more details. ([#98269](https://github.com/kubernetes/kubernetes/pull/98269), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle] -- Kubeadm: if the user has customized their image repository via the kubeadm configuration, pass the custom pause image repository and tag to the kubelet via --pod-infra-container-image not only for Docker but for all container runtimes. This flag tells the kubelet that it should not garbage collect the image. ([#99476](https://github.com/kubernetes/kubernetes/pull/99476), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle] -- Kubeadm: promote IPv6DualStack feature gate to Beta ([#99294](https://github.com/kubernetes/kubernetes/pull/99294), [@pacoxu](https://github.com/pacoxu)) [SIG Cluster Lifecycle] -- Kubectl version changed to write a warning message to stderr if the client and server version difference exceeds the supported version skew of +/-1 minor version. ([#98250](https://github.com/kubernetes/kubernetes/pull/98250), [@brianpursley](https://github.com/brianpursley)) [SIG CLI] -- Kubernetes is now built with Golang 1.16 ([#98572](https://github.com/kubernetes/kubernetes/pull/98572), [@justaugustus](https://github.com/justaugustus)) [SIG API Machinery, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Node, Release and Testing] -- Persistent Volumes formatted with the btrfs filesystem will now automatically resize when expanded. ([#99361](https://github.com/kubernetes/kubernetes/pull/99361), [@Novex](https://github.com/Novex)) [SIG Storage] -- Remove cAdvisor json metrics api collected by Kubelet ([#99236](https://github.com/kubernetes/kubernetes/pull/99236), [@pacoxu](https://github.com/pacoxu)) [SIG Node] -- Sysctls is now GA and locked to default ([#99158](https://github.com/kubernetes/kubernetes/pull/99158), [@wgahnagl](https://github.com/wgahnagl)) [SIG Node] -- The NodeAffinity plugin implements the PreFilter extension, offering enhanced performance for Filter. ([#99213](https://github.com/kubernetes/kubernetes/pull/99213), [@AliceZhang2016](https://github.com/AliceZhang2016)) [SIG Scheduling] -- The endpointslice mirroring controller mirrors endpoints annotations and labels to the generated endpoint slices, it also ensures that updates on any of these fields are mirrored. - The well-known annotation endpoints.kubernetes.io/last-change-trigger-time is skipped and not mirrored. ([#98116](https://github.com/kubernetes/kubernetes/pull/98116), [@aojea](https://github.com/aojea)) [SIG Apps, Network and Testing] -- Update the latest validated version of Docker to 20.10 ([#98977](https://github.com/kubernetes/kubernetes/pull/98977), [@neolit123](https://github.com/neolit123)) [SIG CLI, Cluster Lifecycle and Node] -- Upgrade node local dns to 1.17.0 for better IPv6 support ([#99749](https://github.com/kubernetes/kubernetes/pull/99749), [@pacoxu](https://github.com/pacoxu)) [SIG Cloud Provider and Network] -- Users might specify the `kubectl.kubernetes.io/default-exec-container` annotation in a Pod to preselect container for kubectl commands. ([#99581](https://github.com/kubernetes/kubernetes/pull/99581), [@mengjiao-liu](https://github.com/mengjiao-liu)) [SIG CLI] -- When downscaling ReplicaSets, ready and creation timestamps are compared in a logarithmic scale. ([#99212](https://github.com/kubernetes/kubernetes/pull/99212), [@damemi](https://github.com/damemi)) [SIG Apps and Testing] -- When the kubelet is watching a ConfigMap or Secret purely in the context of setting environment variables - for containers, only hold that watch for a defined duration before cancelling it. This change reduces the CPU - and memory usage of the kube-apiserver in large clusters. ([#99393](https://github.com/kubernetes/kubernetes/pull/99393), [@chenyw1990](https://github.com/chenyw1990)) [SIG API Machinery, Node and Testing] -- WindowsEndpointSliceProxying feature gate has graduated to beta and is enabled by default. This means kube-proxy will read from EndpointSlices instead of Endpoints on Windows by default. ([#99794](https://github.com/kubernetes/kubernetes/pull/99794), [@robscott](https://github.com/robscott)) [SIG Network] - -### Bug or Regression - -- Creating a PVC with DataSource should fail for non-CSI plugins. ([#97086](https://github.com/kubernetes/kubernetes/pull/97086), [@xing-yang](https://github.com/xing-yang)) [SIG Apps and Storage] -- EndpointSlice controller is now less likely to emit FailedToUpdateEndpointSlices events. ([#99345](https://github.com/kubernetes/kubernetes/pull/99345), [@robscott](https://github.com/robscott)) [SIG Apps and Network] -- EndpointSliceMirroring controller is now less likely to emit FailedToUpdateEndpointSlices events. ([#99756](https://github.com/kubernetes/kubernetes/pull/99756), [@robscott](https://github.com/robscott)) [SIG Apps and Network] -- Fix --ignore-errors does not take effect if multiple logs are printed and unfollowed ([#97686](https://github.com/kubernetes/kubernetes/pull/97686), [@wzshiming](https://github.com/wzshiming)) [SIG CLI] -- Fix bug that would let the Horizontal Pod Autoscaler scale down despite at least one metric being unavailable/invalid ([#99514](https://github.com/kubernetes/kubernetes/pull/99514), [@mikkeloscar](https://github.com/mikkeloscar)) [SIG Apps and Autoscaling] -- Fix cgroup handling for systemd with cgroup v2 ([#98365](https://github.com/kubernetes/kubernetes/pull/98365), [@odinuge](https://github.com/odinuge)) [SIG Node] -- Fix smb mount PermissionDenied issue on Windows ([#99550](https://github.com/kubernetes/kubernetes/pull/99550), [@andyzhangx](https://github.com/andyzhangx)) [SIG Cloud Provider, Storage and Windows] -- Fixed a bug that causes smaller number of conntrack-max being used under CPU static policy. (#99225, @xh4n3) ([#99613](https://github.com/kubernetes/kubernetes/pull/99613), [@xh4n3](https://github.com/xh4n3)) [SIG Network] -- Fixed bug that caused cAdvisor to incorrectly detect single-socket multi-NUMA topology. ([#99315](https://github.com/kubernetes/kubernetes/pull/99315), [@iwankgb](https://github.com/iwankgb)) [SIG Node] -- Fixes add-on manager leader election ([#98968](https://github.com/kubernetes/kubernetes/pull/98968), [@liggitt](https://github.com/liggitt)) [SIG Cloud Provider] -- Improved update time of pod statuses following new probe results. ([#98376](https://github.com/kubernetes/kubernetes/pull/98376), [@matthyx](https://github.com/matthyx)) [SIG Node and Testing] -- Kube-apiserver: an update of a pod with a generic ephemeral volume dropped that volume if the feature had been disabled since creating the pod with such a volume ([#99446](https://github.com/kubernetes/kubernetes/pull/99446), [@pohly](https://github.com/pohly)) [SIG Apps, Node and Storage] -- Kubeadm: skip validating pod subnet against node-cidr-mask when allocate-node-cidrs is set to be false ([#98984](https://github.com/kubernetes/kubernetes/pull/98984), [@SataQiu](https://github.com/SataQiu)) [SIG Cluster Lifecycle] -- On single-stack configured (IPv4 or IPv6, but not both) clusters, Services which are both headless (no clusterIP) and selectorless (empty or undefined selector) will report `ipFamilyPolicy RequireDualStack` and will have entries in `ipFamilies[]` for both IPv4 and IPv6. This is a change from alpha, but does not have any impact on the manually-specified Endpoints and EndpointSlices for the Service. ([#99555](https://github.com/kubernetes/kubernetes/pull/99555), [@thockin](https://github.com/thockin)) [SIG Apps and Network] -- Resolves spurious `Failed to list *v1.Secret` or `Failed to list *v1.ConfigMap` messages in kubelet logs. ([#99538](https://github.com/kubernetes/kubernetes/pull/99538), [@liggitt](https://github.com/liggitt)) [SIG Auth and Node] -- Return zero time (midnight on Jan. 1, 1970) instead of negative number when reporting startedAt and finishedAt of the not started or a running Pod when using dockershim as a runtime. ([#99585](https://github.com/kubernetes/kubernetes/pull/99585), [@Iceber](https://github.com/Iceber)) [SIG Node] -- Stdin is now only passed to client-go exec credential plugins when it is detected to be an interactive terminal. Previously, it was passed to client-go exec plugins when **stdout*- was detected to be an interactive terminal. ([#99654](https://github.com/kubernetes/kubernetes/pull/99654), [@ankeesler](https://github.com/ankeesler)) [SIG API Machinery and Auth] -- The maximum number of ports allowed in EndpointSlices has been increased from 100 to 20,000 ([#99795](https://github.com/kubernetes/kubernetes/pull/99795), [@robscott](https://github.com/robscott)) [SIG Network] -- Updates the commands - - kubectl kustomize {arg} - - kubectl apply -k {arg} - to use same code as kustomize CLI v4.0.5 - - [v4.0.5]: https://github.com/kubernetes-sigs/kustomize/releases/tag/kustomize%2Fv4.0.5 ([#98946](https://github.com/kubernetes/kubernetes/pull/98946), [@monopole](https://github.com/monopole)) [SIG API Machinery, Architecture, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Node and Storage] -- When a CNI plugin returns dual-stack pod IPs, kubelet will now try to respect the - "primary IP family" of the cluster by picking a primary pod IP of the same family - as the (primary) node IP, rather than assuming that the CNI plugin returned the IPs - in the order the administrator wanted (since some CNI plugins don't allow - configuring this). ([#97979](https://github.com/kubernetes/kubernetes/pull/97979), [@danwinship](https://github.com/danwinship)) [SIG Network and Node] -- When using Containerd on Windows, the "C:\Windows\System32\drivers\etc\hosts" file will now be managed by kubelet. ([#83730](https://github.com/kubernetes/kubernetes/pull/83730), [@claudiubelu](https://github.com/claudiubelu)) [SIG Node and Windows] -- `VolumeBindingArgs` now allow `BindTimeoutSeconds` to be set as zero, while the value zero indicates no waiting for the checking of volume binding operation. ([#99835](https://github.com/kubernetes/kubernetes/pull/99835), [@chendave](https://github.com/chendave)) [SIG Scheduling and Storage] -- `kubectl exec` and `kubectl attach` now honor the `--quiet` flag which suppresses output from the local binary that could be confused by a script with the remote command output (all non-failure output is hidden). In addition, print inline with exec and attach the list of alternate containers when we default to the first spec.container. ([#99004](https://github.com/kubernetes/kubernetes/pull/99004), [@smarterclayton](https://github.com/smarterclayton)) [SIG CLI] - -### Other (Cleanup or Flake) - -- Apiserver_request_duration_seconds is promoted to stable status. ([#99925](https://github.com/kubernetes/kubernetes/pull/99925), [@logicalhan](https://github.com/logicalhan)) [SIG API Machinery, Instrumentation and Testing] -- Apiserver_request_total is promoted to stable status and no longer has a content-type dimensions, so any alerts/charts which presume the existence of this will fail. This is however, unlikely to be the case since it was effectively an unbounded dimension in the first place. ([#99788](https://github.com/kubernetes/kubernetes/pull/99788), [@logicalhan](https://github.com/logicalhan)) [SIG API Machinery, Instrumentation and Testing] -- EndpointSlice generation is now incremented when labels change. ([#99750](https://github.com/kubernetes/kubernetes/pull/99750), [@robscott](https://github.com/robscott)) [SIG Network] -- Featuregate AllowInsecureBackendProxy is promoted to GA ([#99658](https://github.com/kubernetes/kubernetes/pull/99658), [@deads2k](https://github.com/deads2k)) [SIG API Machinery] -- Migrate `pkg/kubelet/(eviction)` to structured logging ([#99032](https://github.com/kubernetes/kubernetes/pull/99032), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085)) [SIG Node] -- Migrate deployment controller log messages to structured logging ([#97507](https://github.com/kubernetes/kubernetes/pull/97507), [@aldudko](https://github.com/aldudko)) [SIG Apps] -- Migrate pkg/kubelet/cloudresource to structured logging ([#98999](https://github.com/kubernetes/kubernetes/pull/98999), [@sladyn98](https://github.com/sladyn98)) [SIG Node] -- Migrate pkg/kubelet/cri/remote logs to structured logging ([#98589](https://github.com/kubernetes/kubernetes/pull/98589), [@chenyw1990](https://github.com/chenyw1990)) [SIG Node] -- Migrate pkg/kubelet/kuberuntime/kuberuntime_container.go logs to structured logging ([#96973](https://github.com/kubernetes/kubernetes/pull/96973), [@chenyw1990](https://github.com/chenyw1990)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/status to structured logging ([#99836](https://github.com/kubernetes/kubernetes/pull/99836), [@navidshaikh](https://github.com/navidshaikh)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/token to structured logging ([#99264](https://github.com/kubernetes/kubernetes/pull/99264), [@palnabarun](https://github.com/palnabarun)) [SIG Auth, Instrumentation and Node] -- Migrate pkg/kubelet/util to structured logging ([#99823](https://github.com/kubernetes/kubernetes/pull/99823), [@navidshaikh](https://github.com/navidshaikh)) [SIG Instrumentation and Node] -- Migrate proxy/userspace/proxier.go logs to structured logging ([#97837](https://github.com/kubernetes/kubernetes/pull/97837), [@JornShen](https://github.com/JornShen)) [SIG Network] -- Migrate some kubelet/metrics log messages to structured logging ([#98627](https://github.com/kubernetes/kubernetes/pull/98627), [@jialaijun](https://github.com/jialaijun)) [SIG Instrumentation and Node] -- Process start time on Windows now uses current process information ([#97491](https://github.com/kubernetes/kubernetes/pull/97491), [@jsturtevant](https://github.com/jsturtevant)) [SIG API Machinery, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation and Windows] - -### Uncategorized - -- Migrate pkg/kubelet/stats to structured logging ([#99607](https://github.com/kubernetes/kubernetes/pull/99607), [@krzysiekg](https://github.com/krzysiekg)) [SIG Node] -- The DownwardAPIHugePages feature is beta. Users may use the feature if all workers in their cluster are min 1.20 version. The feature will be enabled by default in all installations in 1.22. ([#99610](https://github.com/kubernetes/kubernetes/pull/99610), [@derekwaynecarr](https://github.com/derekwaynecarr)) [SIG Node] - -## Dependencies - -### Added -- github.com/go-errors/errors: [v1.0.1](https://github.com/go-errors/errors/tree/v1.0.1) -- github.com/gobuffalo/here: [v0.6.0](https://github.com/gobuffalo/here/tree/v0.6.0) -- github.com/google/shlex: [e7afc7f](https://github.com/google/shlex/tree/e7afc7f) -- github.com/markbates/pkger: [v0.17.1](https://github.com/markbates/pkger/tree/v0.17.1) -- github.com/monochromegane/go-gitignore: [205db1a](https://github.com/monochromegane/go-gitignore/tree/205db1a) -- github.com/niemeyer/pretty: [a10e7ca](https://github.com/niemeyer/pretty/tree/a10e7ca) -- github.com/xlab/treeprint: [a009c39](https://github.com/xlab/treeprint/tree/a009c39) -- go.starlark.net: 8dd3e2e -- golang.org/x/term: 6a3ed07 -- sigs.k8s.io/kustomize/api: v0.8.5 -- sigs.k8s.io/kustomize/cmd/config: v0.9.7 -- sigs.k8s.io/kustomize/kustomize/v4: v4.0.5 -- sigs.k8s.io/kustomize/kyaml: v0.10.15 - -### Changed -- dmitri.shuralyov.com/gpu/mtl: 666a987 → 28db891 -- github.com/creack/pty: [v1.1.7 → v1.1.9](https://github.com/creack/pty/compare/v1.1.7...v1.1.9) -- github.com/go-openapi/spec: [v0.19.3 → v0.19.5](https://github.com/go-openapi/spec/compare/v0.19.3...v0.19.5) -- github.com/go-openapi/strfmt: [v0.19.3 → v0.19.5](https://github.com/go-openapi/strfmt/compare/v0.19.3...v0.19.5) -- github.com/go-openapi/validate: [v0.19.5 → v0.19.8](https://github.com/go-openapi/validate/compare/v0.19.5...v0.19.8) -- github.com/google/cadvisor: [v0.38.7 → v0.38.8](https://github.com/google/cadvisor/compare/v0.38.7...v0.38.8) -- github.com/kr/text: [v0.1.0 → v0.2.0](https://github.com/kr/text/compare/v0.1.0...v0.2.0) -- github.com/mattn/go-runewidth: [v0.0.2 → v0.0.7](https://github.com/mattn/go-runewidth/compare/v0.0.2...v0.0.7) -- github.com/olekukonko/tablewriter: [a0225b3 → v0.0.4](https://github.com/olekukonko/tablewriter/compare/a0225b3...v0.0.4) -- github.com/sergi/go-diff: [v1.0.0 → v1.1.0](https://github.com/sergi/go-diff/compare/v1.0.0...v1.1.0) -- golang.org/x/crypto: 7f63de1 → 5ea612d -- golang.org/x/exp: 6cc2880 → 85be41e -- golang.org/x/mobile: d2bd2a2 → e6ae53a -- golang.org/x/mod: v0.3.0 → ce943fd -- golang.org/x/net: 69a7880 → 3d97a24 -- golang.org/x/sys: 5cba982 → a50acf3 -- golang.org/x/time: 3af7569 → f8bda1e -- golang.org/x/tools: 113979e → v0.1.0 -- gopkg.in/check.v1: 41f04d3 → 8fa4692 -- gopkg.in/yaml.v2: v2.2.8 → v2.4.0 -- k8s.io/kube-openapi: d219536 → 591a79e -- k8s.io/system-validators: v1.3.0 → v1.4.0 - -### Removed -- github.com/codegangsta/negroni: [v1.0.0](https://github.com/codegangsta/negroni/tree/v1.0.0) -- github.com/golangplus/bytes: [45c989f](https://github.com/golangplus/bytes/tree/45c989f) -- github.com/golangplus/fmt: [2a5d6d7](https://github.com/golangplus/fmt/tree/2a5d6d7) -- github.com/gorilla/context: [v1.1.1](https://github.com/gorilla/context/tree/v1.1.1) -- github.com/kr/pty: [v1.1.5](https://github.com/kr/pty/tree/v1.1.5) -- sigs.k8s.io/kustomize: v2.0.3+incompatible - - - -# v1.21.0-beta.0 - - -## Downloads for v1.21.0-beta.0 - -### Source Code - -filename | sha512 hash --------- | ----------- -[kubernetes.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes.tar.gz) | 69b73a03b70b0ed006e9fef3f5b9bc68f0eb8dc40db6cc04777c03a2cb83a008c783012ca186b1c48357fb192403dbcf6960f120924785e2076e215b9012d546 -[kubernetes-src.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-src.tar.gz) | 9620fb6d37634271bdd423c09f33f3bd29e74298aa82c47dffc8cb6bd2ff44fa8987a53c53bc529db4ca96ec41503aa81cc8d0c3ac106f3b06c4720de933a8e6 - -### Client binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-client-darwin-amd64.tar.gz) | 2a6f3fcd6b571f5ccde56b91e6e179a01899244be496dae16a2a16e0405c9437b75c6dc853b56f9a4876a7c0a60ec624ccd28400bf8fb960258263172f6860ba -[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-client-linux-386.tar.gz) | 78fe9ad9f9a9bc043293327223f0038a2c087ca65e87187a6dcae7a24aef9565fe498d295a4639b0b90524469a04930022fcecd815d0afc742eb87ddd8eb7ef5 -[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-client-linux-amd64.tar.gz) | c025f5e5bd132355e7dd1296cf2ec752264e7f754c4d95fc34b076bd75bef2f571d30872bcb3d138ce95c592111353d275a80eb31f82c07000874b4c56282dbd -[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-client-linux-arm.tar.gz) | 9975cd2f08fbc202575fb15ba6fc51dab23155ca4d294ebb48516a81efa51f58bab3a87d41c865103756189b554c020371d729ad42880ba788f25047ffc46910 -[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-client-linux-arm64.tar.gz) | 56a6836e24471e42e9d9a8488453f2d55598d70c8aca0a307d5116139c930c25c469fd0d1ab5060fbe88dad75a9b5209a08dc11d644af5f3ebebfbcb6c16266c -[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-client-linux-ppc64le.tar.gz) | b6a6cc9baad0ad85ed079ee80e6d6acc905095cfb440998bbc0f553b94fa80077bd58b8692754de477517663d51161705e6e89a1b6d04aa74819800db3517722 -[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-client-linux-s390x.tar.gz) | 7b743481b340f510bf9ae28ea8ea91150aa1e8c37fe104b66d7b3aff62f5e6db3c590d2c13d14dbb5c928de31c7613372def2496075853611d10d6b5fa5b60bd -[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-client-windows-386.tar.gz) | df06c7a524ce84c1f8d7836aa960c550c88dbca0ec4854df4dd0a85b3c84b8ecbc41b54e8c4669ce28ac670659ff0fad795deb1bc539f3c3b3aa885381265f5a -[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-client-windows-amd64.tar.gz) | 4568497b684564f2a94fbea6cbfd778b891231470d9a6956c3b7a3268643d13b855c0fc5ebea5f769300cc0c7719c2c331c387f468816f182f63e515adeaa7a0 - -### Server binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-server-linux-amd64.tar.gz) | 42883cca2d312153baf693fc6024a295359a421e74fd70eefc927413be4e0353debe634e7cca6b9a8f7d8a0cee3717e03ba5d29a306e93139b1c2f3027535a6d -[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-server-linux-arm.tar.gz) | e0042215e84c769ba4fc4d159ccf67b2c4a26206bfffb0ec5152723dc813ff9c1426aa0e9b963d7bfa2efb266ca43561b596b459152882ebb42102ccf60bd8eb -[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-server-linux-arm64.tar.gz) | bfad29d43e14152cb9bc7c4df6aa77929c6eca64a294bb832215bdba9fa0ee2195a2b709c0267dc7426bb371b547ee80bb8461a8c678c9bffa0819aa7db96289 -[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-server-linux-ppc64le.tar.gz) | ca67674c01c6cebdc8160c85b449eab1a23bb0557418665246e0208543fa2eaaf97679685c7b49bee3a4300904c0399c3d762ae34dc3e279fd69ce792c4b07ff -[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-server-linux-s390x.tar.gz) | 285352b628ec754b01b8ad4ef1427223a142d58ebcb46f6861df14d68643133b32330460b213b1ba5bc5362ff2b6dacd8e0c2d20cce6e760fa1954af8a60df8b - -### Node binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-node-linux-amd64.tar.gz) | d92d9b30e7e44134a0cd9db4c01924d365991ea16b3131200b02a82cff89c8701f618cd90e7f1c65427bd4bb5f78b10d540b2262de2c143b401fa44e5b25627b -[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-node-linux-arm.tar.gz) | 551092f23c27fdea4bb2d0547f6075892534892a96fc2be7786f82b58c93bffdb5e1c20f8f11beb8bed46c24f36d4c18ec5ac9755435489efa28e6ae775739bd -[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-node-linux-arm64.tar.gz) | 26ae7f4163e527349b8818ee38b9ee062314ab417f307afa49c146df8f5a2bd689509b128bd4a1efd3896fd89571149a9955ada91f8ca0c2f599cd863d613c86 -[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-node-linux-ppc64le.tar.gz) | 821fa953f6cebc69d2d481e489f3e90899813d20e2eefbabbcadd019d004108e7540f741fabe60e8e7c6adbb1053ac97898bbdddec3ca19f34a71aa3312e0d4e -[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-node-linux-s390x.tar.gz) | 22197d4f66205d5aa9de83dfddcc4f2bb3195fd7067cdb5c21e61dbeae217bc112fb7ecff8a539579b60ad92298c2b4c87b9b7c7e6ec1ee1ffa0c6e4bc4412c1 -[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-beta.0/kubernetes-node-windows-amd64.tar.gz) | 7e22e0d9603562a04dee16a513579f06b1ff6354d97d669bd68f8777ec7f89f6ef027fb23ab0445d7bba0bb689352f0cc748ce90e3f597c6ebe495464a96b860 - -## Changelog since v1.21.0-alpha.3 - -## Urgent Upgrade Notes - -### (No, really, you MUST read this before you upgrade) - - - The metric `storage_operation_errors_total` is not removed, but is marked deprecated, and the metric `storage_operation_status_count` is marked deprecated. In both cases the storage_operation_duration_seconds metric can be used to recover equivalent counts (using `status=fail-unknown` in the case of `storage_operations_errors_total`). ([#99045](https://github.com/kubernetes/kubernetes/pull/99045), [@mattcary](https://github.com/mattcary)) [SIG Instrumentation and Storage] - -## Changes by Kind - -### Deprecation - -- The `batch/v2alpha1` CronJob type definitions and clients are deprecated and removed. ([#96987](https://github.com/kubernetes/kubernetes/pull/96987), [@soltysh](https://github.com/soltysh)) [SIG API Machinery, Apps, CLI and Testing] - -### API Change - -- Cluster admins can now turn off /debug/pprof and /debug/flags/v endpoint in kubelet by setting enableProfilingHandler and enableDebugFlagsHandler to false in their kubelet configuration file. enableProfilingHandler and enableDebugFlagsHandler can be set to true only when enableDebuggingHandlers is also set to true. ([#98458](https://github.com/kubernetes/kubernetes/pull/98458), [@SaranBalaji90](https://github.com/SaranBalaji90)) [SIG Node] -- The BoundServiceAccountTokenVolume feature has been promoted to beta, and enabled by default. - - This changes the tokens provided to containers at `/var/run/secrets/kubernetes.io/serviceaccount/token` to be time-limited, auto-refreshed, and invalidated when the containing pod is deleted. - - Clients should reload the token from disk periodically (once per minute is recommended) to ensure they continue to use a valid token. `k8s.io/client-go` version v11.0.0+ and v0.15.0+ reload tokens automatically. - - By default, injected tokens are given an extended lifetime so they remain valid even after a new refreshed token is provided. The metric `serviceaccount_stale_tokens_total` can be used to monitor for workloads that are depending on the extended lifetime and are continuing to use tokens even after a refreshed token is provided to the container. If that metric indicates no existing workloads are depending on extended lifetimes, injected token lifetime can be shortened to 1 hour by starting `kube-apiserver` with `--service-account-extend-token-expiration=false`. ([#95667](https://github.com/kubernetes/kubernetes/pull/95667), [@zshihang](https://github.com/zshihang)) [SIG API Machinery, Auth, Cluster Lifecycle and Testing] - -### Feature - -- A new histogram metric to track the time it took to delete a job by the ttl-after-finished controller ([#98676](https://github.com/kubernetes/kubernetes/pull/98676), [@ahg-g](https://github.com/ahg-g)) [SIG Apps and Instrumentation] -- AWS cloudprovider supports auto-discovering subnets without any kubernetes.io/cluster/ tags. It also supports additional service annotation service.beta.kubernetes.io/aws-load-balancer-subnets to manually configure the subnets. ([#97431](https://github.com/kubernetes/kubernetes/pull/97431), [@kishorj](https://github.com/kishorj)) [SIG Cloud Provider] -- Add --permit-address-sharing flag to kube-apiserver to listen with SO_REUSEADDR. While allowing to listen on wildcard IPs like 0.0.0.0 and specific IPs in parallel, it avoid waiting for the kernel to release socket in TIME_WAIT state, and hence, considably reducing kube-apiserver restart times under certain conditions. ([#93861](https://github.com/kubernetes/kubernetes/pull/93861), [@sttts](https://github.com/sttts)) [SIG API Machinery] -- Add `csi_operations_seconds` metric on kubelet that exposes CSI operations duration and status for node CSI operations. ([#98979](https://github.com/kubernetes/kubernetes/pull/98979), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Instrumentation and Storage] -- Add `migrated` field into `storage_operation_duration_seconds` metric ([#99050](https://github.com/kubernetes/kubernetes/pull/99050), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Apps, Instrumentation and Storage] -- Add bash-completion for comma separated list on `kubectl get` ([#98301](https://github.com/kubernetes/kubernetes/pull/98301), [@phil9909](https://github.com/phil9909)) [SIG CLI] -- Added support for installing arm64 node artifacts. ([#99242](https://github.com/kubernetes/kubernetes/pull/99242), [@liu-cong](https://github.com/liu-cong)) [SIG Cloud Provider] -- Feature gate RootCAConfigMap is graduated to GA in 1.21 and will be removed in 1.22. ([#98033](https://github.com/kubernetes/kubernetes/pull/98033), [@zshihang](https://github.com/zshihang)) [SIG API Machinery and Auth] -- Kubeadm: during "init" and "join" perform preflight validation on the host / node name and throw warnings if a name is not compliant ([#99194](https://github.com/kubernetes/kubernetes/pull/99194), [@pacoxu](https://github.com/pacoxu)) [SIG Cluster Lifecycle] -- Kubectl: `kubectl get` will omit managed fields by default now. Users could set `--show-managed-fields` to true to show managedFields when the output format is either `json` or `yaml`. ([#96878](https://github.com/kubernetes/kubernetes/pull/96878), [@knight42](https://github.com/knight42)) [SIG CLI and Testing] -- Metrics can now be disabled explicitly via a command line flag (i.e. '--disabled-metrics=bad_metric1,bad_metric2') ([#99217](https://github.com/kubernetes/kubernetes/pull/99217), [@logicalhan](https://github.com/logicalhan)) [SIG API Machinery, Cluster Lifecycle and Instrumentation] -- TTLAfterFinished is now beta and enabled by default ([#98678](https://github.com/kubernetes/kubernetes/pull/98678), [@ahg-g](https://github.com/ahg-g)) [SIG Apps and Auth] -- The `RunAsGroup` feature has been promoted to GA in this release. ([#94641](https://github.com/kubernetes/kubernetes/pull/94641), [@krmayankk](https://github.com/krmayankk)) [SIG Auth and Node] -- Turn CronJobControllerV2 on by default. ([#98878](https://github.com/kubernetes/kubernetes/pull/98878), [@soltysh](https://github.com/soltysh)) [SIG Apps] -- UDP protocol support for Agnhost connect subcommand ([#98639](https://github.com/kubernetes/kubernetes/pull/98639), [@knabben](https://github.com/knabben)) [SIG Testing] -- Upgrades `IPv6Dualstack` to `Beta` and turns it on by default. Clusters new and existing will not be affected until user starting adding secondary pod and service cidrs cli flags as described here: https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/563-dual-stack ([#98969](https://github.com/kubernetes/kubernetes/pull/98969), [@khenidak](https://github.com/khenidak)) [SIG API Machinery, Apps, Cloud Provider, Network and Node] - -### Documentation - -- Fix ALPHA stability level reference link ([#98641](https://github.com/kubernetes/kubernetes/pull/98641), [@Jeffwan](https://github.com/Jeffwan)) [SIG Auth, Cloud Provider, Instrumentation and Storage] - -### Failing Test - -- Escape the special characters like `[`, `]` and ` ` that exist in vsphere windows path ([#98830](https://github.com/kubernetes/kubernetes/pull/98830), [@liyanhui1228](https://github.com/liyanhui1228)) [SIG Storage and Windows] -- Kube-proxy: fix a bug on UDP NodePort Services where stale conntrack entries may blackhole the traffic directed to the NodePort. ([#98305](https://github.com/kubernetes/kubernetes/pull/98305), [@aojea](https://github.com/aojea)) [SIG Network] - -### Bug or Regression - -- Add missing --kube-api-content-type in kubemark hollow template ([#98911](https://github.com/kubernetes/kubernetes/pull/98911), [@Jeffwan](https://github.com/Jeffwan)) [SIG Scalability and Testing] -- Avoid duplicate error messages when runing kubectl edit quota ([#98201](https://github.com/kubernetes/kubernetes/pull/98201), [@pacoxu](https://github.com/pacoxu)) [SIG API Machinery and Apps] -- Cleanup subnet in frontend IP configs to prevent huge subnet request bodies in some scenarios. ([#98133](https://github.com/kubernetes/kubernetes/pull/98133), [@nilo19](https://github.com/nilo19)) [SIG Cloud Provider] -- Fix errors when accessing Windows container stats for Dockershim ([#98510](https://github.com/kubernetes/kubernetes/pull/98510), [@jsturtevant](https://github.com/jsturtevant)) [SIG Node and Windows] -- Fixes spurious errors about IPv6 in kube-proxy logs on nodes with IPv6 disabled. ([#99127](https://github.com/kubernetes/kubernetes/pull/99127), [@danwinship](https://github.com/danwinship)) [SIG Network and Node] -- In the method that ensures that the docker and containerd are in the correct containers with the proper OOM score set up, fixed the bug of identifying containerd process. ([#97888](https://github.com/kubernetes/kubernetes/pull/97888), [@pacoxu](https://github.com/pacoxu)) [SIG Node] -- Kubelet now cleans up orphaned volume directories automatically ([#95301](https://github.com/kubernetes/kubernetes/pull/95301), [@lorenz](https://github.com/lorenz)) [SIG Node and Storage] -- When dynamically provisioning Azure File volumes for a premium account, the requested size will be set to 100GB if the request is initially lower than this value to accommodate Azure File requirements. ([#99122](https://github.com/kubernetes/kubernetes/pull/99122), [@huffmanca](https://github.com/huffmanca)) [SIG Cloud Provider and Storage] - -### Other (Cleanup or Flake) - -- APIs for kubelet annotations and labels from k8s.io/kubernetes/pkg/kubelet/apis are now available under k8s.io/kubelet/pkg/apis/ ([#98931](https://github.com/kubernetes/kubernetes/pull/98931), [@michaelbeaumont](https://github.com/michaelbeaumont)) [SIG Apps, Auth and Node] -- Migrate `pkg/kubelet/(pod, pleg)` to structured logging ([#98990](https://github.com/kubernetes/kubernetes/pull/98990), [@gjkim42](https://github.com/gjkim42)) [SIG Instrumentation and Node] -- Migrate pkg/kubelet/nodestatus to structured logging ([#99001](https://github.com/kubernetes/kubernetes/pull/99001), [@QiWang19](https://github.com/QiWang19)) [SIG Node] -- Migrate pkg/kubelet/server logs to structured logging ([#98643](https://github.com/kubernetes/kubernetes/pull/98643), [@chenyw1990](https://github.com/chenyw1990)) [SIG Node] -- Migrate proxy/winkernel/proxier.go logs to structured logging ([#98001](https://github.com/kubernetes/kubernetes/pull/98001), [@JornShen](https://github.com/JornShen)) [SIG Network and Windows] -- Migrate scheduling_queue.go to structured logging ([#98358](https://github.com/kubernetes/kubernetes/pull/98358), [@tanjing2020](https://github.com/tanjing2020)) [SIG Scheduling] -- Several flags related to the deprecated dockershim which are present in the kubelet command line are now deprecated. ([#98730](https://github.com/kubernetes/kubernetes/pull/98730), [@dims](https://github.com/dims)) [SIG Node] -- The deprecated feature gates `CSIDriverRegistry`, `BlockVolume` and `CSIBlockVolume` are now unconditionally enabled and can no longer be specified in component invocations. ([#98021](https://github.com/kubernetes/kubernetes/pull/98021), [@gavinfish](https://github.com/gavinfish)) [SIG Storage] - -## Dependencies - -### Added -_Nothing has changed._ - -### Changed -- sigs.k8s.io/structured-merge-diff/v4: v4.0.2 → v4.0.3 - -### Removed -_Nothing has changed._ - - - -# v1.21.0-alpha.3 - - -## Downloads for v1.21.0-alpha.3 - -### Source Code - -filename | sha512 hash --------- | ----------- -[kubernetes.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes.tar.gz) | 704ec916a1dbd134c54184d2652671f80ae09274f9d23dbbed312944ebeccbc173e2e6b6949b38bdbbfdaf8aa032844deead5efeda1b3150f9751386d9184bc8 -[kubernetes-src.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-src.tar.gz) | 57db9e7560cfc9c10e7059cb5faf9c4bd5eb8f9b7964f44f000a417021cf80873184b774e7c66c80d4aba84c14080c6bc335618db3d2e5f276436ae065e25408 - -### Client binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-client-darwin-amd64.tar.gz) | e2706efda92d5cf4f8b69503bb2f7703a8754407eff7f199bb77847838070e720e5f572126c14daa4c0c03b59bb1a63c1dfdeb6e936a40eff1d5497e871e3409 -[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-client-linux-386.tar.gz) | 007bb23c576356ed0890bdfd25a0f98d552599e0ffec19fb982591183c7c1f216d8a3ffa3abf15216be12ae5c4b91fdcd48a7306a2d26b007b86a6abd553fc61 -[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-client-linux-amd64.tar.gz) | 39504b0c610348beba60e8866fff265bad58034f74504951cd894c151a248db718d10f77ebc83f2c38b2d517f8513a46325b38889eefa261ca6dbffeceba50ff -[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-client-linux-arm.tar.gz) | 30bc2c40d0c759365422ad1651a6fb35909be771f463c5b971caf401f9209525d05256ab70c807e88628dd357c2896745eecf13eda0b748464da97d0a5ef2066 -[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-client-linux-arm64.tar.gz) | 085cdf574dc8fd33ece667130b8c45830b522a07860e03a2384283b1adea73a9652ef3dfaa566e69ee00aea1a6461608814b3ce7a3f703e4a934304f7ae12f97 -[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-client-linux-ppc64le.tar.gz) | b34b845037d83ea7b3e2d80a9ede4f889b71b17b93b1445f0d936a36e98c13ed6ada125630a68d9243a5fcd311ee37cdcc0c05da484da8488ea5060bc529dbfc -[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-client-linux-s390x.tar.gz) | c4758adc7a404b776556efaa79655db2a70777c562145d6ea6887f3335988367a0c2fcd4383e469340f2a768b22e786951de212805ca1cb91104d41c21e0c9ce -[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-client-windows-386.tar.gz) | f51edc79702bbd1d9cb3a672852a405e11b20feeab64c5411a7e85c9af304960663eb6b23ef96e0f8c44a722fecf58cb6d700ea2c42c05b3269d8efd5ad803f2 -[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-client-windows-amd64.tar.gz) | 6a3507ce4ac40a0dc7e4720538863fa15f8faf025085a032f34b8fa0f6fa4e8c26849baf649b5b32829b9182e04f82721b13950d31cf218c35be6bf1c05d6abf - -### Server binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-server-linux-amd64.tar.gz) | 19181d162dfb0b30236e2bf1111000e037eece87c037ca2b24622ca94cb88db86aa4da4ca533522518b209bc9983bbfd6b880a7898e0da96b33f3f6c4690539b -[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-server-linux-arm.tar.gz) | 42a02f9e08a78ad5da6e5fa1ab12bf1e3c967c472fdbdadbd8746586da74dc8093682ba8513ff2a5301393c47ee9021b860e88ada56b13da386ef485708e46ca -[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-server-linux-arm64.tar.gz) | 3c8ba8eb02f70061689bd7fab7813542005efe2edc6cfc6b7aecd03ffedf0b81819ad91d69fff588e83023d595eefbfe636aa55e1856add8733bf42fff3c748f -[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-server-linux-ppc64le.tar.gz) | cd9e6537450411c39a06fd0b5819db3d16b668d403fb3627ec32c0e32dd1c4860e942934578ca0e1d1b8e6f21f450ff81e37e0cd46ff5c5faf7847ab074aefc5 -[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-server-linux-s390x.tar.gz) | ada3f65e53bc0e0c0229694dd48c425388089d6d77111a62476d1b08f6ad1d8ab3d60b9ed7d95ac1b42c2c6be8dc0618f40679717160769743c43583d8452362 - -### Node binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-node-linux-amd64.tar.gz) | ae0fec6aa59e49624b55d9a11c12fdf717ddfe04bdfd4f69965d03004a34e52ee4a3e83f7b61d0c6a86f43b72c99f3decb195b39ae529ef30526d18ec5f58f83 -[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-node-linux-arm.tar.gz) | 9a48c140ab53b7ed8ecec6903988a1a474efc16d2538e5974bc9a12f0c9190be78c4f9e326bf4e982d0b7045a80b99dd0fda7e9b650663be5b89bfd991596746 -[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-node-linux-arm64.tar.gz) | 6912adbc9300344bea470d6435f7b387bfce59767078c11728ce59faf47cd3f72b41b9604fcc5cda45e9816fe939fbe2fb33e52a773e6ff2dfa9a615b4df6141 -[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-node-linux-ppc64le.tar.gz) | d66dccfe3e6ed6d81567c70703f15375a53992b3a5e2814b98c32e581b861ad95912e03ed2562415d087624c008038bb4a816611fa255442ae752968ea15856b -[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-node-linux-s390x.tar.gz) | ad8c69a28f1fbafa3f1cb54909bfd3fc22b104bed63d7ca2b296208c9d43eb5f2943a0ff267da4c185186cdd9f7f77b315cd7f5f1bf9858c0bf42eceb9ac3c58 -[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.3/kubernetes-node-windows-amd64.tar.gz) | 91d723aa848a9cb028f5bcb41090ca346fb973961521d025c4399164de2c8029b57ca2c4daca560d3c782c05265d2eb0edb0abcce6f23d3efbecf2316a54d650 - -## Changelog since v1.21.0-alpha.2 - -## Urgent Upgrade Notes - -### (No, really, you MUST read this before you upgrade) - - - Newly provisioned PVs by gce-pd will no longer have the beta FailureDomain label. gce-pd volume plugin will start to have GA topology label instead. ([#98700](https://github.com/kubernetes/kubernetes/pull/98700), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Cloud Provider, Storage and Testing] - - Remove alpha CSIMigrationXXComplete flag and add alpha InTreePluginXXUnregister flag. Deprecate CSIMigrationvSphereComplete flag and it will be removed in 1.22. ([#98243](https://github.com/kubernetes/kubernetes/pull/98243), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Node and Storage] - -## Changes by Kind - -### API Change - -- Adds support for portRange / EndPort in Network Policy ([#97058](https://github.com/kubernetes/kubernetes/pull/97058), [@rikatz](https://github.com/rikatz)) [SIG Apps and Network] -- Fixes using server-side apply with APIService resources ([#98576](https://github.com/kubernetes/kubernetes/pull/98576), [@kevindelgado](https://github.com/kevindelgado)) [SIG API Machinery, Apps and Testing] -- Kubernetes is now built using go1.15.7 ([#98363](https://github.com/kubernetes/kubernetes/pull/98363), [@cpanato](https://github.com/cpanato)) [SIG Cloud Provider, Instrumentation, Node, Release and Testing] -- Scheduler extender filter interface now can report unresolvable failed nodes in the new field `FailedAndUnresolvableNodes` of `ExtenderFilterResult` struct. Nodes in this map will be skipped in the preemption phase. ([#92866](https://github.com/kubernetes/kubernetes/pull/92866), [@cofyc](https://github.com/cofyc)) [SIG Scheduling] - -### Feature - -- A lease can only attach up to 10k objects. ([#98257](https://github.com/kubernetes/kubernetes/pull/98257), [@lingsamuel](https://github.com/lingsamuel)) [SIG API Machinery] -- Add ignore-errors flag for drain, support none-break drain in group ([#98203](https://github.com/kubernetes/kubernetes/pull/98203), [@yuzhiquan](https://github.com/yuzhiquan)) [SIG CLI] -- Base-images: Update to debian-iptables:buster-v1.4.0 - - Uses iptables 1.8.5 - - base-images: Update to debian-base:buster-v1.3.0 - - cluster/images/etcd: Build etcd:3.4.13-2 image - - Uses debian-base:buster-v1.3.0 ([#98401](https://github.com/kubernetes/kubernetes/pull/98401), [@pacoxu](https://github.com/pacoxu)) [SIG Testing] -- Export NewDebuggingRoundTripper function and DebugLevel options in the k8s.io/client-go/transport package. ([#98324](https://github.com/kubernetes/kubernetes/pull/98324), [@atosatto](https://github.com/atosatto)) [SIG API Machinery] -- Kubectl wait ensures that observedGeneration >= generation if applicable ([#97408](https://github.com/kubernetes/kubernetes/pull/97408), [@KnicKnic](https://github.com/KnicKnic)) [SIG CLI] -- Kubernetes is now built using go1.15.8 ([#98834](https://github.com/kubernetes/kubernetes/pull/98834), [@cpanato](https://github.com/cpanato)) [SIG Cloud Provider, Instrumentation, Release and Testing] -- New admission controller "denyserviceexternalips" is available. Clusters which do not *need- the Service "externalIPs" feature should enable this controller and be more secure. ([#97395](https://github.com/kubernetes/kubernetes/pull/97395), [@thockin](https://github.com/thockin)) [SIG API Machinery] -- Overall, enable the feature of `PreferNominatedNode` will improve the performance of scheduling where preemption might frequently happen, but in theory, enable the feature of `PreferNominatedNode`, the pod might not be scheduled to the best candidate node in the cluster. ([#93179](https://github.com/kubernetes/kubernetes/pull/93179), [@chendave](https://github.com/chendave)) [SIG Scheduling and Testing] -- Pause image upgraded to 3.4.1 in kubelet and kubeadm for both Linux and Windows. ([#98205](https://github.com/kubernetes/kubernetes/pull/98205), [@pacoxu](https://github.com/pacoxu)) [SIG CLI, Cloud Provider, Cluster Lifecycle, Node, Testing and Windows] -- The `ServiceAccountIssuerDiscovery` feature has graduated to GA, and is unconditionally enabled. The `ServiceAccountIssuerDiscovery` feature-gate will be removed in 1.22. ([#98553](https://github.com/kubernetes/kubernetes/pull/98553), [@mtaufen](https://github.com/mtaufen)) [SIG API Machinery, Auth and Testing] - -### Documentation - -- Feat: azure file migration go beta in 1.21. Feature gates CSIMigration to Beta (on by default) and CSIMigrationAzureFile to Beta (off by default since it requires installation of the AzureFile CSI Driver) - The in-tree AzureFile plugin "kubernetes.io/azure-file" is now deprecated and will be removed in 1.23. Users should enable CSIMigration + CSIMigrationAzureFile features and install the AzureFile CSI Driver (https://github.com/kubernetes-sigs/azurefile-csi-driver) to avoid disruption to existing Pod and PVC objects at that time. - Users should start using the AzureFile CSI Driver directly for any new volumes. ([#96293](https://github.com/kubernetes/kubernetes/pull/96293), [@andyzhangx](https://github.com/andyzhangx)) [SIG Cloud Provider] - -### Failing Test - -- Kubelet: the HostPort implementation in dockershim was not taking into consideration the HostIP field, causing that the same HostPort can not be used with different IP addresses. - This bug causes the conformance test "HostPort validates that there is no conflict between pods with same hostPort but different hostIP and protocol" to fail. ([#98755](https://github.com/kubernetes/kubernetes/pull/98755), [@aojea](https://github.com/aojea)) [SIG Cloud Provider, Network and Node] - -### Bug or Regression - -- Fix NPE in ephemeral storage eviction ([#98261](https://github.com/kubernetes/kubernetes/pull/98261), [@wzshiming](https://github.com/wzshiming)) [SIG Node] -- Fixed a bug that on k8s nodes, when the policy of INPUT chain in filter table is not ACCEPT, healthcheck nodeport would not work. - Added iptables rules to allow healthcheck nodeport traffic. ([#97824](https://github.com/kubernetes/kubernetes/pull/97824), [@hanlins](https://github.com/hanlins)) [SIG Network] -- Fixed kube-proxy container image architecture for non amd64 images. ([#98526](https://github.com/kubernetes/kubernetes/pull/98526), [@saschagrunert](https://github.com/saschagrunert)) [SIG API Machinery, Release and Testing] -- Fixed provisioning of Cinder volumes migrated to CSI when StorageClass with AllowedTopologies was used. ([#98311](https://github.com/kubernetes/kubernetes/pull/98311), [@jsafrane](https://github.com/jsafrane)) [SIG Storage] -- Fixes a panic in the disruption budget controller for PDB objects with invalid selectors ([#98750](https://github.com/kubernetes/kubernetes/pull/98750), [@mortent](https://github.com/mortent)) [SIG Apps] -- Fixes connection errors when using `--volume-host-cidr-denylist` or `--volume-host-allow-local-loopback` ([#98436](https://github.com/kubernetes/kubernetes/pull/98436), [@liggitt](https://github.com/liggitt)) [SIG Network and Storage] -- If the user specifies an invalid timeout in the request URL, the request will be aborted with an HTTP 400. - - in cases where the client specifies a timeout in the request URL, the overall request deadline is shortened now since the deadline is setup as soon as the request is received by the apiserver. ([#96901](https://github.com/kubernetes/kubernetes/pull/96901), [@tkashem](https://github.com/tkashem)) [SIG API Machinery and Testing] -- Kubeadm: Some text in the `kubeadm upgrade plan` output has changed. If you have scripts or other automation that parses this output, please review these changes and update your scripts to account for the new output. ([#98728](https://github.com/kubernetes/kubernetes/pull/98728), [@stmcginnis](https://github.com/stmcginnis)) [SIG Cluster Lifecycle] -- Kubeadm: fix a bug where external credentials in an existing admin.conf prevented the CA certificate to be written in the cluster-info ConfigMap. ([#98882](https://github.com/kubernetes/kubernetes/pull/98882), [@kvaps](https://github.com/kvaps)) [SIG Cluster Lifecycle] -- Kubeadm: fix bad token placeholder text in "config print *-defaults --help" ([#98839](https://github.com/kubernetes/kubernetes/pull/98839), [@Mattias-](https://github.com/Mattias-)) [SIG Cluster Lifecycle] -- Kubeadm: get k8s CI version markers from k8s infra bucket ([#98836](https://github.com/kubernetes/kubernetes/pull/98836), [@hasheddan](https://github.com/hasheddan)) [SIG Cluster Lifecycle and Release] -- Mitigate CVE-2020-8555 for kube-up using GCE by preventing local loopback folume hosts. ([#97934](https://github.com/kubernetes/kubernetes/pull/97934), [@mattcary](https://github.com/mattcary)) [SIG Cloud Provider and Storage] -- Remove CSI topology from migrated in-tree gcepd volume. ([#97823](https://github.com/kubernetes/kubernetes/pull/97823), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Cloud Provider and Storage] -- Sync node status during kubelet node shutdown. - Adds an pod admission handler that rejects new pods when the node is in progress of shutting down. ([#98005](https://github.com/kubernetes/kubernetes/pull/98005), [@wzshiming](https://github.com/wzshiming)) [SIG Node] -- Truncates a message if it hits the NoteLengthLimit when the scheduler records an event for the pod that indicates the pod has failed to schedule. ([#98715](https://github.com/kubernetes/kubernetes/pull/98715), [@carlory](https://github.com/carlory)) [SIG Scheduling] -- We will no longer automatically delete all data when a failure is detected during creation of the volume data file on a CSI volume. Now we will only remove the data file and volume path. ([#96021](https://github.com/kubernetes/kubernetes/pull/96021), [@huffmanca](https://github.com/huffmanca)) [SIG Storage] - -### Other (Cleanup or Flake) - -- Fix the description of command line flags that can override --config ([#98254](https://github.com/kubernetes/kubernetes/pull/98254), [@changshuchao](https://github.com/changshuchao)) [SIG Scheduling] -- Migrate scheduler/taint_manager.go structured logging ([#98259](https://github.com/kubernetes/kubernetes/pull/98259), [@tanjing2020](https://github.com/tanjing2020)) [SIG Apps] -- Migrate staging/src/k8s.io/apiserver/pkg/admission logs to structured logging ([#98138](https://github.com/kubernetes/kubernetes/pull/98138), [@lala123912](https://github.com/lala123912)) [SIG API Machinery] -- Resolves flakes in the Ingress conformance tests due to conflicts with controllers updating the Ingress object ([#98430](https://github.com/kubernetes/kubernetes/pull/98430), [@liggitt](https://github.com/liggitt)) [SIG Network and Testing] -- The default delegating authorization options now allow unauthenticated access to healthz, readyz, and livez. A system:masters user connecting to an authz delegator will not perform an authz check. ([#98325](https://github.com/kubernetes/kubernetes/pull/98325), [@deads2k](https://github.com/deads2k)) [SIG API Machinery, Auth, Cloud Provider and Scheduling] -- The e2e suite can be instructed not to wait for pods in kube-system to be ready or for all nodes to be ready by passing `--allowed-not-ready-nodes=-1` when invoking the e2e.test program. This allows callers to run subsets of the e2e suite in scenarios other than perfectly healthy clusters. ([#98781](https://github.com/kubernetes/kubernetes/pull/98781), [@smarterclayton](https://github.com/smarterclayton)) [SIG Testing] -- The feature gates `WindowsGMSA` and `WindowsRunAsUserName` that are GA since v1.18 are now removed. ([#96531](https://github.com/kubernetes/kubernetes/pull/96531), [@ialidzhikov](https://github.com/ialidzhikov)) [SIG Node and Windows] -- The new `-gce-zones` flag on the `e2e.test` binary instructs tests that check for information about how the cluster interacts with the cloud to limit their queries to the provided zone list. If not specified, the current behavior of asking the cloud provider for all available zones in multi zone clusters is preserved. ([#98787](https://github.com/kubernetes/kubernetes/pull/98787), [@smarterclayton](https://github.com/smarterclayton)) [SIG API Machinery, Cluster Lifecycle and Testing] - -## Dependencies - -### Added -- github.com/moby/spdystream: [v0.2.0](https://github.com/moby/spdystream/tree/v0.2.0) - -### Changed -- github.com/NYTimes/gziphandler: [56545f4 → v1.1.1](https://github.com/NYTimes/gziphandler/compare/56545f4...v1.1.1) -- github.com/container-storage-interface/spec: [v1.2.0 → v1.3.0](https://github.com/container-storage-interface/spec/compare/v1.2.0...v1.3.0) -- github.com/go-logr/logr: [v0.2.0 → v0.4.0](https://github.com/go-logr/logr/compare/v0.2.0...v0.4.0) -- github.com/gogo/protobuf: [v1.3.1 → v1.3.2](https://github.com/gogo/protobuf/compare/v1.3.1...v1.3.2) -- github.com/kisielk/errcheck: [v1.2.0 → v1.5.0](https://github.com/kisielk/errcheck/compare/v1.2.0...v1.5.0) -- github.com/yuin/goldmark: [v1.1.27 → v1.2.1](https://github.com/yuin/goldmark/compare/v1.1.27...v1.2.1) -- golang.org/x/sync: cd5d95a → 67f06af -- golang.org/x/tools: c1934b7 → 113979e -- k8s.io/klog/v2: v2.4.0 → v2.5.0 -- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.14 → v0.0.15 - -### Removed -- github.com/docker/spdystream: [449fdfc](https://github.com/docker/spdystream/tree/449fdfc) - - - -# v1.21.0-alpha.2 - - -## Downloads for v1.21.0-alpha.2 - -### Source Code - -filename | sha512 hash --------- | ----------- -[kubernetes.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes.tar.gz) | 6836f6c8514253fe0831fd171fc4ed92eb6d9a773491c8dc82b90d171a1b10076bd6bfaea56ec1e199c5f46c273265bdb9f174f0b2d99c5af1de4c99b862329e -[kubernetes-src.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-src.tar.gz) | d137694804741a05ab09e5f9a418448b66aba0146c028eafce61bcd9d7c276521e345ce9223ffbc703e8172041d58dfc56a3242a4df3686f24905a4541fcd306 - -### Client binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-client-darwin-amd64.tar.gz) | 9478b047a97717953f365c13a098feb7e3cb30a3df22e1b82aa945f2208dcc5cb90afc441ba059a3ae7aafb4ee000ec3a52dc65a8c043a5ac7255a391c875330 -[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-client-linux-386.tar.gz) | 44c8dd4b1ddfc256d35786c8abf45b0eb5f0794f5e310d2efc865748adddc50e8bf38aa71295ae8a82884cb65f2e0b9b0737b000f96fd8f2d5c19971d7c4d8e8 -[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-client-linux-amd64.tar.gz) | e1291989892769de6b978c17b8612b94da6f3b735a4d895100af622ca9ebb968c75548afea7ab00445869625dd0da3afec979e333afbb445805f5d31c1c13cc7 -[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-client-linux-arm.tar.gz) | 3c4bcb8cbe73822d68a2f62553a364e20bec56b638c71d0f58679b4f4b277d809142346f18506914e694f6122a3e0f767eab20b7b1c4dbb79e4c5089981ae0f1 -[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-client-linux-arm64.tar.gz) | 9389974a790268522e187f5ba5237f3ee4684118c7db76bc3d4164de71d8208702747ec333b204c7a78073ab42553cbbce13a1883fab4fec617e093b05fab332 -[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-client-linux-ppc64le.tar.gz) | 63399e53a083b5af3816c28ff162c9de6b64c75da4647f0d6bbaf97afdf896823cb1e556f2abac75c6516072293026d3ff9f30676fd75143ac6ca3f4d21f4327 -[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-client-linux-s390x.tar.gz) | 50898f197a9d923971ff9046c9f02779b57f7b3cea7da02f3ea9bab8c08d65a9c4a7531a2470fa14783460f52111a52b96ebf916c0a1d8215b4070e4e861c1b0 -[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-client-windows-386.tar.gz) | a7743e839e1aa19f5ee20b6ee5000ac8ef9e624ac5be63bb574fad6992e4b9167193ed07e03c9bc524e88bfeed66c95341a38a03bff1b10bc9910345f33019f0 -[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-client-windows-amd64.tar.gz) | 5f1d19c230bd3542866d16051808d184e9dd3e2f8c001ed4cee7b5df91f872380c2bf56a3add8c9413ead9d8c369efce2bcab4412174df9b823d3592677bf74e - -### Server binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-server-linux-amd64.tar.gz) | ef2cac10febde231aeb6f131e589450c560eeaab8046b49504127a091cddc17bc518c2ad56894a6a033033ab6fc6e121b1cc23691683bc36f45fe6b1dd8e0510 -[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-server-linux-arm.tar.gz) | d11c9730307f08e80b2b8a7c64c3e9a9e43c622002e377dfe3a386f4541e24adc79a199a6f280f40298bb36793194fd44ed45defe8a3ee54a9cb1386bc26e905 -[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-server-linux-arm64.tar.gz) | 28f8c32bf98ee1add7edf5d341c3bac1afc0085f90dcbbfb8b27a92087f13e2b53c327c8935ee29bf1dc3160655b32bbe3e29d5741a8124a3848a777e7d42933 -[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-server-linux-ppc64le.tar.gz) | 99ae8d44b0de3518c27fa8bbddd2ecf053dfb789fb9d65f8a4ecf4c8331cf63d2f09a41c2bcd5573247d5f66a1b2e51944379df1715017d920d521b98589508a -[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-server-linux-s390x.tar.gz) | f8c0e954a2dfc6845614488dadeed069cc7f3f08e33c351d7a77c6ef97867af590932e8576d12998a820a0e4d35d2eee797c764e2810f09ab1e90a5acaeaad33 - -### Node binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-node-linux-amd64.tar.gz) | c5456d50bfbe0d75fb150b3662ed7468a0abd3970792c447824f326894382c47bbd3a2cc5a290f691c8c09585ff6fe505ab86b4aff2b7e5ccee11b5e6354ae6c -[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-node-linux-arm.tar.gz) | 335b5cd8672e053302fd94d932fb2fa2e48eeeb1799650b3f93acdfa635e03a8453637569ab710c46885c8317759f4c60aaaf24dca9817d9fa47500fe4a3ca53 -[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-node-linux-arm64.tar.gz) | 3ee87dbeed8ace9351ac89bdaf7274dd10b4faec3ceba0825f690ec7a2bb7eb7c634274a1065a0939eec8ff3e43f72385f058f4ec141841550109e775bc5eff9 -[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-node-linux-ppc64le.tar.gz) | 6956f965b8d719b164214ec9195fdb2c776b907fe6d2c524082f00c27872a73475927fd7d2a994045ce78f6ad2aa5aeaf1eb5514df1810d2cfe342fd4e5ce4a1 -[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-node-linux-s390x.tar.gz) | 3b643aa905c709c57083c28dd9e8ffd88cb64466cda1499da7fc54176b775003e08b9c7a07b0964064df67c8142f6f1e6c13bfc261bd65fb064049920bfa57d0 -[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.2/kubernetes-node-windows-amd64.tar.gz) | b2e6d6fb0091f2541f9925018c2bdbb0138a95bab06b4c6b38abf4b7144b2575422263b78fb3c6fd09e76d90a25a8d35a6d4720dc169794d42c95aa22ecc6d5f - -## Changelog since v1.21.0-alpha.1 - -## Urgent Upgrade Notes - -### (No, really, you MUST read this before you upgrade) - - - Remove storage metrics `storage_operation_errors_total`, since we already have `storage_operation_status_count`.And add new field `status` for `storage_operation_duration_seconds`, so that we can know about all status storage operation latency. ([#98332](https://github.com/kubernetes/kubernetes/pull/98332), [@JornShen](https://github.com/JornShen)) [SIG Instrumentation and Storage] - -## Changes by Kind - -### Deprecation - -- Remove the TokenRequest and TokenRequestProjection feature gates ([#97148](https://github.com/kubernetes/kubernetes/pull/97148), [@wawa0210](https://github.com/wawa0210)) [SIG Node] -- Removing experimental windows container hyper-v support with Docker ([#97141](https://github.com/kubernetes/kubernetes/pull/97141), [@wawa0210](https://github.com/wawa0210)) [SIG Node and Windows] -- The `export` query parameter (inconsistently supported by API resources and deprecated in v1.14) is fully removed. Requests setting this query parameter will now receive a 400 status response. ([#98312](https://github.com/kubernetes/kubernetes/pull/98312), [@deads2k](https://github.com/deads2k)) [SIG API Machinery, Auth and Testing] - -### API Change - -- Enable SPDY pings to keep connections alive, so that `kubectl exec` and `kubectl port-forward` won't be interrupted. ([#97083](https://github.com/kubernetes/kubernetes/pull/97083), [@knight42](https://github.com/knight42)) [SIG API Machinery and CLI] - -### Documentation - -- Official support to build kubernetes with docker-machine / remote docker is removed. This change does not affect building kubernetes with docker locally. ([#97935](https://github.com/kubernetes/kubernetes/pull/97935), [@adeniyistephen](https://github.com/adeniyistephen)) [SIG Release and Testing] -- Set kubelet option `--volume-stats-agg-period` to negative value to disable volume calculations. ([#96675](https://github.com/kubernetes/kubernetes/pull/96675), [@pacoxu](https://github.com/pacoxu)) [SIG Node] - -### Bug or Regression - -- Clean ReplicaSet by revision instead of creation timestamp in deployment controller ([#97407](https://github.com/kubernetes/kubernetes/pull/97407), [@waynepeking348](https://github.com/waynepeking348)) [SIG Apps] -- Ensure that client-go's EventBroadcaster is safe (non-racy) during shutdown. ([#95664](https://github.com/kubernetes/kubernetes/pull/95664), [@DirectXMan12](https://github.com/DirectXMan12)) [SIG API Machinery] -- Fix azure file migration issue ([#97877](https://github.com/kubernetes/kubernetes/pull/97877), [@andyzhangx](https://github.com/andyzhangx)) [SIG Auth, Cloud Provider and Storage] -- Fix kubelet from panic after getting the wrong signal ([#98200](https://github.com/kubernetes/kubernetes/pull/98200), [@wzshiming](https://github.com/wzshiming)) [SIG Node] -- Fix repeatedly acquire the inhibit lock ([#98088](https://github.com/kubernetes/kubernetes/pull/98088), [@wzshiming](https://github.com/wzshiming)) [SIG Node] -- Fixed a bug that the kubelet cannot start on BtrfS. ([#98042](https://github.com/kubernetes/kubernetes/pull/98042), [@gjkim42](https://github.com/gjkim42)) [SIG Node] -- Fixed an issue with garbage collection failing to clean up namespaced children of an object also referenced incorrectly by cluster-scoped children ([#98068](https://github.com/kubernetes/kubernetes/pull/98068), [@liggitt](https://github.com/liggitt)) [SIG API Machinery and Apps] -- Fixed no effect namespace when exposing deployment with --dry-run=client. ([#97492](https://github.com/kubernetes/kubernetes/pull/97492), [@masap](https://github.com/masap)) [SIG CLI] -- Fixing a bug where a failed node may not have the NoExecute taint set correctly ([#96876](https://github.com/kubernetes/kubernetes/pull/96876), [@howieyuen](https://github.com/howieyuen)) [SIG Apps and Node] -- Indentation of `Resource Quota` block in kubectl describe namespaces output gets correct. ([#97946](https://github.com/kubernetes/kubernetes/pull/97946), [@dty1er](https://github.com/dty1er)) [SIG CLI] -- KUBECTL_EXTERNAL_DIFF now accepts equal sign for additional parameters. ([#98158](https://github.com/kubernetes/kubernetes/pull/98158), [@dougsland](https://github.com/dougsland)) [SIG CLI] -- Kubeadm: fix a bug where "kubeadm join" would not properly handle missing names for existing etcd members. ([#97372](https://github.com/kubernetes/kubernetes/pull/97372), [@ihgann](https://github.com/ihgann)) [SIG Cluster Lifecycle] -- Kubelet should ignore cgroup driver check on Windows node. ([#97764](https://github.com/kubernetes/kubernetes/pull/97764), [@pacoxu](https://github.com/pacoxu)) [SIG Node and Windows] -- Make podTopologyHints protected by lock ([#95111](https://github.com/kubernetes/kubernetes/pull/95111), [@choury](https://github.com/choury)) [SIG Node] -- Readjust kubelet_containers_per_pod_count bucket ([#98169](https://github.com/kubernetes/kubernetes/pull/98169), [@wawa0210](https://github.com/wawa0210)) [SIG Instrumentation and Node] -- Scores from InterPodAffinity have stronger differentiation. ([#98096](https://github.com/kubernetes/kubernetes/pull/98096), [@leileiwan](https://github.com/leileiwan)) [SIG Scheduling] -- Specifying the KUBE_TEST_REPO environment variable when e2e tests are executed will instruct the test infrastructure to load that image from a location within the specified repo, using a predefined pattern. ([#93510](https://github.com/kubernetes/kubernetes/pull/93510), [@smarterclayton](https://github.com/smarterclayton)) [SIG Testing] -- Static pods will be deleted gracefully. ([#98103](https://github.com/kubernetes/kubernetes/pull/98103), [@gjkim42](https://github.com/gjkim42)) [SIG Node] -- Use network.Interface.VirtualMachine.ID to get the binded VM - Skip standalone VM when reconciling LoadBalancer ([#97635](https://github.com/kubernetes/kubernetes/pull/97635), [@nilo19](https://github.com/nilo19)) [SIG Cloud Provider] - -### Other (Cleanup or Flake) - -- Kubeadm: change the default image repository for CI images from 'gcr.io/kubernetes-ci-images' to 'gcr.io/k8s-staging-ci-images' ([#97087](https://github.com/kubernetes/kubernetes/pull/97087), [@SataQiu](https://github.com/SataQiu)) [SIG Cluster Lifecycle] -- Migrate generic_scheduler.go and types.go to structured logging. ([#98134](https://github.com/kubernetes/kubernetes/pull/98134), [@tanjing2020](https://github.com/tanjing2020)) [SIG Scheduling] -- Migrate proxy/winuserspace/proxier.go logs to structured logging ([#97941](https://github.com/kubernetes/kubernetes/pull/97941), [@JornShen](https://github.com/JornShen)) [SIG Network] -- Migrate staging/src/k8s.io/apiserver/pkg/audit/policy/reader.go logs to structured logging. ([#98252](https://github.com/kubernetes/kubernetes/pull/98252), [@lala123912](https://github.com/lala123912)) [SIG API Machinery and Auth] -- Migrate staging\src\k8s.io\apiserver\pkg\endpoints logs to structured logging ([#98093](https://github.com/kubernetes/kubernetes/pull/98093), [@lala123912](https://github.com/lala123912)) [SIG API Machinery] -- Node ([#96552](https://github.com/kubernetes/kubernetes/pull/96552), [@pandaamanda](https://github.com/pandaamanda)) [SIG Apps, Cloud Provider, Node and Scheduling] -- The kubectl alpha debug command was scheduled to be removed in v1.21. ([#98111](https://github.com/kubernetes/kubernetes/pull/98111), [@pandaamanda](https://github.com/pandaamanda)) [SIG CLI] -- Update cri-tools to [v1.20.0](https://github.com/kubernetes-sigs/cri-tools/releases/tag/v1.20.0) ([#97967](https://github.com/kubernetes/kubernetes/pull/97967), [@rajibmitra](https://github.com/rajibmitra)) [SIG Cloud Provider] -- Windows nodes on GCE will take longer to start due to dependencies installed at node creation time. ([#98284](https://github.com/kubernetes/kubernetes/pull/98284), [@pjh](https://github.com/pjh)) [SIG Cloud Provider] - -## Dependencies - -### Added -_Nothing has changed._ - -### Changed -- github.com/google/cadvisor: [v0.38.6 → v0.38.7](https://github.com/google/cadvisor/compare/v0.38.6...v0.38.7) -- k8s.io/gengo: 83324d8 → b6c5ce2 - -### Removed -_Nothing has changed._ - - - -# v1.21.0-alpha.1 - - -## Downloads for v1.21.0-alpha.1 - -### Source Code - -filename | sha512 hash --------- | ----------- -[kubernetes.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes.tar.gz) | b2bacd5c3fc9f829e6269b7d2006b0c6e464ff848bb0a2a8f2fe52ad2d7c4438f099bd8be847d8d49ac6e4087f4d74d5c3a967acd798e0b0cb4d7a2bdb122997 -[kubernetes-src.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-src.tar.gz) | 518ac5acbcf23902fb1b902b69dbf3e86deca5d8a9b5f57488a15f185176d5a109558f3e4df062366af874eca1bcd61751ee8098b0beb9bcdc025d9a1c9be693 - -### Client binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-client-darwin-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-client-darwin-amd64.tar.gz) | eaa7aea84a5ed954df5ec710cbeb6ec88b46465f43cb3d09aabe2f714b84a050a50bf5736089f09dbf1090f2e19b44823d656c917e3c8c877630756c3026f2b6 -[kubernetes-client-linux-386.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-client-linux-386.tar.gz) | 47f74b8d46ad1779c5b0b5f15aa15d5513a504eeb6f53db4201fbe9ff8956cb986b7c1b0e9d50a99f78e9e2a7f304f3fc1cc2fa239296d9a0dd408eb6069e975 -[kubernetes-client-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-client-linux-amd64.tar.gz) | 1a148e282628b008c8abd03dd12ec177ced17584b5115d92cd33dd251e607097d42e9da8c7089bd947134b900f85eb75a4740b6a5dd580c105455b843559df39 -[kubernetes-client-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-client-linux-arm.tar.gz) | d13d2feb73bd032dc01f7e2955b98d8215a39fe1107d037a73fa1f7d06c3b93ebaa53ed4952d845c64454ef3cca533edb97132d234d50b6fb3bcbd8a8ad990eb -[kubernetes-client-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-client-linux-arm64.tar.gz) | 8252105a17b09a78e9ad2c024e4e401a69764ac869708a071aaa06f81714c17b9e7c5b2eb8efde33f24d0b59f75c5da607d5e1e72bdf12adfbb8c829205cd1c1 -[kubernetes-client-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-client-linux-ppc64le.tar.gz) | 297a9082df4988389dc4be30eb636dff49f36f5d87047bab44745884e610f46a17ae3a08401e2cab155b7c439f38057bfd8288418215f7dd3bf6a49dbe61ea0e -[kubernetes-client-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-client-linux-s390x.tar.gz) | 04c06490dd17cd5dccfd92bafa14acf64280ceaea370d9635f23aeb6984d1beae6d0d1d1506edc6f30f927deeb149b989d3e482b47fbe74008b371f629656e79 -[kubernetes-client-windows-386.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-client-windows-386.tar.gz) | ec6e9e87a7d685f8751d7e58f24f417753cff5554a7229218cb3a08195d461b2e12409344950228e9fbbc92a8a06d35dd86242da6ff1e6652ec1fae0365a88c1 -[kubernetes-client-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-client-windows-amd64.tar.gz) | 51039e6221d3126b5d15e797002ae01d4f0b10789c5d2056532f27ef13f35c5a2e51be27764fda68e8303219963126559023aed9421313bec275c0827fbcaf8a - -### Server binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-server-linux-amd64.tar.gz) | 4edf820930c88716263560275e3bd7fadb8dc3700b9f8e1d266562e356e0abeb1a913f536377dab91218e3940b447d6bf1da343b85da25c2256dc4dcde5798dd -[kubernetes-server-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-server-linux-arm.tar.gz) | b15213e53a8ab4ba512ce6ef9ad42dd197d419c61615cd23de344227fd846c90448d8f3d98e555b63ba5b565afa627cca6b7e3990ebbbba359c96f2391302df1 -[kubernetes-server-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-server-linux-arm64.tar.gz) | 5be29cca9a9358fc68351ee63e99d57dc2ffce6e42fc3345753dbbf7542ff2d770c4852424158540435fa6e097ce3afa9b13affc40c8b3b69fe8406798f8068f -[kubernetes-server-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-server-linux-ppc64le.tar.gz) | 89fd99ab9ce85db0b94b86709932105efc883cc93959cf7ea9a39e79a4acea23064d7010eeb577450cccabe521c04b7ba47bbec212ed37edeed7cb04bad34518 -[kubernetes-server-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-server-linux-s390x.tar.gz) | 2fbc30862c77d247aa8d96ab9d1a144599505287b0033a3a2d0988958e7bb2f2e8b67f52c1fec74b4ec47d74ba22cd0f6cb5c4228acbaa72b1678d5fece0254d - -### Node binaries - -filename | sha512 hash --------- | ----------- -[kubernetes-node-linux-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-node-linux-amd64.tar.gz) | 95658d321a0a371c0900b401d1469d96915310afbc4e4b9b11f031438bb188513b57d5a60b5316c3b0c18f541cda6f0ac42f59a76495f8abc743a067115da23a -[kubernetes-node-linux-arm.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-node-linux-arm.tar.gz) | f375acfb42aad6c65b833c270e7e3acfe9cd1d6b2441c33874e77faae263957f7acfe86f1b71f14298118595e4cc6952c7dea0c832f7f2e72428336f13034362 -[kubernetes-node-linux-arm64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-node-linux-arm64.tar.gz) | 43b4baccd58d74e7f48d096ab92f2bbbcdf47e30e7a3d2b56c6cc9f90002cfd4fefaac894f69bd5f9f4dbdb09a4749a77eb76b1b97d91746bd96fe94457879ab -[kubernetes-node-linux-ppc64le.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-node-linux-ppc64le.tar.gz) | e7962b522c6c7c14b9ee4c1d254d8bdd9846b2b33b0443fc9c4a41be6c40e5e6981798b720f0148f36263d5cc45d5a2bb1dd2f9ab2838e3d002e45b9bddeb7bf -[kubernetes-node-linux-s390x.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-node-linux-s390x.tar.gz) | 49ebc97f01829e65f7de15be00b882513c44782eaadd1b1825a227e3bd3c73cc6aca8345af05b303d8c43aa2cb944a069755b2709effb8cc22eae621d25d4ba5 -[kubernetes-node-windows-amd64.tar.gz](https://dl.k8s.io/v1.21.0-alpha.1/kubernetes-node-windows-amd64.tar.gz) | 6e0fd7724b09e6befbcb53b33574e97f2db089f2eee4bbf391abb7f043103a5e6e32e3014c0531b88f9a3ca88887bbc68625752c44326f98dd53adb3a6d1bed8 - -## Changelog since v1.20.0 - -## Urgent Upgrade Notes - -### (No, really, you MUST read this before you upgrade) - - - Kube-proxy's IPVS proxy mode no longer sets the net.ipv4.conf.all.route_localnet sysctl parameter. Nodes upgrading will have net.ipv4.conf.all.route_localnet set to 1 but new nodes will inherit the system default (usually 0). If you relied on any behavior requiring net.ipv4.conf.all.route_localnet, you must set ensure it is enabled as kube-proxy will no longer set it automatically. This change helps to further mitigate CVE-2020-8558. ([#92938](https://github.com/kubernetes/kubernetes/pull/92938), [@lbernail](https://github.com/lbernail)) [SIG Network and Release] - -## Changes by Kind - -### Deprecation - -- Deprecate the `topologyKeys` field in Service. This capability will be replaced with upcoming work around Topology Aware Subsetting and Service Internal Traffic Policy. ([#96736](https://github.com/kubernetes/kubernetes/pull/96736), [@andrewsykim](https://github.com/andrewsykim)) [SIG Apps] -- Kubeadm: deprecated command "alpha selfhosting pivot" is removed now. ([#97627](https://github.com/kubernetes/kubernetes/pull/97627), [@knight42](https://github.com/knight42)) [SIG Cluster Lifecycle] -- Kubeadm: graduate the command `kubeadm alpha kubeconfig user` to `kubeadm kubeconfig user`. The `kubeadm alpha kubeconfig user` command is deprecated now. ([#97583](https://github.com/kubernetes/kubernetes/pull/97583), [@knight42](https://github.com/knight42)) [SIG Cluster Lifecycle] -- Kubeadm: the "kubeadm alpha certs" command is removed now, please use "kubeadm certs" instead. ([#97706](https://github.com/kubernetes/kubernetes/pull/97706), [@knight42](https://github.com/knight42)) [SIG Cluster Lifecycle] -- Remove the deprecated metrics "scheduling_algorithm_preemption_evaluation_seconds" and "binding_duration_seconds", suggest to use "scheduler_framework_extension_point_duration_seconds" instead. ([#96447](https://github.com/kubernetes/kubernetes/pull/96447), [@chendave](https://github.com/chendave)) [SIG Cluster Lifecycle, Instrumentation, Scheduling and Testing] -- The PodSecurityPolicy API is deprecated in 1.21, and will no longer be served starting in 1.25. ([#97171](https://github.com/kubernetes/kubernetes/pull/97171), [@deads2k](https://github.com/deads2k)) [SIG Auth and CLI] - -### API Change - -- Change the APIVersion proto name of BoundObjectRef from aPIVersion to apiVersion. ([#97379](https://github.com/kubernetes/kubernetes/pull/97379), [@kebe7jun](https://github.com/kebe7jun)) [SIG Auth] -- Promote Immutable Secrets/ConfigMaps feature to Stable. - This allows to set `Immutable` field in Secrets or ConfigMap object to mark their contents as immutable. ([#97615](https://github.com/kubernetes/kubernetes/pull/97615), [@wojtek-t](https://github.com/wojtek-t)) [SIG Apps, Architecture, Node and Testing] - -### Feature - -- Add flag --lease-max-object-size and metric etcd_lease_object_counts for kube-apiserver to config and observe max objects attached to a single etcd lease. ([#97480](https://github.com/kubernetes/kubernetes/pull/97480), [@lingsamuel](https://github.com/lingsamuel)) [SIG API Machinery, Instrumentation and Scalability] -- Add flag --lease-reuse-duration-seconds for kube-apiserver to config etcd lease reuse duration. ([#97009](https://github.com/kubernetes/kubernetes/pull/97009), [@lingsamuel](https://github.com/lingsamuel)) [SIG API Machinery and Scalability] -- Adds the ability to pass --strict-transport-security-directives to the kube-apiserver to set the HSTS header appropriately. Be sure you understand the consequences to browsers before setting this field. ([#96502](https://github.com/kubernetes/kubernetes/pull/96502), [@249043822](https://github.com/249043822)) [SIG Auth] -- Kubeadm now includes CoreDNS v1.8.0. ([#96429](https://github.com/kubernetes/kubernetes/pull/96429), [@rajansandeep](https://github.com/rajansandeep)) [SIG Cluster Lifecycle] -- Kubeadm: add support for certificate chain validation. When using kubeadm in external CA mode, this allows an intermediate CA to be used to sign the certificates. The intermediate CA certificate must be appended to each signed certificate for this to work correctly. ([#97266](https://github.com/kubernetes/kubernetes/pull/97266), [@robbiemcmichael](https://github.com/robbiemcmichael)) [SIG Cluster Lifecycle] -- Kubeadm: amend the node kernel validation to treat CGROUP_PIDS, FAIR_GROUP_SCHED as required and CFS_BANDWIDTH, CGROUP_HUGETLB as optional ([#96378](https://github.com/kubernetes/kubernetes/pull/96378), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle and Node] -- The Kubernetes pause image manifest list now contains an image for Windows Server 20H2. ([#97322](https://github.com/kubernetes/kubernetes/pull/97322), [@claudiubelu](https://github.com/claudiubelu)) [SIG Windows] -- The apimachinery util/net function used to detect the bind address `ResolveBindAddress()` - takes into consideration global ip addresses on loopback interfaces when: - - the host has default routes - - there are no global IPs on those interfaces. - in order to support more complex network scenarios like BGP Unnumbered RFC 5549 ([#95790](https://github.com/kubernetes/kubernetes/pull/95790), [@aojea](https://github.com/aojea)) [SIG Network] - -### Bug or Regression - -- ## Changelog - - ### General - - Fix priority expander falling back to a random choice even though there is a higher priority option to choose - - Clone `kubernetes/kubernetes` in `update-vendor.sh` shallowly, instead of fetching all revisions - - Speed up binpacking by reducing the number of PreFilter calls (call once per pod instead of #pods*#nodes times) - - Speed up finding unneeded nodes by 5x+ in very large clusters by reducing the number of PreFilter calls - - Expose `--max-nodes-total` as a metric - - Errors in `IncreaseSize` changed from type `apiError` to `cloudProviderError` - - Make `build-in-docker` and `test-in-docker` work on Linux systems with SELinux enabled - - Fix an error where existing nodes were not considered as destinations while finding place for pods in scale-down simulations - - Remove redundant log lines and reduce severity around parsing kubeEnv - - Don't treat nodes created by virtual kubelet as nodes from non-autoscaled node groups - - Remove redundant logging around calculating node utilization - - Add configurable `--network` and `--rm` flags for docker in `Makefile` - - Subtract DaemonSet pods' requests from node allocatable in the denominator while computing node utilization - - Include taints by condition when determining if a node is unready/still starting - - Fix `update-vendor.sh` to work on OSX and zsh - - Add best-effort eviction for DaemonSet pods while scaling down non-empty nodes - - Add build support for ARM64 - - ### AliCloud - - Add missing daemonsets and replicasets to ALI example cluster role - - ### Apache CloudStack - - Add support for Apache CloudStack - - ### AWS - - Regenerate list of EC2 instances - - Fix pricing endpoint in AWS China Region - - ### Azure - - Add optional jitter on initial VMSS VM cache refresh, keep the refreshes spread over time - - Serve from cache for the whole period of ongoing throttling - - Fix unwanted VMSS VMs cache invalidations - - Enforce setting the number of retries if cloud provider backoff is enabled - - Don't update capacity if VMSS provisioning state is updating - - Support allocatable resources overrides via VMSS tags - - Add missing stable labels in template nodes - - Proactively set instance status to deleting on node deletions - - ### Cluster API - - Migrate interaction with the API from using internal types to using Unstructured - - Improve tests to work better with constrained resources - - Add support for node autodiscovery - - Add support for `--cloud-config` - - Update group identifier to use for Cluster API annotations - - ### Exoscale - - Add support for Exoscale - - ### GCE - - Decrease the number of GCE Read Requests made while deleting nodes - - Base pricing of custom instances on their instance family type - - Add pricing information for missing machine types - - Add pricing information for different GPU types - - Ignore the new `topology.gke.io/zone` label when comparing groups - - Add missing stable labels to template nodes - - ### HuaweiCloud - - Add auto scaling group support - - Implement node group by AS - - Implement getting desired instance number of node group - - Implement increasing node group size - - Implement TemplateNodeInfo - - Implement caching instances - - ### IONOS - - Add support for IONOS - - ### Kubemark - - Skip non-kubemark nodes while computing node infos for node groups. - - ### Magnum - - Add Magnum support in the Cluster Autoscaler helm chart - - ### Packet - - Allow empty nodepools - - Add support for multiple nodepools - - Add pricing support - - ## Image - Image: `k8s.gcr.io/autoscaling/cluster-autoscaler:v1.20.0` ([#97011](https://github.com/kubernetes/kubernetes/pull/97011), [@towca](https://github.com/towca)) [SIG Cloud Provider] -- AcceleratorStats will be available in the Summary API of kubelet when cri_stats_provider is used. ([#96873](https://github.com/kubernetes/kubernetes/pull/96873), [@ruiwen-zhao](https://github.com/ruiwen-zhao)) [SIG Node] -- Add limited lines to log when having tail option ([#93920](https://github.com/kubernetes/kubernetes/pull/93920), [@zhouya0](https://github.com/zhouya0)) [SIG Node] -- Avoid systemd-logind loading configuration warning ([#97950](https://github.com/kubernetes/kubernetes/pull/97950), [@wzshiming](https://github.com/wzshiming)) [SIG Node] -- Cloud-controller-manager: routes controller should not depend on --allocate-node-cidrs ([#97029](https://github.com/kubernetes/kubernetes/pull/97029), [@andrewsykim](https://github.com/andrewsykim)) [SIG Cloud Provider and Testing] -- Copy annotations with empty value when deployment rolls back ([#94858](https://github.com/kubernetes/kubernetes/pull/94858), [@waynepeking348](https://github.com/waynepeking348)) [SIG Apps] -- Detach volumes from vSphere nodes not tracked by attach-detach controller ([#96689](https://github.com/kubernetes/kubernetes/pull/96689), [@gnufied](https://github.com/gnufied)) [SIG Cloud Provider and Storage] -- Fix kubectl label error when local=true is set. ([#97440](https://github.com/kubernetes/kubernetes/pull/97440), [@pandaamanda](https://github.com/pandaamanda)) [SIG CLI] -- Fix Azure file share not deleted issue when the namespace is deleted ([#97417](https://github.com/kubernetes/kubernetes/pull/97417), [@andyzhangx](https://github.com/andyzhangx)) [SIG Cloud Provider and Storage] -- Fix CVE-2020-8555 for Gluster client connections. ([#97922](https://github.com/kubernetes/kubernetes/pull/97922), [@liggitt](https://github.com/liggitt)) [SIG Storage] -- Fix counting error in service/nodeport/loadbalancer quota check ([#97451](https://github.com/kubernetes/kubernetes/pull/97451), [@pacoxu](https://github.com/pacoxu)) [SIG API Machinery, Network and Testing] -- Fix kubectl-convert import known versions ([#97754](https://github.com/kubernetes/kubernetes/pull/97754), [@wzshiming](https://github.com/wzshiming)) [SIG CLI and Testing] -- Fix missing cadvisor machine metrics. ([#97006](https://github.com/kubernetes/kubernetes/pull/97006), [@lingsamuel](https://github.com/lingsamuel)) [SIG Node] -- Fix nil VMSS name when setting service to auto mode ([#97366](https://github.com/kubernetes/kubernetes/pull/97366), [@nilo19](https://github.com/nilo19)) [SIG Cloud Provider] -- Fix the panic when kubelet registers if a node object already exists with no Status.Capacity or Status.Allocatable ([#95269](https://github.com/kubernetes/kubernetes/pull/95269), [@SataQiu](https://github.com/SataQiu)) [SIG Node] -- Fix the regression with the slow pods termination. Before this fix pods may take an additional time to terminate - up to one minute. Reversing the change that ensured that CNI resources cleaned up when the pod is removed on API server. ([#97980](https://github.com/kubernetes/kubernetes/pull/97980), [@SergeyKanzhelev](https://github.com/SergeyKanzhelev)) [SIG Node] -- Fix to recover CSI volumes from certain dangling attachments ([#96617](https://github.com/kubernetes/kubernetes/pull/96617), [@yuga711](https://github.com/yuga711)) [SIG Apps and Storage] -- Fix: azure file latency issue for metadata-heavy workloads ([#97082](https://github.com/kubernetes/kubernetes/pull/97082), [@andyzhangx](https://github.com/andyzhangx)) [SIG Cloud Provider and Storage] -- Fixed Cinder volume IDs on OpenStack Train ([#96673](https://github.com/kubernetes/kubernetes/pull/96673), [@jsafrane](https://github.com/jsafrane)) [SIG Cloud Provider] -- Fixed FibreChannel volume plugin corrupting filesystems on detach of multipath volumes. ([#97013](https://github.com/kubernetes/kubernetes/pull/97013), [@jsafrane](https://github.com/jsafrane)) [SIG Storage] -- Fixed a bug in kubelet that will saturate CPU utilization after containerd got restarted. ([#97174](https://github.com/kubernetes/kubernetes/pull/97174), [@hanlins](https://github.com/hanlins)) [SIG Node] -- Fixed bug in CPUManager with race on container map access ([#97427](https://github.com/kubernetes/kubernetes/pull/97427), [@klueska](https://github.com/klueska)) [SIG Node] -- Fixed cleanup of block devices when /var/lib/kubelet is a symlink. ([#96889](https://github.com/kubernetes/kubernetes/pull/96889), [@jsafrane](https://github.com/jsafrane)) [SIG Storage] -- GCE Internal LoadBalancer sync loop will now release the ILB IP address upon sync failure. An error in ILB forwarding rule creation will no longer leak IP addresses. ([#97740](https://github.com/kubernetes/kubernetes/pull/97740), [@prameshj](https://github.com/prameshj)) [SIG Cloud Provider and Network] -- Ignore update pod with no new images in alwaysPullImages admission controller ([#96668](https://github.com/kubernetes/kubernetes/pull/96668), [@pacoxu](https://github.com/pacoxu)) [SIG Apps, Auth and Node] -- Kubeadm now installs version 3.4.13 of etcd when creating a cluster with v1.19 ([#97244](https://github.com/kubernetes/kubernetes/pull/97244), [@pacoxu](https://github.com/pacoxu)) [SIG Cluster Lifecycle] -- Kubeadm: avoid detection of the container runtime for commands that do not need it ([#97625](https://github.com/kubernetes/kubernetes/pull/97625), [@pacoxu](https://github.com/pacoxu)) [SIG Cluster Lifecycle] -- Kubeadm: fix a bug in the host memory detection code on 32bit Linux platforms ([#97403](https://github.com/kubernetes/kubernetes/pull/97403), [@abelbarrera15](https://github.com/abelbarrera15)) [SIG Cluster Lifecycle] -- Kubeadm: fix a bug where "kubeadm upgrade" commands can fail if CoreDNS v1.8.0 is installed. ([#97919](https://github.com/kubernetes/kubernetes/pull/97919), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle] -- Performance regression [#97685](https://github.com/kubernetes/kubernetes/issues/97685) has been fixed. ([#97860](https://github.com/kubernetes/kubernetes/pull/97860), [@MikeSpreitzer](https://github.com/MikeSpreitzer)) [SIG API Machinery] -- Remove deprecated --cleanup-ipvs flag of kube-proxy, and make --cleanup flag always to flush IPVS ([#97336](https://github.com/kubernetes/kubernetes/pull/97336), [@maaoBit](https://github.com/maaoBit)) [SIG Network] -- The current version of the container image publicly exposed IP serving a /metrics endpoint to the Internet. The new version of the container image serves /metrics endpoint on a different port. ([#97621](https://github.com/kubernetes/kubernetes/pull/97621), [@vbannai](https://github.com/vbannai)) [SIG Cloud Provider] -- Use force unmount for NFS volumes if regular mount fails after 1 minute timeout ([#96844](https://github.com/kubernetes/kubernetes/pull/96844), [@gnufied](https://github.com/gnufied)) [SIG Storage] -- Users will see increase in time for deletion of pods and also guarantee that removal of pod from api server would mean deletion of all the resources from container runtime. ([#92817](https://github.com/kubernetes/kubernetes/pull/92817), [@kmala](https://github.com/kmala)) [SIG Node] -- Using exec auth plugins with kubectl no longer results in warnings about constructing many client instances from the same exec auth config. ([#97857](https://github.com/kubernetes/kubernetes/pull/97857), [@liggitt](https://github.com/liggitt)) [SIG API Machinery and Auth] -- Warning about using a deprecated volume plugin is logged only once. ([#96751](https://github.com/kubernetes/kubernetes/pull/96751), [@jsafrane](https://github.com/jsafrane)) [SIG Storage] - -### Other (Cleanup or Flake) - -- Bump github.com/Azure/go-autorest/autorest to v0.11.12 ([#97033](https://github.com/kubernetes/kubernetes/pull/97033), [@patrickshan](https://github.com/patrickshan)) [SIG API Machinery, CLI, Cloud Provider and Cluster Lifecycle] -- Delete deprecated mixed protocol annotation ([#97096](https://github.com/kubernetes/kubernetes/pull/97096), [@nilo19](https://github.com/nilo19)) [SIG Cloud Provider] -- Kube-proxy: Traffic from the cluster directed to ExternalIPs is always sent directly to the Service. ([#96296](https://github.com/kubernetes/kubernetes/pull/96296), [@aojea](https://github.com/aojea)) [SIG Network and Testing] -- Kubeadm: fix a whitespace issue in the output of the "kubeadm join" command shown as the output of "kubeadm init" and "kubeadm token create --print-join-command" ([#97413](https://github.com/kubernetes/kubernetes/pull/97413), [@SataQiu](https://github.com/SataQiu)) [SIG Cluster Lifecycle] -- Kubeadm: improve the error messaging when the user provides an invalid discovery token CA certificate hash. ([#97290](https://github.com/kubernetes/kubernetes/pull/97290), [@neolit123](https://github.com/neolit123)) [SIG Cluster Lifecycle] -- Migrate log messages in pkg/scheduler/{scheduler.go,factory.go} to structured logging ([#97509](https://github.com/kubernetes/kubernetes/pull/97509), [@aldudko](https://github.com/aldudko)) [SIG Scheduling] -- Migrate proxy/iptables/proxier.go logs to structured logging ([#97678](https://github.com/kubernetes/kubernetes/pull/97678), [@JornShen](https://github.com/JornShen)) [SIG Network] -- Migrate some scheduler log messages to structured logging ([#97349](https://github.com/kubernetes/kubernetes/pull/97349), [@aldudko](https://github.com/aldudko)) [SIG Scheduling] -- NONE ([#97167](https://github.com/kubernetes/kubernetes/pull/97167), [@geegeea](https://github.com/geegeea)) [SIG Node] -- NetworkPolicy validation framework optimizations for rapidly verifying CNI's work correctly across several pods and namespaces ([#91592](https://github.com/kubernetes/kubernetes/pull/91592), [@jayunit100](https://github.com/jayunit100)) [SIG Network, Storage and Testing] -- Official support to build kubernetes with docker-machine / remote docker is removed. This change does not affect building kubernetes with docker locally. ([#97618](https://github.com/kubernetes/kubernetes/pull/97618), [@jherrera123](https://github.com/jherrera123)) [SIG Release and Testing] -- Scheduler plugin validation now provides all errors detected instead of the first one. ([#96745](https://github.com/kubernetes/kubernetes/pull/96745), [@lingsamuel](https://github.com/lingsamuel)) [SIG Node, Scheduling and Testing] -- Storage related e2e testsuite redesign & cleanup ([#96573](https://github.com/kubernetes/kubernetes/pull/96573), [@Jiawei0227](https://github.com/Jiawei0227)) [SIG Storage and Testing] -- The OIDC authenticator no longer waits 10 seconds before attempting to fetch the metadata required to verify tokens. ([#97693](https://github.com/kubernetes/kubernetes/pull/97693), [@enj](https://github.com/enj)) [SIG API Machinery and Auth] -- The `AttachVolumeLimit` feature gate that is GA since v1.17 is now removed. ([#96539](https://github.com/kubernetes/kubernetes/pull/96539), [@ialidzhikov](https://github.com/ialidzhikov)) [SIG Storage] -- The `CSINodeInfo` feature gate that is GA since v1.17 is unconditionally enabled, and can no longer be specified via the `--feature-gates` argument. ([#96561](https://github.com/kubernetes/kubernetes/pull/96561), [@ialidzhikov](https://github.com/ialidzhikov)) [SIG Apps, Auth, Scheduling, Storage and Testing] -- The deprecated feature gates `RotateKubeletClientCertificate`, `AttachVolumeLimit`, `VolumePVCDataSource` and `EvenPodsSpread` are now unconditionally enabled and can no longer be specified in component invocations. ([#97306](https://github.com/kubernetes/kubernetes/pull/97306), [@gavinfish](https://github.com/gavinfish)) [SIG Node, Scheduling and Storage] -- `ServiceNodeExclusion`, `NodeDisruptionExclusion` and `LegacyNodeRoleBehavior`(locked to false) features have been promoted to GA. - To prevent control plane nodes being added to load balancers automatically, upgrade users need to add "node.kubernetes.io/exclude-from-external-load-balancers" label to control plane nodes. ([#97543](https://github.com/kubernetes/kubernetes/pull/97543), [@pacoxu](https://github.com/pacoxu)) [SIG API Machinery, Apps, Cloud Provider and Network] - -### Uncategorized - -- Adding Brazilian Portuguese translation for kubectl ([#61595](https://github.com/kubernetes/kubernetes/pull/61595), [@cpanato](https://github.com/cpanato)) [SIG CLI] - -## Dependencies - -### Added -_Nothing has changed._ - -### Changed -- github.com/Azure/go-autorest/autorest: [v0.11.1 → v0.11.12](https://github.com/Azure/go-autorest/autorest/compare/v0.11.1...v0.11.12) -- github.com/coredns/corefile-migration: [v1.0.10 → v1.0.11](https://github.com/coredns/corefile-migration/compare/v1.0.10...v1.0.11) -- github.com/golang/mock: [v1.4.1 → v1.4.4](https://github.com/golang/mock/compare/v1.4.1...v1.4.4) -- github.com/google/cadvisor: [v0.38.5 → v0.38.6](https://github.com/google/cadvisor/compare/v0.38.5...v0.38.6) -- github.com/heketi/heketi: [c2e2a4a → v10.2.0+incompatible](https://github.com/heketi/heketi/compare/c2e2a4a...v10.2.0) -- github.com/miekg/dns: [v1.1.4 → v1.1.35](https://github.com/miekg/dns/compare/v1.1.4...v1.1.35) -- k8s.io/system-validators: v1.2.0 → v1.3.0 - -### Removed -- rsc.io/quote/v3: v3.1.0 -- rsc.io/sampler: v1.3.0 diff --git a/content/en/releases/OWNERS b/content/en/releases/OWNERS new file mode 100644 index 0000000000..bf258efe7c --- /dev/null +++ b/content/en/releases/OWNERS @@ -0,0 +1,15 @@ +# See the OWNERS docs at https://go.k8s.io/owners + +# This is the directory for English source content. +# Teams and members are visible at https://github.com/orgs/kubernetes/teams. + +reviewers: + - sig-docs-en-reviews + - release-engineering-reviewers + +approvers: + - sig-docs-en-owners + - release-engineering-approvers + +labels: +- sig/release \ No newline at end of file diff --git a/content/en/releases/_index.md b/content/en/releases/_index.md new file mode 100644 index 0000000000..af7819a0c1 --- /dev/null +++ b/content/en/releases/_index.md @@ -0,0 +1,27 @@ +--- +linktitle: Release History +title: Releases +type: docs +--- + + + + +The Kubernetes project maintains release branches for the most recent three minor releases ({{< skew latestVersion >}}, {{< skew prevMinorVersion >}}, {{< skew oldestMinorVersion >}}). Kubernetes 1.19 and newer receive approximately 1 year of patch support. Kubernetes 1.18 and older received approximately 9 months of patch support. + +Kubernetes versions are expressed as **x.y.z**, +where **x** is the major version, **y** is the minor version, and **z** is the patch version, following [Semantic Versioning](https://semver.org/) terminology. + +More information in the [version skew policy](/releases/version-skew-policy/) document. + + + +## Release History + +{{< release-data >}} + +## Upcoming Release + +Check out the [schedule](https://github.com/kubernetes/sig-release/tree/master/releases/release-{{< skew nextMinorVersion >}}) for the upcoming **{{< skew nextMinorVersion >}}** Kubernetes release! + +## Helpful Resources \ No newline at end of file diff --git a/content/en/releases/download.md b/content/en/releases/download.md new file mode 100644 index 0000000000..aa1fca98a4 --- /dev/null +++ b/content/en/releases/download.md @@ -0,0 +1,26 @@ +--- +title: Download Kubernetes +type: docs +--- +## Core Kubernetes components + +Find links to download Kubernetes components (and their checksums) in the [CHANGELOG](https://github.com/kubernetes/kubernetes/tree/master/CHANGELOG) files. + +Alternately, use [downloadkubernetes.com](https://www.downloadkubernetes.com/) to filter by version and architecture. + +## kubectl + + +The Kubernetes command-line tool, [kubectl](/docs/reference/kubectl/kubectl/), allows +you to run commands against Kubernetes clusters. + +You can use kubectl to deploy applications, inspect and manage cluster resources, +and view logs. For more information including a complete list of kubectl operations, see the +[`kubectl` reference documentation](/docs/reference/kubectl/). + +kubectl is installable on a variety of Linux platforms, macOS and Windows. +Find your preferred operating system below. + +- [Install kubectl on Linux](/docs/tasks/tools/install-kubectl-linux) +- [Install kubectl on macOS](/docs/tasks/tools/install-kubectl-macos) +- [Install kubectl on Windows](/docs/tasks/tools/install-kubectl-windows) \ No newline at end of file diff --git a/content/en/releases/notes.md b/content/en/releases/notes.md new file mode 100644 index 0000000000..300b5395ab --- /dev/null +++ b/content/en/releases/notes.md @@ -0,0 +1,13 @@ +--- +linktitle: Release Notes +title: Notes +type: docs +description: > + Kubernetes release notes. +sitemap: + priority: 0.5 +--- + +Release notes can be found by reading the [Changelog](https://github.com/kubernetes/kubernetes/tree/master/CHANGELOG) that matches your Kubernetes version. View the changelog for {{< skew latestVersion >}} on [GitHub](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-{{< skew latestVersion >}}.md). + +Alternately, release notes can be searched and filtered online at: [relnotes.k8s.io](relnotes.k8s.io). View filtered release notes for {{< skew latestVersion >}} on [relnotes.k8s.io](https://relnotes.k8s.io/?releaseVersions={{< skew latestVersion >}}.0). \ No newline at end of file diff --git a/content/en/releases/patch-releases.md b/content/en/releases/patch-releases.md new file mode 100644 index 0000000000..4c4770377a --- /dev/null +++ b/content/en/releases/patch-releases.md @@ -0,0 +1,195 @@ +--- +title: Patch Releases +type: docs +auto_generated: true +--- + + +{{< warning >}} +This content is auto-generated and links may not function. The source of the document is located [here](https://github.com/kubernetes/sig-release/blob/master/releases/patch-releases.md). +{{< /warning >}} + +# Kubernetes Patch Releases + +Schedule and team contact information for Kubernetes patch releases. + +For general information about Kubernetes release cycle, see the +[release process description]. + +## Cadence + +Our typical patch release cadence is monthly. It is +commonly a bit faster (1 to 2 weeks) for the earliest patch releases +after a 1.X minor release. Critical bug fixes may cause a more +immediate release outside of the normal cadence. We also aim to not make +releases during major holiday periods. + +## Contact + +See the [Release Managers page][release-managers] for full contact details on the Patch Release Team. + +Please give us a business day to respond - we may be in a different timezone! + +In between releases the team is looking at incoming cherry-pick +requests on a weekly basis. The team will get in touch with +submitters via GitHub PR, SIG channels in Slack, and direct messages +in Slack and [email](mailto:release-managers-private@kubernetes.io) +if there are questions on the PR. + +## Cherry-Picks + +Please follow the [cherry-pick process]. + +Cherry-picks must be merge-ready in GitHub with proper labels (eg: +approved, lgtm, release note) and passing CI tests ahead of the +cherry-pick deadline. This is typically two days before the target +release, but may be more. Earlier PR readiness is better, as we +need time to get CI signal after merging your cherry-picks ahead +of the actual release. + +Cherry-pick PRs which miss merge criteria will be carried over and tracked +for the next patch release. + +## Support Period + +In accordance with the [yearly support KEP][yearly-support], the Kubernetes +Community will support active patch release series for a period of roughly +fourteen (14) months. + +The first twelve months of this timeframe will be considered the standard +period. + +Towards the end of the twelve month, the following will happen: + +- [Release Managers][release-managers] will cut a release +- The patch release series will enter maintenance mode + +During the two-month maintenance mode period, Release Managers may cut +additional maintenance releases to resolve: + +- CVEs (under the advisement of the Product Security Committee) +- dependency issues (including base image updates) +- critical core component issues + +At the end of the two-month maintenance mode period, the patch release series +will be considered EOL (end of life) and cherry picks to the associated branch +are to be closed soon afterwards. + +Note that the 28th of the month was chosen for maintenance mode and EOL target +dates for simplicity (every month has it). + +## Upcoming Monthly Releases + +Timelines may vary with the severity of bug fixes, but for easier planning we +will target the following monthly release points. Unplanned, critical +releases may also occur in between these. + +| Monthly Patch Release | Target date | +| --- | --- | +| May 2021 | 2021-05-12 | +| June 2021 | 2021-06-16 | +| July 2021 | 2021-07-14 | + +## Detailed Release History for Active Branches + +### 1.21 + +**1.21** enters maintenance mode on **2022-04-28** + +End of Life for **1.21** is **2022-06-28** + +| PATCH RELEASE | CHERRY PICK DEADLINE | TARGET DATE | +|--- |--- |--- | +| 1.21.1 | 2021-05-07 | 2021-05-12 | + +### 1.20 + +**1.20** enters maintenance mode on **2021-12-28** + +End of Life for **1.20** is **2022-02-28** + +| PATCH RELEASE | CHERRY PICK DEADLINE | TARGET DATE | +|--- |--- |--- | +| 1.20.7 | 2021-05-07 | 2021-05-12 | +| 1.20.6 | 2021-04-09 | 2021-04-14 | +| 1.20.5 | 2021-03-12 | 2021-03-17 | +| 1.20.4 | 2021-02-12 | 2021-02-18 | +| 1.20.3 | [Conformance Tests Issue](https://groups.google.com/g/kubernetes-dev/c/oUpY9vWgzJo) | 2021-02-17 | +| 1.20.2 | 2021-01-08 | 2021-01-13 | +| 1.20.1 | [Tagging Issue](https://groups.google.com/g/kubernetes-dev/c/dNH2yknlCBA) | 2020-12-18 | + +### 1.19 + +**1.19** enters maintenance mode on **2021-08-28** + +End of Life for **1.19** is **2021-10-28** + +| PATCH RELEASE | CHERRY PICK DEADLINE | TARGET DATE | +|--- |--- |--- | +| 1.19.11 | 2021-05-07 | 2021-05-12 | +| 1.19.10 | 2021-04-09 | 2021-04-14 | +| 1.19.9 | 2021-03-12 | 2021-03-17 | +| 1.19.8 | 2021-02-12 | 2021-02-17 | +| 1.19.7 | 2021-01-08 | 2021-01-13 | +| 1.19.6 | [Tagging Issue](https://groups.google.com/g/kubernetes-dev/c/dNH2yknlCBA) | 2020-12-18 | +| 1.19.5 | 2020-12-04 | 2020-12-09 | +| 1.19.4 | 2020-11-06 | 2020-11-11 | +| 1.19.3 | 2020-10-09 | 2020-10-14 | +| 1.19.2 | 2020-09-11 | 2020-09-16 | +| 1.19.1 | 2020-09-04 | 2020-09-09 | + +### 1.18 + +**1.18** enters maintenance mode on **2021-04-28** + +End of Life for **1.18** is **2021-05-12** + +| PATCH RELEASE | CHERRY PICK DEADLINE | TARGET DATE | +|--- |--- |--- | +| 1.18.19 | 2021-05-07 | 2021-05-12 | +| 1.18.18 | 2021-04-09 | 2021-04-14 | +| 1.18.17 | 2021-03-12 | 2021-03-17 | +| 1.18.16 | 2021-02-12 | 2021-02-17 | +| 1.18.15 | 2021-01-08 | 2021-01-13 | +| 1.18.14 | [Tagging Issue](https://groups.google.com/g/kubernetes-dev/c/dNH2yknlCBA) | 2020-12-18 | +| 1.18.13 | 2020-12-04 | 2020-12-09 | +| 1.18.12 | N/A | 2020-11-12 | +| 1.18.11 | [No-op release](https://groups.google.com/g/kubernetes-dev/c/nJix1xLQvZE) | 2020-11-11 | +| 1.18.10 | 2020-10-09 | 2020-10-14 | +| 1.18.9 | 2020-09-11 | 2020-09-16 | +| 1.18.8 | N/A | 2020-08-13 | +| 1.18.7 | 2020-08-07 | 2020-08-12 | +| 1.18.6 | 2020-07-10 | 2020-07-15 | +| 1.18.5 | 2020-06-25 | 2020-06-26 | +| 1.18.4 | 2020-06-12 | 2020-06-17 | +| 1.18.3 | 2020-05-15 | 2020-05-20 | +| 1.18.2 | 2020-04-13 | 2020-04-16 | +| 1.18.1 | 2020-04-06 | 2020-04-08 | + +## Non-Active Branch History + +These releases are no longer supported. + +| Minor Version | Final Patch Release | EOL date | +| --- | --- | --- | +| 1.17 | 1.17.17 | 2021-01-13 | +| 1.16 | 1.16.15 | 2020-09-02 | +| 1.15 | 1.15.12 | 2020-05-06 | +| 1.14 | 1.14.10 | 2019-12-11 | +| 1.13 | 1.13.12 | 2019-10-15 | +| 1.12 | 1.12.10 | 2019-07-08 | +| 1.11 | 1.11.10 | 2019-05-01 | +| 1.10 | 1.10.13 | 2019-02-13 | +| 1.9 | 1.9.11 | 2018-09-29 | +| 1.8 | 1.8.15 | 2018-07-12 | +| 1.7 | 1.7.16 | 2018-04-04 | +| 1.6 | 1.6.13 | 2017-11-23 | +| 1.5 | 1.5.8 | 2017-10-01 | +| 1.4 | 1.4.12 | 2017-04-21 | +| 1.3 | 1.3.10 | 2016-11-01 | +| 1.2 | 1.2.7 | 2016-10-23 | + +[cherry-pick process]: https://git.k8s.io/community/contributors/devel/sig-release/cherry-picks.md +[release-managers]: /release-managers.md +[release process description]: https://git.k8s.io/community/contributors/devel/sig-release/release.md +[yearly-support]: https://git.k8s.io/enhancements/keps/sig-release/1498-kubernetes-yearly-support-period/README.md diff --git a/content/en/releases/release.md b/content/en/releases/release.md new file mode 100644 index 0000000000..1632a20473 --- /dev/null +++ b/content/en/releases/release.md @@ -0,0 +1,364 @@ +--- +title: The Release Cycle +type: docs +auto_generated: true +--- + + +{{< warning >}} +This content is auto-generated and links may not function. The source of the document is located [here](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-release/release.md). +{{< /warning >}} + +# Targeting enhancements, Issues and PRs to Release Milestones + +This document is focused on Kubernetes developers and contributors who need to +create an enhancement, issue, or pull request which targets a specific release +milestone. + +- [TL;DR](#tldr) + - [Normal Dev (Weeks 1-8)](#normal-dev-weeks-1-8) + - [Code Freeze (Weeks 9-11)](#code-freeze-weeks-9-11) + - [Post-Release (Weeks 11+)](#post-release-weeks-11) +- [Definitions](#definitions) +- [The Release Cycle](#the-release-cycle) +- [Removal Of Items From The Milestone](#removal-of-items-from-the-milestone) +- [Adding An Item To The Milestone](#adding-an-item-to-the-milestone) + - [Milestone Maintainers](#milestone-maintainers) + - [Feature additions](#feature-additions) + - [Issue additions](#issue-additions) + - [PR Additions](#pr-additions) +- [Other Required Labels](#other-required-labels) + - [SIG Owner Label](#sig-owner-label) + - [Priority Label](#priority-label) + - [Issue/PR Kind Label](#issuepr-kind-label) + +The process for shepherding enhancements, issues, and pull requests into a +Kubernetes release spans multiple stakeholders: + +- the enhancement, issue, and pull request owner(s) +- SIG leadership +- the [Release Team][release-team] + +Information on workflows and interactions are described below. + +As the owner of an enhancement, issue, or pull request (PR), it is your +responsibility to ensure release milestone requirements are met. Automation and +the Release Team will be in contact with you if updates are required, but +inaction can result in your work being removed from the milestone. Additional +requirements exist when the target milestone is a prior release (see +[cherry pick process][cherry-picks] for more information). + +## TL;DR + +If you want your PR to get merged, it needs the following required labels and +milestones, represented here by the Prow /commands it would take to add them: + +### Normal Dev (Weeks 1-8) + +- /sig {name} +- /kind {type} +- /lgtm +- /approved + +### [Code Freeze][code-freeze] (Weeks 9-11) + +- /milestone {v1.y} +- /sig {name} +- /kind {bug, failing-test} +- /lgtm +- /approved + +### Post-Release (Weeks 11+) + +Return to 'Normal Dev' phase requirements: + +- /sig {name} +- /kind {type} +- /lgtm +- /approved + +Merges into the 1.y branch are now [via cherry picks][cherry-picks], approved +by [Release Managers][release-managers]. + +In the past, there was a requirement for a milestone-targeted pull requests to +have an associated GitHub issue opened, but this is no longer the case. +Features or enhancements are effectively GitHub issues or [KEPs][keps] which +lead to subsequent PRs. + +The general labeling process should be consistent across artifact types. + +## Definitions + +- *issue owners*: Creator, assignees, and user who moved the issue into a + release milestone + +- *Release Team*: Each Kubernetes release has a team doing project management + tasks described [here][release-team]. + + The contact info for the team associated with any given release can be found + [here](https://git.k8s.io/sig-release/releases/). + +- *Y days*: Refers to business days + +- *enhancement*: see "[Is My Thing an Enhancement?](https://git.k8s.io/enhancements/README.md#is-my-thing-an-enhancement)" + +- *[Enhancements Freeze][enhancements-freeze]*: + the deadline by which [KEPs][keps] have to be completed in order for + enhancements to be part of the current release + +- *[Exception Request][exceptions]*: + The process of requesting an extension on the deadline for a particular + Enhancement + +- *[Code Freeze][code-freeze]*: + The period of ~4 weeks before the final release date, during which only + critical bug fixes are merged into the release. + +- *[Pruning](https://git.k8s.io/sig-release/releases/release_phases.md#pruning)*: + The process of removing an Enhancement from a release milestone if it is not + fully implemented or is otherwise considered not stable. + +- *release milestone*: semantic version string or + [GitHub milestone](https://help.github.com/en/github/managing-your-work-on-github/associating-milestones-with-issues-and-pull-requests) + referring to a release MAJOR.MINOR `vX.Y` version. + + See also + [release versioning](/contributors/design-proposals/release/versioning.md). + +- *release branch*: Git branch `release-X.Y` created for the `vX.Y` milestone. + + Created at the time of the `vX.Y-rc.0` release and maintained after the + release for approximately 12 months with `vX.Y.Z` patch releases. + + Note: releases 1.19 and newer receive 1 year of patch release support, and + releases 1.18 and earlier received 9 months of patch release support. + +## The Release Cycle + +![Image of one Kubernetes release cycle](release-cycle.png) + +Kubernetes releases currently happen approximately four times per year. + +The release process can be thought of as having three main phases: + +- Enhancement Definition +- Implementation +- Stabilization + +But in reality, this is an open source and agile project, with feature planning +and implementation happening at all times. Given the project scale and globally +distributed developer base, it is critical to project velocity to not rely on a +trailing stabilization phase and rather have continuous integration testing +which ensures the project is always stable so that individual commits can be +flagged as having broken something. + +With ongoing feature definition through the year, some set of items will bubble +up as targeting a given release. **[Enhancements Freeze][enhancements-freeze]** +starts ~4 weeks into release cycle. By this point all intended feature work for +the given release has been defined in suitable planning artifacts in +conjunction with the Release Team's [Enhancements Lead](https://git.k8s.io/sig-release/release-team/role-handbooks/enhancements/README.md). + +After Enhancements Freeze, tracking milestones on PRs and issues is important. +Items within the milestone are used as a punchdown list to complete the +release. *On issues*, milestones must be applied correctly, via triage by the +SIG, so that [Release Team][release-team] can track bugs and enhancements (any +enhancement-related issue needs a milestone). + +There is some automation in place to help automatically assign milestones to +PRs. + +This automation currently applies to the following repos: + +- `kubernetes/enhancements` +- `kubernetes/kubernetes` +- `kubernetes/release` +- `kubernetes/sig-release` +- `kubernetes/test-infra` + +At creation time, PRs against the `master` branch need humans to hint at which +milestone they might want the PR to target. Once merged, PRs against the +`master` branch have milestones auto-applied so from that time onward human +management of that PR's milestone is less necessary. On PRs against release +branches, milestones are auto-applied when the PR is created so no human +management of the milestone is ever necessary. + +Any other effort that should be tracked by the Release Team that doesn't fall +under that automation umbrella should be have a milestone applied. + +Implementation and bug fixing is ongoing across the cycle, but culminates in a +code freeze period. + +**[Code Freeze][code-freeze]** starts in week ~10 and continues for ~2 weeks. +Only critical bug fixes are accepted into the release codebase during this +time. + +There are approximately two weeks following Code Freeze, and preceding release, +during which all remaining critical issues must be resolved before release. +This also gives time for documentation finalization. + +When the code base is sufficiently stable, the master branch re-opens for +general development and work begins there for the next release milestone. Any +remaining modifications for the current release are cherry picked from master +back to the release branch. The release is built from the release branch. + +Each release is part of a broader Kubernetes lifecycle: + +![Image of Kubernetes release lifecycle spanning three releases](release-lifecycle.png) + +## Removal Of Items From The Milestone + +Before getting too far into the process for adding an item to the milestone, +please note: + +Members of the [Release Team][release-team] may remove issues from the +milestone if they or the responsible SIG determine that the issue is not +actually blocking the release and is unlikely to be resolved in a timely +fashion. + +Members of the Release Team may remove PRs from the milestone for any of the +following, or similar, reasons: + +- PR is potentially de-stabilizing and is not needed to resolve a blocking + issue +- PR is a new, late feature PR and has not gone through the enhancements + process or the [exception process][exceptions] +- There is no responsible SIG willing to take ownership of the PR and resolve + any follow-up issues with it +- PR is not correctly labelled +- Work has visibly halted on the PR and delivery dates are uncertain or late + +While members of the Release Team will help with labelling and contacting +SIG(s), it is the responsibility of the submitter to categorize PRs, and to +secure support from the relevant SIG to guarantee that any breakage caused by +the PR will be rapidly resolved. + +Where additional action is required, an attempt at human to human escalation +will be made by the Release Team through the following channels: + +- Comment in GitHub mentioning the SIG team and SIG members as appropriate for + the issue type +- Emailing the SIG mailing list + - bootstrapped with group email addresses from the + [community sig list][sig-list] + - optionally also directly addressing SIG leadership or other SIG members +- Messaging the SIG's Slack channel + - bootstrapped with the slackchannel and SIG leadership from the + [community sig list][sig-list] + - optionally directly "@" mentioning SIG leadership or others by handle + +## Adding An Item To The Milestone + +### Milestone Maintainers + +The members of the [`milestone-maintainers`](https://github.com/orgs/kubernetes/teams/milestone-maintainers/members) +GitHub team are entrusted with the responsibility of specifying the release +milestone on GitHub artifacts. + +This group is [maintained](https://git.k8s.io/sig-release/release-team/README.md#milestone-maintainers) +by SIG Release and has representation from the various SIGs' leadership. + +### Feature additions + +Feature planning and definition takes many forms today, but a typical example +might be a large piece of work described in a [KEP][keps], with associated task +issues in GitHub. When the plan has reached an implementable state and work is +underway, the enhancement or parts thereof are targeted for an upcoming milestone +by creating GitHub issues and marking them with the Prow "/milestone" command. + +For the first ~4 weeks into the release cycle, the Release Team's Enhancements +Lead will interact with SIGs and feature owners via GitHub, Slack, and SIG +meetings to capture all required planning artifacts. + +If you have an enhancement to target for an upcoming release milestone, begin a +conversation with your SIG leadership and with that release's Enhancements +Lead. + +### Issue additions + +Issues are marked as targeting a milestone via the Prow "/milestone" command. + +The Release Team's [Bug Triage Lead](https://git.k8s.io/sig-release/release-team/role-handbooks/bug-triage/README.md) +and overall community watch incoming issues and triage them, as described in +the contributor guide section on +[issue triage](/contributors/guide/issue-triage.md). + +Marking issues with the milestone provides the community better visibility +regarding when an issue was observed and by when the community feels it must be +resolved. During [Code Freeze][code-freeze], a milestone must be set to merge +a PR. + +An open issue is no longer required for a PR, but open issues and associated +PRs should have synchronized labels. For example a high priority bug issue +might not have its associated PR merged if the PR is only marked as lower +priority. + +### PR Additions + +PRs are marked as targeting a milestone via the Prow "/milestone" command. + +This is a blocking requirement during Code Freeze as described above. + +## Other Required Labels + +[Here is the list of labels and their use and purpose.](https://git.k8s.io/test-infra/label_sync/labels.md#labels-that-apply-to-all-repos-for-both-issues-and-prs) + +### SIG Owner Label + +The SIG owner label defines the SIG to which we escalate if a milestone issue +is languishing or needs additional attention. If there are no updates after +escalation, the issue may be automatically removed from the milestone. + +These are added with the Prow "/sig" command. For example to add the label +indicating SIG Storage is responsible, comment with `/sig storage`. + +### Priority Label + +Priority labels are used to determine an escalation path before moving issues +out of the release milestone. They are also used to determine whether or not a +release should be blocked on the resolution of the issue. + +- `priority/critical-urgent`: Never automatically move out of a release + milestone; continually escalate to contributor and SIG through all available + channels. + - considered a release blocking issue + - requires daily updates from issue owners during [Code Freeze][code-freeze] + - would require a patch release if left undiscovered until after the minor + release +- `priority/important-soon`: Escalate to the issue owners and SIG owner; move + out of milestone after several unsuccessful escalation attempts. + - not considered a release blocking issue + - would not require a patch release + - will automatically be moved out of the release milestone at Code Freeze + after a 4 day grace period +- `priority/important-longterm`: Escalate to the issue owners; move out of the + milestone after 1 attempt. + - even less urgent / critical than `priority/important-soon` + - moved out of milestone more aggressively than `priority/important-soon` + +### Issue/PR Kind Label + +The issue kind is used to help identify the types of changes going into the +release over time. This may allow the Release Team to develop a better +understanding of what sorts of issues we would miss with a faster release +cadence. + +For release targeted issues, including pull requests, one of the following +issue kind labels must be set: + +- `kind/api-change`: Adds, removes, or changes an API +- `kind/bug`: Fixes a newly discovered bug. +- `kind/cleanup`: Adding tests, refactoring, fixing old bugs. +- `kind/design`: Related to design +- `kind/documentation`: Adds documentation +- `kind/failing-test`: CI test case is failing consistently. +- `kind/feature`: New functionality. +- `kind/flake`: CI test case is showing intermittent failures. + +[cherry-picks]: /contributors/devel/sig-release/cherry-picks.md +[code-freeze]: https://git.k8s.io/sig-release/releases/release_phases.md#code-freeze +[enhancements-freeze]: https://git.k8s.io/sig-release/releases/release_phases.md#enhancements-freeze +[exceptions]: https://git.k8s.io/sig-release/releases/release_phases.md#exceptions +[keps]: https://git.k8s.io/enhancements/keps +[release-managers]: https://git.k8s.io/sig-release/release-managers.md +[release-team]: https://git.k8s.io/sig-release/release-team +[sig-list]: /sig-list.md diff --git a/content/en/docs/setup/release/version-skew-policy.md b/content/en/releases/version-skew-policy.md similarity index 96% rename from content/en/docs/setup/release/version-skew-policy.md rename to content/en/releases/version-skew-policy.md index 68ea7aef8a..56a7afda10 100644 --- a/content/en/docs/setup/release/version-skew-policy.md +++ b/content/en/releases/version-skew-policy.md @@ -6,22 +6,21 @@ reviewers: - sig-cluster-lifecycle - sig-node - sig-release -title: Kubernetes version and version skew support policy -content_type: concept -weight: 30 +title: Version Skew Policy +type: docs +description: > + The maximum version skew supported between various Kubernetes components. --- This document describes the maximum version skew supported between various Kubernetes components. Specific cluster deployment tools may place additional restrictions on version skew. - ## Supported versions -Kubernetes versions are expressed as **x.y.z**, -where **x** is the major version, **y** is the minor version, and **z** is the patch version, following [Semantic Versioning](https://semver.org/) terminology. +Kubernetes versions are expressed as **x.y.z**, where **x** is the major version, **y** is the minor version, and **z** is the patch version, following [Semantic Versioning](https://semver.org/) terminology. For more information, see [Kubernetes Release Versioning](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/release/versioning.md#kubernetes-release-versioning). The Kubernetes project maintains release branches for the most recent three minor releases ({{< skew latestVersion >}}, {{< skew prevMinorVersion >}}, {{< skew oldestMinorVersion >}}). Kubernetes 1.19 and newer receive approximately 1 year of patch support. Kubernetes 1.18 and older received approximately 9 months of patch support. diff --git a/data/i18n/en/en.toml b/data/i18n/en/en.toml index c6f24f8e2e..3eebea4ebb 100644 --- a/data/i18n/en/en.toml +++ b/data/i18n/en/en.toml @@ -57,6 +57,9 @@ other = "Latest version" [docs_version_other_heading] other = "Older versions" +[end_of_life] +other = "End of Life:" + [error_404_were_you_looking_for] other = "Were you looking for:" @@ -75,9 +78,15 @@ other = "Was this page helpful?" [feedback_yes] other = "Yes" +[inline_list_separator] +other = "," + [input_placeholder_email_address] other = "email address" +[latest_release] +other = "Latest Release:" + [latest_version] other = "latest version." @@ -192,6 +201,9 @@ other = "Create an issue" [prerequisites_heading] other = "Before you begin" +[previous_patches] +other = "Patch Releases:" + [seealso_heading] other = "See Also" @@ -223,4 +235,4 @@ other = "Versions" other = "Warning:" [whatsnext_heading] -other = "What's next" +other = "What's next" \ No newline at end of file diff --git a/data/releases/OWNERS b/data/releases/OWNERS new file mode 100644 index 0000000000..bf258efe7c --- /dev/null +++ b/data/releases/OWNERS @@ -0,0 +1,15 @@ +# See the OWNERS docs at https://go.k8s.io/owners + +# This is the directory for English source content. +# Teams and members are visible at https://github.com/orgs/kubernetes/teams. + +reviewers: + - sig-docs-en-reviews + - release-engineering-reviewers + +approvers: + - sig-docs-en-owners + - release-engineering-approvers + +labels: +- sig/release \ No newline at end of file diff --git a/data/releases/schedule.yaml b/data/releases/schedule.yaml new file mode 100644 index 0000000000..aa0d0ae546 --- /dev/null +++ b/data/releases/schedule.yaml @@ -0,0 +1,67 @@ +schedules: +- release: 1.21 + next: 1.21.1 + cherryPickDeadline: 2021-05-07 + targetDate: 2021-05-12 + endOfLifeDate: 2022-04-30 + previousPatches: +- release: 1.20 + next: 1.20.7 + cherryPickDeadline: 2021-05-07 + targetDate: 2021-05-12 + endOfLifeDate: 2021-12-30 + previousPatches: + - release: 1.20.6 + cherryPickDeadline: 2021-04-09 + targetDate: 2021-04-14 + - release: 1.20.5 + cherryPickDeadline: 2021-03-12 + targetDate: 2021-03-17 + - release: 1.20.4 + cherryPickDeadline: 2021-02-12 + targetDate: 2021-02-18 + - release: 1.20.3 + cherryPickDeadline: "Conformance Tests Issue https://groups.google.com/g/kubernetes-dev/c/oUpY9vWgzJo" + targetDate: 2021-02-17 + - release: 1.20.2 + cherryPickDeadline: 2021-01-08 + targetDate: 2021-01-13 + - release: 1.20.1 + cherryPickDeadline: "Tagging Issue https://groups.google.com/g/kubernetes-dev/c/dNH2yknlCBA" + targetDate: 2020-12-18 +- release: 1.19 + next: 1.19.11 + cherryPickDeadline: 2021-05-07 + targetDate: 2021-05-12 + endOfLifeDate: 2021-09-30 + previousPatches: + - release: 1.19.10 + cherryPickDeadline: 2021-04-09 + targetDate: 2021-04-14 + - release: 1.19.9 + cherryPickDeadline: 2021-03-12 + targetDate: 2021-03-17 + - release: 1.19.8 + cherryPickDeadline: 2021-02-12 + targetDate: 2021-02-17 + - release: 1.19.7 + cherryPickDeadline: 2021-01-08 + targetDate: 2021-01-13 + - release: 1.19.6 + cherryPickDeadline: "Tagging Issue https://groups.google.com/g/kubernetes-dev/c/dNH2yknlCBA" + targetDate: 2020-12-18 + - release: 1.19.5 + cherryPickDeadline: 2020-12-04 + targetDate: 2020-12-09 + - release: 1.19.4 + cherryPickDeadline: 2020-11-06 + targetDate: 2020-11-11 + - release: 1.19.3 + cherryPickDeadline: 2020-10-09 + targetDate: 2020-10-14 + - release: 1.19.2 + cherryPickDeadline: 2020-09-11 + targetDate: 2020-09-16 + - release: 1.19.1 + cherryPickDeadline: 2020-09-04 + targetDate: 2020-09-09 diff --git a/layouts/partials/navbar-version-selector.html b/layouts/partials/navbar-version-selector.html index ce38b96d9e..4842405695 100644 --- a/layouts/partials/navbar-version-selector.html +++ b/layouts/partials/navbar-version-selector.html @@ -3,6 +3,7 @@