Question: 在评估生产环境的解决方案时，请考虑要管理自己 Kubernetes 集群（_抽象层面_）的哪些方面或将其转移给提供商。 <!-- <del> Some possible abstractions of a Kubernetes cluster are {{< glossary_tooltip text="applications" term_id="applications" >}}, {{< glossary_tooltip text="data plane" term_id="data-plane" >}}, {{< glossary_tooltip text="control plane" term_id="control-plane" >}}, {{< glossary_tooltip text="cluster infrastructure" term_id="cluster-infrastructure" >}}, and {{< glossary_tooltip text="cluster operations" term_id="cluster-operations" >}}. --> Kubernetes 集群的一些抽象概念可能是 {{< glossary_tooltip text="应用领域" term_id="applications" >}}、{{< glossary_tooltip text="数据平面" term_id="data-plane" >}}、{{< glossary_tooltip text="控制平面" term_id="control-plane" >}}、{{< glossary_tooltip text="集群基础架构" term_id="cluster-infrastructure" >}} 和 {{< glossary_tooltip text="集群操作层面" term_id="cluster-operations" >}}。 <!-- The following diagram lists the possible abstractions of a Kubernetes cluster and whether an abstraction is self-managed or managed by a provider. --> 下图列出了 Kubernetes 集群的抽象概念以及抽象概念是由自我管理还是由提供商管理。 <!-- Production environment solutions![Production environment solutions](/images/docs/KubernetesSolutions.svg) --> 生产环境解决方案![生产环境解决方案](/images/docs/KubernetesSolutions.svg) <!-- {{< table caption="Production environment solutions table lists the providers and the solutions." >}} The following production environment solutions table lists the providers and the solutions that they offer. </del> <ins> [Kubernetes Partners](https://kubernetes.io/partners/#conformance) includes a list of [Certified Kubernetes](https://github.com/cncf/k8s-conformance/#certified-kubernetes) providers. </ins> --> <del> {{< table caption="生产环境解决方案表列出了提供商和解决方案。" >}} 以下生产环境解决方案表列出了提供商及其提供的解决方案。 <!-- |Providers  | Managed | Turnkey cloud  | On-prem datacenter  | Custom (cloud) | Custom (On-premises VMs)| Custom (Bare Metal) | |提供商  | 管理者 | Turnkey 云  | 本地数据中心  | 自定义（云） | 自定义（本地VM）| 定制（裸机） | --> |提供商  | 管理者 | Turnkey 云  | 本地数据中心  | 自定义（云） | 自定义（本地VM）| 定制（裸机） | | ---------  | ------  | ------         | ------         | ------         | ------                  | -----               | | [Agile Stacks](https://www.agilestacks.com/products/kubernetes)|                | ✔       | ✔         |       |                    | | [Alibaba Cloud](https://www.alibabacloud.com/product/kubernetes)|     | ✔ |          |    |                      | | [Amazon](https://aws.amazon.com)   | [Amazon EKS](https://aws.amazon.com/eks/)   |[Amazon EC2](https://aws.amazon.com/ec2/)  |          |        |                       | | [AppsCode](https://appscode.com/products/pharmer/)          | ✔      |  |       |         |  | | [APPUiO](https://appuio.ch/)  | ✔     | ✔  |   ✔ | |  | | | [Banzai Cloud Pipeline Kubernetes Engine (PKE)](https://banzaicloud.com/products/pke/) | | ✔ | | ✔ | ✔ | ✔ | | [CenturyLink Cloud](https://www.ctl.io/)     |       | ✔ |   |  | | | [Cisco Container Platform](https://cisco.com/go/containers)     |       |  | ✔  |  | | | [Cloud Foundry Container Runtime (CFCR)](https://docs-cfcr.cfapps.io/)       |     |  |   | ✔ |✔ | | [CloudStack](https://cloudstack.apache.org/)           |      |  |   | | ✔| | [Canonical](https://ubuntu.com/kubernetes)      |       ✔       | ✔       |      ✔       | ✔     |✔  | ✔ | [Containership](https://containership.io/containership-platform)            | ✔       |✔  |     |     |                   | | [D2iQ](https://d2iq.com/) |  | [Kommander](https://d2iq.com/solutions/ksphere) | [Konvoy](https://d2iq.com/solutions/ksphere/konvoy) | [Konvoy](https://d2iq.com/solutions/ksphere/konvoy) | [Konvoy](https://d2iq.com/solutions/ksphere/konvoy) | [Konvoy](https://d2iq.com/solutions/ksphere/konvoy) | | [Digital Rebar](https://provision.readthedocs.io/en/tip/README.html)            |        |  |      |     |  | ✔ | [DigitalOcean](https://www.digitalocean.com/products/kubernetes/)        | ✔      |  |      |     |            | | [Docker Enterprise](https://www.docker.com/products/docker-enterprise) |       |✔  | ✔     |  |     | ✔ | [Fedora (Multi Node)](https://kubernetes.io/docs/getting-started-guides/fedora/flannel_multi_node_cluster/)     |      |  |      | |    ✔       | ✔ | [Fedora (Single Node)](https://kubernetes.io/docs/getting-started-guides/fedora/fedora_manual_config/)     |      |  |      | |           | ✔ | [Gardener](https://gardener.cloud/) | ✔ | ✔ | ✔ (via OpenStack) | ✔ | | | [Giant Swarm](https://giantswarm.io/)     | ✔       | ✔ |   ✔    |     | | [Google](https://cloud.google.com/)           |  [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine/)       | [Google Compute Engine (GCE)](https://cloud.google.com/compute/)|[GKE On-Prem](https://cloud.google.com/gke-on-prem/)       |  |  |     |  |      |       |  | | [IBM](https://www.ibm.com/in-en/cloud)        | [IBM Cloud Kubernetes Service](https://cloud.ibm.com/kubernetes/catalog/cluster)| |[IBM Cloud Private](https://www.ibm.com/in-en/cloud/private) | | | [Ionos](https://www.ionos.com/enterprise-cloud)        | [Ionos Managed Kubernetes](https://www.ionos.com/enterprise-cloud/managed-kubernetes) | [Ionos Enterprise Cloud](https://www.ionos.com/enterprise-cloud) | | | [Kontena Pharos](https://www.kontena.io/pharos/)          |    |✔|    ✔    |        |         | | [KubeOne](https://github.com/kubermatic/kubeone) |  | ✔ | ✔ | ✔ | ✔ | ✔ | | [Kubermatic](https://kubermatic.io/) | ✔ | ✔ | ✔ | ✔ | ✔ |  | | [KubeSail](https://kubesail.com/)    | ✔       |  |      |     |        | | [Kubespray](https://kubespray.io/#/)       |       |    |       |✔  | ✔ | ✔ | | [Kublr](https://kublr.com/)        |✔ | ✔  |✔       |✔  |✔ |✔ | | [Microsoft Azure](https://azure.microsoft.com)    |  [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/)     |  |     |        |    | | [Mirantis Cloud Platform](https://www.mirantis.com/software/kubernetes/)    |       |  | ✔ |  |    | | [Nirmata](https://www.nirmata.com/)          |              |   ✔     | ✔            |      |          | | [Nutanix](https://www.nutanix.com/en)         | [Nutanix Karbon](https://www.nutanix.com/products/karbon)             | [Nutanix Karbon](https://www.nutanix.com/products/karbon)       |             |      | [Nutanix AHV](https://www.nutanix.com/products/acropolis/virtualization)         | | [OpenShift](https://www.openshift.com)          |[OpenShift Dedicated](https://www.openshift.com/products/dedicated/) and [OpenShift Online](https://www.openshift.com/products/online/)              |        | [OpenShift Container Platform](https://www.openshift.com/products/container-platform/)            |      |  [OpenShift Container Platform](https://www.openshift.com/products/container-platform/)        |[OpenShift Container Platform](https://www.openshift.com/products/container-platform/) | [Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)](https://docs.cloud.oracle.com/iaas/Content/ContEng/Concepts/contengoverview.htm)          | ✔             |   ✔     |             |      |          | | [oVirt](https://www.ovirt.org/)         |              |        |             |     | ✔          | | [Pivotal](https://pivotal.io/) | | [Enterprise Pivotal Container Service (PKS)](https://pivotal.io/platform/pivotal-container-service) | [Enterprise Pivotal Container Service (PKS)](https://pivotal.io/platform/pivotal-container-service)           |      |          | | [Platform9](https://platform9.com/)         | [Platform9 Managed Kubernetes](https://platform9.com/managed-kubernetes/)             |       | [Platform9 Managed Kubernetes](https://platform9.com/managed-kubernetes/)            |  ✔    |  ✔    |   ✔ | [Rancher](https://rancher.com/)         |              |   [Rancher 2.x](https://rancher.com/docs/rancher/v2.x/en/)     |             |  [Rancher Kubernetes Engine (RKE)](https://rancher.com/docs/rke/latest/en/)    |          | [k3s](https://k3s.io/) | [StackPoint](https://stackpoint.io/)          | ✔            |  ✔      |             |      |          | | [Supergiant](https://supergiant.io/)         |              |✔        |             |      |          | | [SUSE](https://www.suse.com/)        |              | ✔       |             |      |          | | [SysEleven](https://www.syseleven.io/)         | ✔             |        |             |      |          | | [Tencent Cloud](https://intl.cloud.tencent.com/)  | [Tencent Kubernetes Engine](https://intl.cloud.tencent.com/product/tke) |   ✔   |   ✔ |    |      |   ✔  | | [VEXXHOST](https://vexxhost.com/)         | ✔             | ✔      |             |      |          | | [VMware](https://cloud.vmware.com/) | [VMware Cloud PKS](https://cloud.vmware.com/vmware-cloud-pks)              |[VMware Enterprise PKS](https://cloud.vmware.com/vmware-enterprise-pks)        |   [VMware Enterprise PKS](https://cloud.vmware.com/vmware-enterprise-pks)          | [VMware Essential PKS](https://cloud.vmware.com/vmware-essential-pks)      |          |[VMware Essential PKS](https://cloud.vmware.com/vmware-essential-pks) | [Z.A.R.V.I.S.](https://zarvis.ai/) | ✔ | | | | | | </del> <ins> [Kubernetes 合作伙伴](https://kubernetes.io/partners/#conformance) 包括一个 [已认证的 Kubernetes](https://github.com/cncf/k8s-conformance/#certified-kubernetes) 提供商列表。 </ins> {{% /capture %}}

This is a Feature Request Chinese "Gettting started" page not updated. <!-- Please only use this template for submitting feature/enhancement requests --<!-- See for guidance on writing an actionable issue description. --What would you like to be <!-- Describe as precisely as possible how this feature/enhancement should work from the user perspective. What should be changed, etc. -- page is not corresponed to English original page especially the "Learning environment" part and "Production environment" part ! ! Why is this needed Update Chinese "Gettting started" page Comments <!-- Any additional related comments that might help. Drawings/mockups would be extremely helpful (if required). --Page in English: Page in Chinese:
/language zh
/assign


Question: <ins> --- layout: blog title: "Kubernetes 1.27: StatefulSet 启动序号简化了迁移" date: 2023-04-28 slug: statefulset-start-ordinal --- <!-- layout: blog title: "Kubernetes 1.27: StatefulSet Start Ordinal Simplifies Migration" date: 2023-04-28 slug: statefulset-start-ordinal --> <!-- **Author**: Peter Schuurman (Google) --> **作者：** Peter Schuurman (Google) **译者：** Xin Li (DaoCloud) <!-- Kubernetes v1.26 introduced a new, alpha-level feature for [StatefulSets](/docs/concepts/workloads/controllers/statefulset/) that controls the ordinal numbering of Pod replicas. As of Kubernetes v1.27, this feature is now beta. Ordinals can start from arbitrary non-negative numbers. This blog post will discuss how this feature can be used. --> Kubernetes v1.26 为 [StatefulSet](/zh-cn/docs/concepts/workloads/controllers/statefulset/) 引入了一个新的 Alpha 级别特性，可以控制 Pod 副本的序号。 从 Kubernetes v1.27 开始，此特性进级到 Beta 阶段。序数可以从任意非负数开始， 这篇博文将讨论如何使用此功能。 <!-- ## Background StatefulSets ordinals provide sequential identities for pod replicas. When using [`OrderedReady` Pod management](/docs/tutorials/stateful-application/basic-stateful-set/#orderedready-pod-management) Pods are created from ordinal index `0` up to `N-1`. --> ## 背景 StatefulSet 序号为 Pod 副本提供顺序标识。当使用 [`OrderedReady` Pod 管理策略](/docs/tutorials/stateful-application/basic-stateful-set/#orderedready-pod-management)时， Pod 是从序号索引 `0` 到 `N-1` 顺序创建的。 <!-- With Kubernetes today, orchestrating a StatefulSet migration across clusters is challenging. Backup and restore solutions exist, but these require the application to be scaled down to zero replicas prior to migration. In today's fully connected world, even planned application downtime may not allow you to meet your business goals. You could use [Cascading Delete](/docs/tutorials/stateful-application/basic-stateful-set/#cascading-delete) or [On Delete](/docs/tutorials/stateful-application/basic-stateful-set/#on-delete) to migrate individual pods, however this is error prone and tedious to manage. You lose the self-healing benefit of the StatefulSet controller when your Pods fail or are evicted. --> 如今使用 Kubernetes 跨集群编排 StatefulSet 迁移具有挑战性。 虽然存在备份和恢复解决方案，但这些解决方案需要在迁移之前将应用程序的副本数缩为 0。 在当今这个完全互联的世界中，即使是计划内的应用停机可能也无法实现你的业务目标。 你可以使用[级联删除](/zh-cn/docs/tutorials/stateful-application/basic-stateful-set/#cascading-delete)或 [OnDelete 策略](/zh-cn/docs/tutorials/stateful-application/basic-stateful-set/#on-delete)来迁移单个 Pod， 但是这很容易出错并且管理起来很乏味。 当你的 Pod 出现故障或被逐出时，你将失去 StatefulSet 控制器的自我修复优势。 <!-- Kubernetes v1.26 enables a StatefulSet to be responsible for a range of ordinals within a range {0..N-1} (the ordinals 0, 1, ... up to N-1). With it, you can scale down a range {0..k-1} in a source cluster, and scale up the complementary range {k..N-1} in a destination cluster, while maintaining application availability. This enables you to retain *at most one* semantics (meaning there is at most one Pod with a given identity running in a StatefulSet) and [Rolling Update](/docs/tutorials/stateful-application/basic-stateful-set/#rolling-update) behavior when orchestrating a migration across clusters. --> Kubernetes v1.26 使 StatefulSet 能够负责 {0..N-1} 范围内的一系列序数（序数 0、1、... 直到 N-1）。 有了它，你可以缩小源集群中的范围 {0..k-1}，并扩大目标集群中的互补范围 {k..N-1}，同时保证应用程序可用性。 这使你在编排跨集群迁移时保留**至多一个**语义（意味着最多有一个具有给定身份的 Pod 在 StatefulSet 中运行）和[滚动更新](/zh-cn/docs/tutorials/stateful-application/basic-stateful-set/#rolling-update）行为。 <!-- ## Why would I want to use this feature? Say you're running your StatefulSet in one cluster, and need to migrate it out to a different cluster. There are many reasons why you would need to do this: * **Scalability**: Your StatefulSet has scaled too large for your cluster, and has started to disrupt the quality of service for other workloads in your cluster. * **Isolation**: You're running a StatefulSet in a cluster that is accessed by multiple users, and namespace isolation isn't sufficient. * **Cluster Configuration**: You want to move your StatefulSet to a different cluster to use some environment that is not available on your current cluster. * **Control Plane Upgrades**: You want to move your StatefulSet to a cluster running an upgraded control plane, and can't handle the risk or downtime of in-place control plane upgrades. --> ## 我为什么要使用此功能？ 假设你在一个集群中运行 StatefulSet，并且需要将其迁移到另一个集群。你需要这样做的原因有很多： * **可扩展性**：你的 StatefulSet 对于你的集群而言规模过大，并且已经开始破坏集群中其他工作负载的服务质量。 * **隔离性**：你在一个供多个用户访问的集群中运行 StatefulSet，而命名空间隔离是不够的。 * **集群配置**：你想将 StatefulSet 迁移到另一个集群，以使用在当前集群上不存在的某些环境。 * **控制平面升级**：你想将 StatefulSet 迁移到运行着较高版本控制平面， 并且无法处承担就地升级控制平面所产生的风险或预留停机时间。 <!-- ## How do I use it? Enable the `StatefulSetStartOrdinal` feature gate on a cluster, and create a StatefulSet with a customized `.spec.ordinals.start`. --> ## 我该如何使用它？ 在集群上启用 `StatefulSetStartOrdinal` 特性门控，并使用自定义的 `.spec.ordinals.start` 创建一个 StatefulSet。 <!-- ## Try it out In this demo, I'll use the new mechanism to migrate a StatefulSet from one Kubernetes cluster to another. The [redis-cluster](https://github.com/bitnami/charts/tree/main/bitnami/redis-cluster) Bitnami Helm chart will be used to install Redis. --> ## 试试看吧 在此演示中，我将使用新机制将 StatefulSet 从一个 Kubernetes 集群迁移到另一个。 [redis-cluster](https://github.com/bitnami/charts/tree/main/bitnami/redis-cluster) Bitnami Helm chart 将用于安装 Redis。 <!-- Tools Required: * [yq](https://github.com/mikefarah/yq) * [helm](https://helm.sh/docs/helm/helm_install/) --> 所需工具： * [yq](https://github.com/mikefarah/yq) * [helm](https://helm.sh/docs/helm/helm_install/) <!-- ### Pre-requisites {#demo-pre-requisites} To do this, I need two Kubernetes clusters that can both access common networking and storage; I've named my clusters `source` and `destination`. Specifically, I need: --> ### 先决条件    {#demo-pre-requisites} 为此，我需要两个可以访问公共网络和存储的 Kubernetes 集群； 我已将集群命名为 `source` 和 `destination`。具体来说，我需要： <!-- * The `StatefulSetStartOrdinal` feature gate enabled on both clusters. * Client configuration for `kubectl` that lets me access both clusters as an administrator. * The same `StorageClass` installed on both clusters, and set as the default StorageClass for both clusters. This `StorageClass` should provision underlying storage that is accessible from either or both clusters. * A flat network topology that allows for pods to send and receive packets to and from Pods in either clusters. If you are creating clusters on a cloud provider, this configuration may be called private cloud or private network. --> * 在两个集群上都启用 `StatefulSetStartOrdinal` 特性门控。 * `kubectl` 的客户端配置允许我以管理员身份访问这两个集群。 * 两个集群上都安装了相同的 `StorageClass`，并设置为两个集群的默认 `StorageClass`。 这个 `StorageClass` 应该提供可从一个或两个集群访问的底层存储。 * 一种扁平的网络拓扑，允许 Pod 向任一集群中的 Pod 发送数据包和从中接收数据包。 如果你在云提供商上创建集群，则此配置可能被称为私有云或私有网络。 <!-- 1. Create a demo namespace on both clusters: --> 1. 在两个集群上创建一个用于演示的命名空间： ``` kubectl create ns kep-3335 ``` <!-- 2. Deploy a Redis cluster with six replicas in the source cluster: --> 2. 在 `source` 集群中部署一个有六个副本的 Redis 集群： ``` helm repo add bitnami https://charts.bitnami.com/bitnami helm install redis --namespace kep-3335  bitnami/redis-cluster  --set persistence.size=1Gi  --set cluster.nodes=6 ``` <!-- 3. Check the replication status in the source cluster: --> 3. 检查 `source` 集群中的副本状态： ``` kubectl exec -it redis-redis-cluster-0 -- /bin/bash -c  "redis-cli -c -h redis-redis-cluster -a $(kubectl get secret redis-redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d) CLUSTER NODES;" ``` ``` 2ce30362c188aabc06f3eee5d92892d95b1da5c3 10.104.0.14:6379@16379 myself,master - 0 1669764411000 3 connected 10923-16383 7743661f60b6b17b5c71d083260419588b4f2451 10.104.0.16:6379@16379 slave 2ce30362c188aabc06f3eee5d92892d95b1da5c3 0 1669764410000 3 connected 961f35e37c4eea507cfe12f96e3bfd694b9c21d4 10.104.0.18:6379@16379 slave a8765caed08f3e185cef22bd09edf409dc2bcc61 0 1669764411000 1 connected 7136e37d8864db983f334b85d2b094be47c830e5 10.104.0.15:6379@16379 slave 2cff613d763b22c180cd40668da8e452edef3fc8 0 1669764412595 2 connected a8765caed08f3e185cef22bd09edf409dc2bcc61 10.104.0.19:6379@16379 master - 0 1669764411592 1 connected 0-5460 2cff613d763b22c180cd40668da8e452edef3fc8 10.104.0.17:6379@16379 master - 0 1669764410000 2 connected 5461-10922 ``` <!-- 4. Deploy a Redis cluster with zero replicas in the destination cluster: --> 4. 在 `destination` 集群中部署一个零副本的 Redis 集群： ``` helm install redis --namespace kep-3335  bitnami/redis-cluster  --set persistence.size=1Gi  --set cluster.nodes=0  --set redis.extraEnvVars[0].name=REDIS_NODES,redis.extraEnvVars[0].value="redis-redis-cluster-headless.kep-3335.svc.cluster.local"  --set existingSecret=redis-redis-cluster ``` <!-- 5. Scale down the `redis-redis-cluster` StatefulSet in the source cluster by 1, to remove the replica `redis-redis-cluster-5`: --> 5. 将源集群中的 `redis-redis-cluster` StatefulSet 副本数缩小 1， 以删除副本 `redis-redis-cluster-5`： ``` kubectl patch sts redis-redis-cluster -p '{"spec": {"replicas": 5}}' ``` <!-- 6. Migrate dependencies from the source cluster to the destination cluster: The following commands copy resources from `source` to `destionation`. Details that are not relevant in `destination` cluster are removed (eg: `uid`, `resourceVersion`, `status`). **Steps for the source cluster** --> 6. 将依赖从 `source` 集群迁移到 `destionation` 集群： 以下命令将依赖资源从 `source` 复制到 `destionation`，其中与 `destionation` 集群无关的详细信息已被删除（例如：`uid`、`resourceVersion`、`status`）。 <!-- Note: If using a `StorageClass` with `reclaimPolicy: Delete` configured, you should patch the PVs in `source` with `reclaimPolicy: Retain` prior to deletion to retain the underlying storage used in `destination`. See [Change the Reclaim Policy of a PersistentVolume](/docs/tasks/administer-cluster/change-pv-reclaim-policy/) for more details. --> 说明：如果使用配置了 `reclaimPolicy: Delete` 的 `StorageClass`， 你应该在删除之前使用 `reclaimPolicy: Retain` 修补 `source` 中的 PV， 以保留 `destination` 中使用的底层存储。 有关详细信息，请参阅[更改 PersistentVolume](/zh-cn/docs/tasks/administer-cluster/change-pv-reclaim-policy/) 的回收策略。 ``` kubectl get pvc redis-data-redis-redis-cluster-5 -o yaml | yq 'del(.metadata.uid, .metadata.resourceVersion, .metadata.annotations, .metadata.finalizers, .status)' > /tmp/pvc-redis-data-redis-redis-cluster-5.yaml kubectl get pv $(yq '.spec.volumeName' /tmp/pvc-redis-data-redis-redis-cluster-5.yaml) -o yaml | yq 'del(.metadata.uid, .metadata.resourceVersion, .metadata.annotations, .metadata.finalizers, .spec.claimRef, .status)' > /tmp/pv-redis-data-redis-redis-cluster-5.yaml kubectl get secret redis-redis-cluster -o yaml | yq 'del(.metadata.uid, .metadata.resourceVersion)' > /tmp/secret-redis-redis-cluster.yaml ``` <!-- **Steps for the destination cluster** Note: For the PV/PVC, this procedure only works if the underlying storage system that your PVs use can support being copied into `destination`. Storage that is associated with a specific node or topology may not be supported. Additionally, some storage systems may store addtional metadata about volumes outside of a PV object, and may require a more specialized sequence to import a volume. --> **`destination` 集群中的步骤** 说明：对于 PV/PVC，此过程仅在你的 PV 使用的底层存储系统支持复制到 `destination` 集群时才有效。可能不支持与特定节点或拓扑关联的存储。此外，某些存储系统可能会在 PV 对象之外存储有关卷的附加元数据，并且可能需要更专门的序列来导入卷。 ``` kubectl create -f /tmp/pv-redis-data-redis-redis-cluster-5.yaml kubectl create -f /tmp/pvc-redis-data-redis-redis-cluster-5.yaml kubectl create -f /tmp/secret-redis-redis-cluster.yaml ``` <!-- 7. Scale up the `redis-redis-cluster` StatefulSet in the destination cluster by 1, with a start ordinal of 5: --> 7. 将 `destination` 集群中的 `redis-redis-cluster` StatefulSet 扩容 1，起始序号为 5： ``` kubectl patch sts redis-redis-cluster -p '{"spec": {"ordinals": {"start": 5}, "replicas": 1}}' ``` <!-- 8. Check the replication status in the destination cluster: --> 8. 检查 `destination` 集群中的副本状态： ``` kubectl exec -it redis-redis-cluster-5 -- /bin/bash -c  "redis-cli -c -h redis-redis-cluster -a $(kubectl get secret redis-redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d) CLUSTER NODES;" ``` <!-- I should see that the new replica (labeled `myself`) has joined the Redis cluster (the IP address belongs to a different CIDR block than the replicas in the source cluster). --> 我应该看到新副本（标记为 `myself`）已加入 Redis 集群（IP 地址与 `source` 集群中的副本归属于不同的 CIDR 块）。 ``` 2cff613d763b22c180cd40668da8e452edef3fc8 10.104.0.17:6379@16379 master - 0 1669766684000 2 connected 5461-10922 7136e37d8864db983f334b85d2b094be47c830e5 10.108.0.22:6379@16379 myself,slave 2cff613d763b22c180cd40668da8e452edef3fc8 0 1669766685609 2 connected 2ce30362c188aabc06f3eee5d92892d95b1da5c3 10.104.0.14:6379@16379 master - 0 1669766684000 3 connected 10923-16383 961f35e37c4eea507cfe12f96e3bfd694b9c21d4 10.104.0.18:6379@16379 slave a8765caed08f3e185cef22bd09edf409dc2bcc61 0 1669766683600 1 connected a8765caed08f3e185cef22bd09edf409dc2bcc61 10.104.0.19:6379@16379 master - 0 1669766685000 1 connected 0-5460 7743661f60b6b17b5c71d083260419588b4f2451 10.104.0.16:6379@16379 slave 2ce30362c188aabc06f3eee5d92892d95b1da5c3 0 1669766686613 3 connected ``` <!-- 9. Repeat steps #5 to #7 for the remainder of the replicas, until the Redis StatefulSet in the source cluster is scaled to 0, and the Redis StatefulSet in the destination cluster is healthy with 6 total replicas. --> 9. 对剩余的副本重复 #5 到 #7 的步骤，直到 `source` 集群中的 Redis StatefulSet 副本缩放为 0， 并且 `destination` 集群中的 Redis StatefulSet 健康，总共有 6 个副本。 <!-- ## What's Next? This feature provides a building block for a StatefulSet to be split up across clusters, but does not prescribe the mechanism as to how the StatefulSet should be migrated. Migration requires coordination of StatefulSet replicas, along with orchestration of the storage and network layer. This is dependent on the storage and connectivity requirements of the application installed by the StatefulSet. Additionally, many StatefulSets are managed by [operators](/docs/concepts/extend-kubernetes/operator/), which adds another layer of complexity to migration. --> ## 接下来？ 此特性为跨集群拆分 StatefulSet 提供了一项基本支撑技术，但没有规定 StatefulSet 的迁移机制。 迁移需要对 StatefulSet 副本的协调，以及对存储和网络层的编排。这取决于使用 StatefulSet 安装的应用程序的存储和网络连接要求。此外，许多 StatefulSet 由 [operator](/zh-cn/docs/concepts/extend-kubernetes/operator/) 管理，这也增加了额外的迁移复杂性。 <!-- If you're interested in building enhancements to make these processes easier, get involved with [SIG Multicluster](https://github.com/kubernetes/community/blob/master/sig-multicluster) to contribute! --> 如果你有兴趣构建增强功能以简化这些过程，请参与 [SIG Multicluster](https://github.com/kubernetes/community/blob/master/sig-multicluster) 做出贡献！ </ins>

This blog has not zh version yet. I will localize it. Open the issue to avoid possible dup. /assign /language zh
/area blog


Question: <!-- overview --> <del> {{< feature-state for_k8s_version="v1.16" state="beta" >}} </del> <ins> {{< feature-state for_k8s_version="v1.22" state="stable" >}} </ins> ## Introduction

According to the : this feature has been graduated to GA in 1.22 The doc still indicates:
/retitle Incorrect feature state for Server-side Apply /kind bug /language en Which page is wrong, ? Can you provide the URL for it?
/wg api-expression
I think the page is /triage accepted
/assign


Question: ### Needs UX Review * Issues that are suggestions for improving the user interface of the site. <del> * Fixing broken site elements. </del> <ins> * Fixing broken site elements. </ins> ## Prioritizing Issues

<!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!--Required Information--This is a... [ ] Feature Request [x] Bug Report Problem: For users using K8S versions 1.8 and lower that don't have the fix contained in it may be necessary to set for the OpenStack cloud provider when installing on OpenStack clusters that expose their Cinder endpoint using paths rather than ports to avoid auto-detection errors such as: This includes for users trying out K8S on a devstack environment, and potentially other deployment tools. In this situation it is possible to resolve using: Valid values for are: With being the default. Proposed Solution: Highlight the bs-version parameter as optional (so not minimal configuration) but required in some circumstances. Page to Update:


Question:
  KubeCon + CloudNativeCon North America 2021 Los Angeles, California + Virtual. message: |  5 days of incredible opportunites to collaborate, learn + share with the entire community!
   5 days of incredible opportunities to collaborate, learn + share with the entire community!
  October 11 - 15, 2021. - name: Kubecon 2021 China

Problem: The text opportunites is mistyped on the announcement section of . For the problem, check the page . File to Update: /good-first-issue /kind document /assign /language en
The label(s) cannot be applied, because the repository doesn't have them. <detailsIn response to : Problem: The text opportunites is mistyped on the announcement section of . For the problem, check the page . /kind document /assign /language en Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/remove-good-first-issue Banner changes are actually a bit weird.
/language en
/triage accepted


Question: ### Cài đặt kubectl binary với curl trên Windows <del> 1. Tải về phiên bản mới nhất {{< param "fullversion" >}} từ [đường dẫn này](https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe). </del> <ins> 1. Tải về phiên bản mới nhất {{< param "fullversion" >}} từ [đường dẫn này](https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe). </ins> Hoặc nếu bạn đã cài đặt `curl`, hãy sử dụng câu lệnh sau: ``` <del> curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe </del> <ins> curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe </ins> ``` <del> Để tìm ra phiên bản ổn định mới nhất, hãy xem [https://storage.googleapis.com/kubernetes-release/release/stable.txt](https://storage.googleapis.com/kubernetes-release/release/stable.txt). </del> <ins> Để tìm ra phiên bản ổn định mới nhất, hãy xem [https://dl.k8s.io/release/stable.txt](https://dl.k8s.io/release/stable.txt). </ins> 2. Đưa bản binary vào biến môi trường PATH của bạn. 3. Kiểm tra chắn chắn phiên bản `kubectl` giống với bản đã tải về:

This is a Bug Report <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: There are still references to instead of is the correct advertised download host and will eventually move to be fastly shielding a fully community-owned bucket ref: Proposed Solution: Replace with Also replace any references with using if applicable. Page to Update: Assorted e.g. , <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--<!--Additional Information:--
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/assign
hi Not a problem, didn't see anyone assigned to this issue. I am unassigning myself and assigning it to you. /unassign
/assign
Hi, I found a small issue with your proposed changes regarding one of the URLs, which is mentioned twice in the file. While returns as expected, I am getting an nginx-rendered HTML page saying for the new command () instead. As I understand, it happens due to the redirect configured on the new web server. Thus, works fine for me (it returns as expected).
i see Let me update it, thanks your work
Just done, please review all of PRs
Thanks!
And yes: These will need to follow redirects, in the future the tentative plan is it will redirect to a CDN in front of a different bucket created in a fully project / SIG-K8s-Infra controlled GCP or AWS account. I would recommend for downloading with curl more generally, even in docs / usage for other hosts.


Question: --- <del> title: "autocompletado con fish" description: "Configuración opcional para habilitar el autocompletado en la shell fish." </del> <ins> title: "Autocompletado con Fish" description: "Configuración opcional para habilitar el autocompletado de la shell Fish" </ins> headless: true _build: list: never

This is a Feature Request What would you like to be Localize to Spanish Why is this needed There is no Spanish localization for this file. Comments /triage accepted /kind feature /language es /sig docs
/assign


Question: {{< note >}} Certificates created using the `certificates.k8s.io` API are signed by a <del> [dedicated CA](#a-note-to-cluster-administrators). It is possible to configure your cluster to use the cluster root </del> <ins> [dedicated CA](#configuring-your-cluster-to-provide-signing). It is possible to configure your cluster to use the cluster root </ins> CA for this purpose, but you should never rely on this. Do not assume that these certificates will validate against the cluster root CA. {{< /note >}}

This is a Bug Report Problem: Following below hyperlinks are not working under task: and The reason for it is it both redirects to but the is changed to in this PR: Proposed Solution: Changed to for both dedicated CA and custom CA. Page to Update:
Also, the hyperlinks for both dedicated CA and custom CA were in this PR:
/assign /sig auth
Fixed it here:
/language en /triage accepted Thanks for spotting this
you're welcome!


Question: --- approvers: - smarterclayton <del> title: Encrypting data at rest </del> <ins> title: Encrypting Secret Data at Rest </ins> --- {% capture overview %}

uses title Encrypting data at rest which gives the impression, it's any data whereas it's only for Secrets. This term is widely used for storage/database systems and in this case it does not really mean that. A more accurate title would be Encrypting Secrets at rest. What do you think (Not to mention, it doesn't tell you anything that it's going to be about Secrets when you look at the left sidebar) !
Issues go stale after 90d of inactivity. Mark the issue as fresh with . Stale issues rot after an additional 30d of inactivity and eventually close. Prevent issues from auto-closing with an comment. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle stale
/remove-lifecyle stale /assign


Question: ### 노드에 적용된 cordon 해제 <del> 1.  스케줄 가능(schedulable)으로 표시하여 노드를 다시 온라인 상태로 만든다. </del> <ins> -  스케줄 가능(schedulable)으로 표시하여 노드를 다시 온라인 상태로 만든다. </ins> ```shell # <node-to-drain>을 노드의 이름으로 바꾼다.

This is a Bug Report <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: Broken layout on "kubeadm " ! Proposed Solution: Check and apply upstream changes. Page to Update: <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--<!--Additional Information:--/language ko
/assign
/unassign This issue already has been assigned to .


Question: 参考[控制节点上拓扑管理策略](/zh/docs/tasks/administer-cluster/topology-manager/) 了解详细信息。 <ins> <!-- ## Graceful Node Shutdown {#graceful-node-shutdown} --> ## 节点体面关闭 {#graceful-node-shutdown} {{< feature-state state="alpha" for_k8s_version="v1.20" >}} <!-- If you have enabled the `GracefulNodeShutdown` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/), then the kubelet attempts to detect the node system shutdown and terminates pods running on the node. Kubelet ensures that pods follow the normal [pod termination process](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination) during the node shutdown. --> 如果你启用了 `GracefulNodeShutdown` [特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)， 那么 kubelet 尝试检测节点的系统关闭事件并终止在节点上运行的 Pod。 在节点终止期间，kubelet 保证 Pod 遵从常规的 [Pod 终止流程](/zh/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination)。 <!-- When the `GracefulNodeShutdown` feature gate is enabled, kubelet uses [systemd inhibitor locks](https://www.freedesktop.org/wiki/Software/systemd/inhibit/) to delay the node shutdown with a given duration. During a shutdown kubelet terminates pods in two phases: --> 当启用了 `GracefulNodeShutdown` 特性门控时， kubelet 使用 [systemd 抑制器锁](https://www.freedesktop.org/wiki/Software/systemd/inhibit/) 在给定的期限内延迟节点关闭。在关闭过程中，kubelet 分两个阶段终止 Pod： <!-- 1. Terminate regular pods running on the node. 2. Terminate [critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical) running on the node. --> 1. 终止在节点上运行的常规 Pod。 2. 终止在节点上运行的[关键 Pod](/zh/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical)。 <!-- Graceful Node Shutdown feature is configured with two [`KubeletConfiguration`](/docs/tasks/administer-cluster/kubelet-config-file/) options: * `ShutdownGracePeriod`: * Specifies the total duration that the node should delay the shutdown by. This is the total grace period for pod termination for both regular and [critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical). * `ShutdownGracePeriodCriticalPods`: * Specifies the duration used to terminate [critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical) during a node shutdown. This should be less than `ShutdownGracePeriod`. --> 节点体面关闭的特性对应两个 [`KubeletConfiguration`](/zh/docs/tasks/administer-cluster/kubelet-config-file/) 选项： * `ShutdownGracePeriod`： * 指定节点应延迟关闭的总持续时间。此时间是 Pod 体面终止的时间总和，不区分常规 Pod 还是 [关键 Pod](/zh/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical)。 * `ShutdownGracePeriodCriticalPods`： * 在节点关闭期间指定用于终止 [关键 Pod](/zh/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical) 的持续时间。该值应小于 `ShutdownGracePeriod`。 <!-- For example, if `ShutdownGracePeriod=30s`, and `ShutdownGracePeriodCriticalPods=10s`, kubelet will delay the node shutdown by 30 seconds. During the shutdown, the first 20 (30-10) seconds would be reserved for gracefully terminating normal pods, and the last 10 seconds would be reserved for terminating [critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical). --> 例如，如果设置了 `ShutdownGracePeriod=30s` 和 `ShutdownGracePeriodCriticalPods=10s`，则 kubelet 将延迟 30 秒关闭节点。 在关闭期间，将保留前 20（30 - 10）秒用于体面终止常规 Pod，而保留最后 10 秒用于终止 [关键 Pod](/zh/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical)。 </ins> ## {{% heading "whatsnext" %}} <!--

The Chinese version of the chapter introducing the concept of misses the explanation of the info field compared to the English version. Please check it.
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/language zh
this is fixed here


Question: persistentVolumes, are not in any namespace. --> 大多数 kubernetes 资源（例如 Pod、Service、副本控制器等）都位于某些名字空间中。 <del> 但是名字空间资源本身并不在名字空间中。而且底层资源，例如 [节点](/zh-cn/docs/concepts/architecture/nodes/)和持久化卷不属于任何名字空间。 </del> <ins> 但是名字空间资源本身并不在名字空间中。而且底层资源， 例如[节点](/zh-cn/docs/concepts/architecture/nodes/)和持久化卷不属于任何名字空间。 </ins> <!-- To see which Kubernetes resources are and aren't in a namespace:

markdown <img width="681" alt="WX20220809- src="https://user-"
page: /triage accepted /assign
namespace


Question: Azure File CSI driver does not support using same volume with different fsgroups, if Azurefile CSI migration is enabled, using same volume with different fsgroups won't be supported at all. <ins> #### azureFile CSI migration complete {{< feature-state for_k8s_version="v1.21" state="alpha" >}} To disable the `azureFile` storage plugin from being loaded by the controller manager and the kubelet, set the `InTreePluginAzureFileUnregister` flag to `true`. </ins> ### cephfs A `cephfs` volume allows an existing CephFS volume to be

This is a Bug Report <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: doesn't mention the feature gate , but it should do. Proposed Solution: Update documentation for migration from in-tree Azure File driver. Page to Update: <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--Additional Information: /sig storage /language en
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/assign


Question: ## References <del> - [Docs for the DNS cluster addon](http://releases.k8s.io/{{page.githubbranch}}/build/kube-dns/README.md) </del> <ins> - [Docs for the DNS cluster addon](http://releases.k8s.io/{{page.githubbranch}}/build-tools/kube-dns/README.md) </ins>

<!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!--Required Information--This is a... <!-- choose one by changing [ ] to [x] --- [ ] Feature Request [x] Bug Report Problem: The reference link at the bottom of the docs page on appears to be broken. the link points to , which redirects to This returns a 404 not found page on github. Proposed Solution: Looking though github, it appears that the kube-dns was moved in github to cluster/addons about 4 months ago under dns. the can be found at now and possibly parts of it were also moved into Page to Update: <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--<!--Additional Information:--


Question:
 {{ end }} -->   {{ $ulNr := 0 }} {{ $ulShow := cond (isset .Site.Params.ui "ul_show") .Site.Params.ui.ul_show 1 }} {{ $sidebarMenuTruncate := cond (isset .Site.Params.ui "sidebar_menu_truncate") .Site.Params.ui.sidebar_menu_truncate 50 }} {{ $currentLang := .Site.Language }}   {{ $ulNr := 0 -}} {{ $ulShow := cond (isset .Site.Params.ui "ul_show") .Site.Params.ui.ul_show 1 -}} {{ $sidebarMenuTruncate := cond (isset .Site.Params.ui "sidebar_menu_truncate") .Site.Params.ui.sidebar_menu_truncate 50 -}} {{ $currentLang := .Site.Language -}}
 {{ template "section-tree-nav-section" (dict "page" . "section" .FirstSection "shouldDelayActive" $shouldDelayActive "sidebarMenuTruncate" $sidebarMenuTruncate "ulNr" $ulNr "ulShow" (add $ulShow 1) "currentLang" $currentLang)  }}

  {{ define "section-tree-nav-section" }} {{ $s := .section }} {{ $p := .page }} {{ $shouldDelayActive := .shouldDelayActive }} {{ $sidebarMenuTruncate := .sidebarMenuTruncate }} {{ $treeRoot := cond (eq .ulNr 0) true false }} {{ $ulNr := .ulNr }} {{ $ulShow := .ulShow }} {{ $active := and (not $shouldDelayActive) (eq $s $p) }} {{ $activePath := and (not $shouldDelayActive) ($p.IsDescendant $s) }} {{ $show := cond (or (lt $ulNr $ulShow) $activePath (and (not $shouldDelayActive) (eq $s.Parent $p.Parent)) (and (not $shouldDelayActive) (eq $s.Parent $p)) (and (not $shouldDelayActive) ($p.IsDescendant $s.Parent))) true false }} {{ $mid := printf "m-%s" ($s.RelPermalink | anchorize) }} {{ $pages_tmp := where (union $s.Pages $s.Sections).ByWeight ".Params.toc_hide" "!=" true }} {{ $pages := $pages_tmp | first $sidebarMenuTruncate }} {{ $withChild := gt (len $pages) 0 }} {{ $manualLink := cond (isset $s.Params "manuallink") $s.Params.manualLink ( cond (isset $s.Params "manuallinkrelref") (relref $s $s.Params.manualLinkRelref) $s.RelPermalink) }} {{ $manualLinkTitle := cond (isset $s.Params "manuallinktitle") $s.Params.manualLinkTitle $s.Title }}   {{ define "section-tree-nav-section" -}} {{ $s := .section -}} {{ $p := .page -}} {{ $shouldDelayActive := .shouldDelayActive -}} {{ $sidebarMenuTruncate := .sidebarMenuTruncate -}} {{ $treeRoot := cond (eq .ulNr 0) true false -}} {{ $ulNr := .ulNr -}} {{ $ulShow := .ulShow -}} {{ $active := and (not $shouldDelayActive) (eq $s $p) -}} {{ $activePath := and (not $shouldDelayActive) ($p.IsDescendant $s) -}} {{ $show := cond (or (lt $ulNr $ulShow) $activePath (and (not $shouldDelayActive) (eq $s.Parent $p.Parent)) (and (not $shouldDelayActive) (eq $s.Parent $p)) (and (not $shouldDelayActive) ($p.IsDescendant $s.Parent))) true false -}} {{ $mid := printf "m-%s" ($s.RelPermalink | anchorize) -}} {{ $pages_tmp := where (union $s.Pages $s.Sections).ByWeight ".Params.toc_hide" "!=" true -}} {{ $pages := $pages_tmp | first $sidebarMenuTruncate -}} {{ $withChild := gt (len $pages) 0 -}} {{ $manualLink := cond (isset $s.Params "manuallink") $s.Params.manualLink ( cond (isset $s.Params "manuallinkrelref") (relref $s $s.Params.manualLinkRelref) $s.RelPermalink) -}} {{ $manualLinkTitle := cond (isset $s.Params "manuallinktitle") $s.Params.manualLinkTitle $s.Title -}}
  {{ if (and $p.Site.Params.ui.sidebar_menu_foldable (ge $ulNr 1)) }}   {{ if (and $p.Site.Params.ui.sidebar_menu_foldable (ge $ulNr 1)) -}}  <input type="checkbox" id="{{ $mid }}-check"{{ if $activePath}} checked{{ end }}/> {{ with $s.Params.Icon}}{{ end }}{{ $s.LinkTitle }}  {{ else }}   {{ else -}}  {{ if not $treeRoot }} {{ with $s.Params.Icon}}{{ end }}{{ $s.LinkTitle }}  {{ end }} {{ end }} {{if $withChild }} {{ $ulNr := add $ulNr 1 }}   {{ end -}} {{ end -}} {{ if $withChild -}} {{ $ulNr := add $ulNr 1 -}}
  {{ $pages := where (union $s.Pages $s.Sections).ByWeight ".Params.toc_hide" "!=" true }} {{ with site.Params.language_alternatives }}   {{ $pages := where (union $s.Pages $s.Sections).ByWeight ".Params.toc_hide" "!=" true -}} {{ with site.Params.language_alternatives -}}  {{ range . }}  {{ with (where $.section.Translations ".Lang" . ) }} {{ $p := index . 0 }} {{ $pages =  $pages | lang.Merge (union $p.Pages $p.Sections) }} {{ end }} {{ end }} {{ end }} {{ $pages := $pages | first 50 }} {{ range $pages }} {{ if (not (and (eq $s $p.Site.Home) (eq .Params.toc_root true)) ) }} {{ $mid := printf "m-%s" (.RelPermalink | anchorize) }} {{ $active := eq . $p }} {{ $isForeignLanguage := (ne (string .Lang) (string $.currentLang)) }} {{ if (and $isForeignLanguage  ($p.IsDescendant $s)) }}   {{ with (where $.section.Translations ".Lang" . ) -}} {{ $p := index . 0 -}} {{ $pages =  $pages | lang.Merge (union $p.Pages $p.Sections) -}} {{ end -}} {{ end -}} {{ end -}} {{ $pages := $pages | first 50 -}} {{ range $pages -}} {{ if (not (and (eq $s $p.Site.Home) (eq .Params.toc_root true)) ) -}} {{ $mid := printf "m-%s" (.RelPermalink | anchorize) -}} {{ $active := eq . $p -}} {{ $isForeignLanguage := (ne (string .Lang) (string $.currentLang)) -}} {{ if (and $isForeignLanguage  ($p.IsDescendant $s)) -}}    {{ .LinkTitle }}{{ if $isForeignLanguage }} ({{ .Lang | upper }}){{ end }}   {{ .LinkTitle }}{{ if $isForeignLanguage }} ({{ .Lang | upper }}){{ end -}}    {{ else }}   {{ else -}}  {{ template "section-tree-nav-section" (dict "page" $p "section" . "currentLang" $.currentLang "shouldDelayActive" $shouldDelayActive "sidebarMenuTruncate" $sidebarMenuTruncate "ulNr" $ulNr "ulShow" $ulShow) }}  {{ end }} {{ end }} {{ end }}   {{- end }} {{- end }} {{- end }}
  {{ end }}   {{- end }}
  {{ end }}   {{- end }}

This is a Bug Report <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: I saw by accident very big page files on Kubernetes documentation. For example is lines long and the lines 286- are taken for the sidebar menu containing a lot of whitespace (do right-mouse and "view page source"). Proposed Solution: I reported the issue already with Docsy: and proposed a pull request. But this will not be enough. Somebody has to update too. Page to Update: <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--<!--Additional Information:--
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/assign
The hugo Docsy theme side issue is resolved and closed: When will somebody review and implement pull request ? You can do this separate from a Docsy theme update at It is only about (huge) whitespace reduction, not a functional change. But k8s website users will benefit in user experience.


Question: ## Daemon Podがどのようにスケジューリングされるか <del> ### デフォルトスケジューラーによってスケジューリングされる場合 </del> <ins> DaemonSetは、全ての利用可能なNodeがPodのコピーを稼働させることを保証します。DaemonSetコントローラーは対象となる各Nodeに対してPodを作成し、ターゲットホストに一致するようにPodの`spec.affinity.nodeAffinity`フィールドを追加します。Podが作成されると、通常はデフォルトのスケジューラーが引き継ぎ、`.spec.nodeName`を設定することでPodをターゲットホストにバインドします。新しいNodeに適合できない場合、デフォルトスケジューラーは新しいPodの[優先度](/ja/docs/concepts/scheduling-eviction/pod-priority-preemption/#pod-priority)に基づいて、既存Podのいくつかを先取り(退避)させることがあります。 </ins> <del> {{< feature-state for_k8s_version="1.17" state="stable" >}} </del> <ins> ユーザーは、DaemonSetの`.spec.template.spec.schedulerName`フィールドを設定することにより、DaemonSetのPodに対して異なるスケジューラーを指定することができます。 </ins> <del> DaemonSetは全ての利用可能なNodeが単一のPodのコピーを稼働させることを保証します。通常、Podが稼働するNodeはKubernetesスケジューラーによって選択されます。しかし、DaemonSetのPodは代わりにDaemonSetコントローラーによって作成され、スケジューリングされます。 下記の問題について説明します: * 矛盾するPodのふるまい: スケジューリングされるのを待っている通常のPodは、作成されているが`Pending`状態となりますが、DaemonSetのPodは`Pending`状態で作成されません。これはユーザーにとって困惑するものです。 * [Podプリエンプション(Pod preemption)](/docs/concepts/configuration/pod-priority-preemption/)はデフォルトスケジューラーによってハンドルされます。もしプリエンプションが有効な場合、そのDaemonSetコントローラーはPodの優先順位とプリエンプションを考慮することなくスケジューリングの判断を行います。 `ScheduleDaemonSetPods`は、DaemonSetのPodに対して`NodeAffinity`項目を追加することにより、DaemonSetコントローラーの代わりにデフォルトスケジューラーを使ってDaemonSetのスケジュールを可能にします。その際に、デフォルトスケジューラーはPodをターゲットのホストにバインドします。もしDaemonSetのNodeAffinityが存在するとき、それは新しいものに置き換えられます(ターゲットホストを選択する前に、元のNodeAffinityが考慮されます)。DaemonSetコントローラーはDaemonSetのPodの作成や修正を行うときのみそれらの操作を実施します。そしてDaemonSetの`.spec.template`フィールドに対しては何も変更が加えられません。 </del> <ins> `.spec.template.spec.affinity.nodeAffinity`フィールド(指定された場合)で指定された元のNodeアフィニティは、DaemonSetコントローラーが対象Nodeを評価する際に考慮されますが、作成されたPod上では対象Nodeの名前と一致するNodeアフィニティに置き換わります。 </ins> ```yaml nodeAffinity:

This is a Feature Request <!-- Please only use this template for submitting feature/enhancement requests --<!-- See for guidance on writing an actionable issue description. --What would you like to be <!-- Describe as precisely as possible how this feature/enhancement should work from the user perspective. What should be changed, etc. --Updated Japanese translation for the file. Why is this needed There are several updates in and therefore this page is outdated. Comments <!-- Any additional related comments that might help. Drawings/mockups would be extremely helpful (if required). --/language ja
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/assign


Question: <!-- overview --> <!-- When you deploy Kubernetes, you get a cluster. <del> {{< glossary_definition term_id="cluster" length="all" prepend="A Kubernetes cluster consists of">}} </del> <ins> {{ < glossary_definition term_id="cluster" length="all" prepend="A Kubernetes cluster consists of">}} </ins> This document outlines the various components you need to have for a complete and working Kubernetes cluster. <del> {{< figure src="/images/docs/components-of-kubernetes.svg" alt="Components of Kubernetes" caption="The components of a Kubernetes cluster" class="diagram-large" >}} </del> <ins> {{ < figure src="/images/docs/components-of-kubernetes.svg" alt="Components of Kubernetes" caption="The components of a Kubernetes cluster" class="diagram-large" >}} </ins> --> 当你部署完 Kubernetes，便拥有了一个完整的集群。

!
url Language Chinese
/retitle [zh-cn] Disorganized Layout of 'Kubernetes Components Page' /language zh
/triage accepted /kind bug
/assign


Question: defines what action the {{< glossary_tooltip text="control plane" term_id="control-plane" >}} takes if a potential violation is detected: --> <del> ## 为名字空间设置 Pod 安全性准入控制标签 </del> <ins> ## 为名字空间设置 Pod 安全性准入控制标签 {#pod-security-admission-labels-for-namespaces} </ins> 一旦特性被启用或者安装了 Webhook，你可以配置名字空间以定义每个名字空间中 Pod 安全性准入控制模式。

This is a Feature Request <!-- Please only use this template for submitting feature/enhancement requests --<!-- See for guidance on writing an actionable issue description. --What would you like to be <!-- Describe as precisely as possible how this feature/enhancement should work from the user perspective. What should be changed, etc. --add and translate Chinese document: English: Why is this needed Support for more localization. Comments <!-- Any additional related comments that might help. Drawings/mockups would be extremely helpful (if required). --/language zh /assign
/triage accepted


Question: * `kubectl`：用来与集群通信的命令行工具。 <ins> <!-- kubeadm **will not** install or manage `kubelet` or `kubectl` for you, so you will need to ensure they match the version of the Kubernetes control plane you want kubeadm to install for you. If you do not, there is a risk of a version skew occurring that can lead to unexpected, buggy behaviour. However, _one_ minor version skew between the kubelet and the control plane is supported, but the kubelet version may never exceed the API server version. For example, kubelets running 1.7.0 should be fully compatible with a 1.8.0 API server, but not vice versa. For information about installing `kubectl`, see [Install and set up kubectl](/docs/tasks/tools/). --> </ins> kubeadm **不能** 帮你安装或者管理 `kubelet` 或 `kubectl`，所以你需要 确保它们与通过 kubeadm 安装的控制平面的版本相匹配。 如果不这样做，则存在发生版本偏差的风险，可能会导致一些预料之外的错误和问题。

(kubeadm) []
/triage accepted /kind bug /assign /language zh


Question: spec: containers: - name: php-redis <del> image: gcr.io/google_samples/gb-frontend:v3 </del> <ins> image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5 </ins>

Hi Currently we obsrved that following image is not availble
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/language en /sig docs
can you please provide the page link of the issue?
HI Kubernetes/Website PFA link
/retitle Container image is not available for /kind bug
This looks similar to issue we already have I think it is a duplicate. /triage duplicate
Thanks for raising this! However, closing this request as it closely mirrors the original issue. Feel free to continue the discussion on the original issue. /close not-planned
Closing this issue, marking it as "Not Planned". <detailsIn response to : Thanks for raising this! Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details


Question: <ins> apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: csr-creator rules: - apiGroups: - certificates.k8s.io resources: - certificatesigningrequests verbs: - create - get - list - watch </ins>

/language zh
/reopen This was incorrectly
Reopened this issue. <detailsIn response to : /reopen This was incorrectly Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/assign


Question: PVs of that default. Specifying a default StorageClass is done by setting the annotation `storageclass.kubernetes.io/is-default-class` equal to `true` in a StorageClass object. If the administrator does not specify a default, the <del> cluster responds to PVC creation as if the admission plugin were turned off. If more than one default is specified, the admission plugin forbids the creation of all PVCs. </del> <ins> cluster responds to PVC creation as if the admission plugin were turned off. If more than one default StorageClass is specified, the newest default is used when the PVC is dynamically provisioned. </ins> * If the admission plugin is turned off, there is no notion of a default StorageClass. All PVCs that have `storageClassName` set to `""` can be bound only to PVs that have `storageClassName` also set to `""`.

Here is a statement under the documentation. If more than one default StorageClass is accidentally set, the newest default is used when the PVC is dynamically provisioned. Here is another statement that contradicts with the first one in the documentation. If more than one default is specified, the admission plugin forbids the creation of all PVCs.
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/assign
Pages related to issue: , /language en
/retitle Inconsistencies in default StorageClass behaviour in "Storage Classes" and "Persistent Volumes" pages /sig storage
/sig docs


Question: | `MemoryPressure`    | `True` if pressure exists on the node memory - that is, if the node memory is low; otherwise `False` | | `PIDPressure`    | `True` if pressure exists on the processes - that is, if there are too many processes on the node; otherwise `False` | | `NetworkUnavailable`    | `True` if the network for the node is not correctly configured, otherwise `False` | <ins> {{< /table >}} </ins> --> {{< table caption = "节点状况及每种状况适用场景的描述" >}} | 节点状况       | 描述        |

The Chinese version of the chapter introducing the concept of misses the explanation of the info field compared to the English version. Please check it.
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/language zh
this is fixed here


Question: baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch enabled=1 gpgcheck=1 <del> repo_gpgcheck=1 </del> gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF

, Red Hat-based distributions: we are facing an issue when installing kubectl on Redhat/centos7 VM, and when applying:
I'm going to take the liberty of reformatting the issue description so that it is more readable.
I'm not sure if you're reporting a fault or if you're asking for advice. If there's a fault, please explain how we can replicate it and how the outcome differs from what you expected. If you want advice, GitHub is not the right place for support requests. You could instead check and ask there if your question has not yet been answered. You can also post your question on the or to the forum. /triage needs-information /language en
I'm reporting an issue, when installing kubectl, using the following: yum install -y kubectl The following failure occurs: if I'm setting and to False and trying to again it is installed successfully. I assume that the following are not valid anymore and needs to be updated:
/sig release
Setting in fixes the issue. ( is still enabled, it's just that must be disabled).
It looks as if the Linux advice for is out of date. Ideally, the Linux Foundation / CNCF / Kubernetes project would publish its own artifacts and not rely on Google here. I'm not sure what the fix would be. My guess is that we do prefer to have all signatures valid and not to recommend that people bypass some of the checks. /sig security is this a duplicate of an existing issue? If so, let's make that link.
/remove-triage needs-information
any update on this issue? Looks like the issue is only with x86_64 rpms
I googled and found some related issues: And here is a from So my suggestion for K8s Docs is: In and ,
At a minimum, we should explain in a comment why this setting is OK. Otherwise folks are bound to ask / file issues / etc. Better would be to migrate away from recommending Google-made packages. It'd be better to be wholly neutral of vendors here (publish our own packages); failing that, we can provide links to packages from Linux distributions: Fedora Ubuntu Debian etc.
As far as I digged: [Fedora] It seems that in the official Fedora packages repo (), the package exists: there is no package; see but there exists a .

I am not sure whether this package contains or not. there is no package; see but we might check these: [Ubuntu] It seems that in the official Ubuntu packages repo, the packages (, , ) does not exist. Instead, provides those packages. [Debian] It seems that in the official Debian packages repo, the packages (, , ) does not exist.
To be clear: the packaging sources are in k/release despite being built on my workstation often (needlessly! there's no real reason this can't be part of the Kubernetes release cloud build, we just block changes to the packaging ...), the packages themselves are defined by the project. The google specific part is the package hosting and signing, which piggybacks on the GCP package host. It would be most excellent to move to community packages, but there are none. There are no other deb/rpm packages for Kubernetes. There are more details about the recommendation in the link quoted above. I think we should be linking there.
Based on , I'm persuaded that we can and should omit mention of from the docs. This will apply the YUM default setting which is not to check the signature on repo metadata. Because that metadata is always accessed over TLS, and the webservers are run by an organization with a reputation for doing TLS well, I think it's absolutely fine.
/triage accepted /priority important-soon
/assign
one word - thank u


Question: Los objetos básicos de Kubernetes incluyen: <del> * [Pod](/docs/concepts/workloads/pods/pod-overview/) </del> <ins> * [Pod](/es/docs/concepts/workloads/pods/pod/) </ins> * [Service](/docs/concepts/services-networking/service/) * [Volume](/docs/concepts/storage/volumes/) <del> * [Namespace](/docs/concepts/overview/working-with-objects/namespaces/) </del> <ins> * [Namespace](/es/docs/concepts/overview/working-with-objects/namespaces/) </ins> Además, Kubernetes contiene abstracciónes de nivel superior llamadas Controladores. Los Controladores se basan en los objetos básicos y proporcionan funcionalidades adicionales sobre ellos. Incluyen: <del> * [ReplicaSet](/docs/concepts/workloads/controllers/replicaset/) * [Deployment](/docs/concepts/workloads/controllers/deployment/) * [StatefulSet](/docs/concepts/workloads/controllers/statefulset/) * [DaemonSet](/docs/concepts/workloads/controllers/daemonset/) * [Job](/docs/concepts/workloads/controllers/jobs-run-to-completion/) </del> <ins> * [ReplicaSet](/es/docs/concepts/workloads/controllers/replicaset/) * [Deployment](/es/docs/concepts/workloads/controllers/deployment/) * [StatefulSet](/es/docs/concepts/workloads/controllers/statefulset/) * [DaemonSet](/es/docs/concepts/workloads/controllers/daemonset/) * [Job](/es/docs/concepts/workloads/controllers/jobs-run-to-completion/) </ins> ## Plano de Control de Kubernetes

This is a Bug Report concepts page for spanish links doesn't take to spanish pages <!--Required Information--Problem: The page is the Spanish translation, the links on this page should take you to the Spanish version of the link when available, if not available then ok to leave it pointing to English Proposed Solution: Update the page links to point to Spanish version (ie. es) Page to Update: I intended to review and submit a PR
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/language es
/assign
/assign
Thanks for the report, this is quite common as the translation is a work in progress and we don't have (yet) a way to easily detect where a page is referenced. Let me know if you have any issue working with the PR.
I will work on this page as one-off, and think about how can we automate the detection for all links that should point to the Spanish version.
Maybe something that can be done at build time? Don't know how is the site is build I guess Hugo but not how much pre-processing is done


Question: ## {{% heading "whatsnext" %}} <del> * Learn about the most important basic Kubernetes objects, such as [Pod](/docs/concepts/workloads/pods/). * Learn about [controllers](/docs/concepts/architecture/controller/) in Kubernetes. * [Using the Kubernetes API](/docs/reference/using-api/) explains some more API concepts. </del> <ins> Learn more about the following: * [Pods](https://kubernetes.io/docs/concepts/workloads/pods/) which are the most important basic Kubernetes objects. * [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) objects. * [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) in Kubernetes. * [Kubernetes API overview](https://kubernetes.io/docs/reference/using-api/) which explains some more API concepts. * [kubectl](https://kubernetes.io/docs/reference/kubectl/) and [kubectl commands](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands). </ins>

This is a Bug Report <!--Required Information--Problem: Below information is needed to mention in Kubernetes-objects Learn more about deployments Learn about kubectl and kubectl commands Proposed Solution: Add Below points under Kubernetes-objects Learn more about Learn about and Page to Update:
/language en /assign
/triage accepted Good idea
Fixed it here


Question:
--container-log-max-files int32     Default: 5

  	<Warning: Beta feature> Set the maximum number of container log files that can be present for a container. The number must be >= 2. This flag can only be used with --container-runtime=remote. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See kubelet-config-file for more information.)	   	<Warning: Beta feature> Set the maximum number of container log files that can be present for a container. The number must be >= 2. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See kubelet-config-file for more information.)

 --container-log-max-size string     Default: 10Mi

  	<Warning: Beta feature> Set the maximum size (e.g. 10Mi) of container log file before it is rotated. This flag can only be used with --container-runtime=remote.  (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See kubelet-config-file for more information.)	   	<Warning: Beta feature> Set the maximum size (e.g. 10Mi) of container log file before it is rotated.  (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See kubelet-config-file for more information.)

Documentation for external etcd cluster for kubernetes 1.27 is not up to date That the documentation doesn't take into consideration the fact that was removed in version 1.27 of kubelet: Restart=always Just try to install kubernetes with an external etcd cluster (which right now doesn't work anyway also for other reasons related to this ) with version 1.27.2 and you'll get: No response <details27.2 </details<detailsself-hosted </details<details</details<detailskubeadm </details<detailscontainerd </details<detailscalico </details
There are no sig labels on this issue. Please add an appropriate label by using one of the following commands: - Please see the for a listing of the SIGs, working groups, and committees available. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
This issue is currently awaiting triage. If a SIG or subproject determines this is a relevant issue, they will accept it by applying the label and provide further guidance. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/transfer website /assign
removed the comment in v1.27. is not re-generated. I opened to fix it.
/retitle flag still in the documentation for external etcd in version 1.27 despite removal /language en /triage accepted


Question: ## Creating a local Calico cluster with kubeadm To get a local single-host Calico cluster in fifteen minutes using kubeadm, refer to the <del> [Calico Quickstart](https://docs.projectcalico.org/latest/getting-started/kubernetes/). </del> <ins> [Calico Quickstart](https://projectcalico.docs.tigera.io/getting-started/kubernetes/). </ins>

This is a Bug Report <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: under the 'Use Calico for NetworkPolicy' is leading to an invalid URL resulting in page not found error. Proposed Solution: Updating of Quickstart link in the Page to Update: <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--<!--Additional Information:--
/assign
/triage accepted
Hi , great find! Apart from fixing link you can also look for further improvement in overall doc so that one PR can cover more improvements. For eg. fixing Grammatical errors, adding more information in the sections etc.
This seems to be duplicate of /triage duplicate
looks to be reporting broken link on whereas this issue is reporting issue with link on different page
/remove-triage duplicate
Right. my bad. Please consider these points as well:


Question: <ins> --- title: 在 Windows 上安装 kubectl content_type: task weight: 10 card: name: tasks weight: 20 title: Windows 安装 kubectl --- <!-- --- reviewers: - mikedanese title: Install and Set Up kubectl on Windows content_type: task weight: 10 card: name: tasks weight: 20 title: Install kubectl on Windows --- --> ## {{% heading "prerequisites" %}} <!-- You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.2 client should work with v1.1, v1.2, and v1.3 master. Using the latest version of kubectl helps avoid unforeseen issues. --> kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如：v1.2 版本的客户端只能与 v1.1、v1.2 和 v1.3 版本的集群一起工作。 用最新版的 kubectl 有助于避免不可预见的问题。 <!-- ## Install kubectl on Windows --> ## 在 Windows 上安装 kubectl {#install-kubectl-on-windows} <!-- The following methods exist for installing kubectl on Windows: --> 在 Windows 系统中安装 kubectl 有如下几种方法： - [用 curl 在 Windows 上安装 kubectl](#install-kubectl-binary-with-curl-on-windows) - [用 PowerShell 从 PSGallery 安装](#install-with-powershell-from-psgallery) - [在 Windows 上用 Chocolatey 或 Scoop 安装](#install-on-windows-using-chocolatey-or-scoop) - [作为谷歌云 SDK 的一部分，在 Windows 上安装](#install-on-windows-as-part-of-the-google-cloud-sdk) <!-- ### Install kubectl binary with curl on Windows --> ### 用 curl 在 Windows 上安装 kubectl {#install-kubectl-binary-with-curl-on-windows} <!-- 1. Download the [latest release {{< param "fullversion" >}}](https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe). Or if you have `curl` installed, use this command: --> 1. 下载 [最新发行版 {{< param "fullversion" >}}](https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe)。 如果你已安装了 `curl`,也可以使用此命令： ```powershell curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe ``` <!-- To find out the latest stable version (for example, for scripting), take a look at [https://dl.k8s.io/release/stable.txt](https://dl.k8s.io/release/stable.txt). --> {{< note >}} 要想找到最新稳定的版本（例如：为了编写脚本），可以看看这里 [https://dl.k8s.io/release/stable.txt](https://dl.k8s.io/release/stable.txt)。 {{< /note >}} <!-- 1. Validate the binary (optional) Download the kubectl checksum file: --> 1. 验证该可执行文件（可选步骤） 下载 kubectl 校验和文件： ```powershell curl -LO https://dl.k8s.io/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe.sha256 ``` <!-- Validate the kubectl binary against the checksum file: --> 基于校验和文件，验证 kubectl 的可执行文件： <!-- - Using Command Prompt to manually compare `CertUtil`'s output to the checksum file downloaded: --> - 在命令行环境中，手工对比 `CertUtil` 命令的输出与校验和文件： ```cmd CertUtil -hashfile kubectl.exe SHA256 type kubectl.exe.sha256 ``` <!-- - Using PowerShell to automate the verification using the `-eq` operator to get a `True` or `False` result: --> - 用 PowerShell 自动验证，用运算符 `-eq` 来直接取得 `True` 或 `False` 的结果： ```powershell $($(CertUtil -hashfile .kubectl.exe SHA256)[1] -replace " ", "") -eq $(type .kubectl.exe.sha256) ``` <!-- 1. Add the binary in to your `PATH`. 1. Test to ensure the version of `kubectl` is the same as downloaded: --> 1. 将可执行文件的路径添加到 `PATH`。 1. 测试一下，确保此 `kubectl` 的版本和期望版本一致： ```cmd kubectl version --client ``` <!-- [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/#kubernetes) adds its own version of `kubectl` to `PATH`. If you have installed Docker Desktop before, you may need to place your `PATH` entry before the one added by the Docker Desktop installer or remove the Docker Desktop's `kubectl`. --> {{< note >}} [Windows 版的 Docker Desktop](https://docs.docker.com/docker-for-windows/#kubernetes) 将其自带版本的 `kubectl` 添加到 `PATH`。 如果你之前安装过 Docker Desktop，可能需要把此 `PATH` 条目置于 Docker Desktop 安装的条目之前， 或者直接删掉 Docker Desktop 的 `kubectl`。 {{< /note >}} <!-- ### Install with PowerShell from PSGallery --> ### 用 PowerShell 从 PSGallery 安装 {#install-with-powershell-from-psgallery} <!-- If you are on Windows and using the [PowerShell Gallery](https://www.powershellgallery.com/) package manager, you can install and update kubectl with PowerShell. --> 如果你工作在 Windows 平台上，且使用 [PowerShell Gallery](https://www.powershellgallery.com/) 包管理器， 则可以用 PowerShell 安装、更新 kubectl。 <!-- 1. Run the installation commands (making sure to specify a `DownloadLocation`): --> 1. 运行安装命令（确保提供了参数 `DownloadLocation`）： ```powershell Install-Script -Name 'install-kubectl' -Scope CurrentUser -Force install-kubectl.ps1 [-DownloadLocation <path>] ``` <!-- If you do not specify a `DownloadLocation`, `kubectl` will be installed in the user's `temp` Directory. --> {{< note >}} 如果没有指定 `DownloadLocation`，`kubectl` 则会被安装到用户的 `temp` 目录下。 {{< /note >}} <!-- The installer creates `$HOME/.kube` and instructs it to create a config file. --> 安装程序创建 `$HOME/.kube`，并指示其创建配置文件。 <!-- 1. Test to ensure the version you installed is up-to-date: --> 1. 测试一下，确保你安装的是最新版本： ```powershell kubectl version --client ``` <!-- Updating the installation is performed by rerunning the two commands listed in step 1. --> {{< note >}} 更新安装是通过重新运行步骤 1 中的两个命令而实现。 {{< /note >}} <!-- ### Install on Windows using Chocolatey or Scoop --> ### 在 Windows 上用 Chocolatey 或 Scoop 安装 {#install-on-windows-using-chocolatey-or-scoop} <!-- 1. To install kubectl on Windows you can use either [Chocolatey](https://chocolatey.org) package manager or [Scoop](https://scoop.sh) command-line installer. --> 1. 要在 Windows 上安装 kubectl，你可以使用包管理器 [Chocolatey](https://chocolatey.org) 或是命令行安装器 [Scoop](https://scoop.sh)。 {{< tabs name="kubectl_win_install" >}} {{% tab name="choco" %}} ```powershell choco install kubernetes-cli ``` {{% /tab %}} {{% tab name="scoop" %}} ```powershell scoop install kubectl ``` {{% /tab %}} {{< /tabs >}} <!-- 1. Test to ensure the version you installed is up-to-date: --> 2. 测试一下，确保安装的是最新版本： ```powershell kubectl version --client ``` <!-- 1. Navigate to your home directory: --> 3. 导航到你的 home 目录： <!-- # If you're using cmd.exe, run: cd %USERPROFILE% --> ```powershell # 当你用 cmd.exe 时，则运行： cd %USERPROFILE% cd ~ ``` <!-- 1. Create the `.kube` directory: --> 4. 创建目录 `.kube`： ```powershell mkdir .kube ``` <!-- 1. Change to the `.kube` directory you just created: --> 5. 切换到新创建的目录 `.kube` ```powershell cd .kube ``` <!-- 1. Configure kubectl to use a remote Kubernetes cluster: --> 6. 配置 kubectl，以接入远程的 Kubernetes 集群： ```powershell New-Item config -type file ``` <!-- Edit the config file with a text editor of your choice, such as Notepad. --> {{< note >}} 编辑配置文件，你需要先选择一个文本编辑器，比如 Notepad。 {{< /note >}} <!-- ### Install on Windows as part of the Google Cloud SDK --> ### 作为谷歌云 SDK 的一部分，在 Windows 上安装 {#install-on-windows-as-part-of-the-google-cloud-sdk} {{< include "included/install-kubectl-gcloud.md" >}} <!-- ## Verify kubectl configuration --> ## 验证 kubectl 配置 {#verify-kubectl-configration} {{< include "included/verify-kubectl.md" >}} <!-- ## Optional kubectl configurations ### Enable shell autocompletion --> ## kubectl 可选配置 {#optional-kubectl-configurations} ### 启用 shell 自动补全功能 {#enable-shell-autocompletion} <!-- kubectl provides autocompletion support for Bash and Zsh, which can save you a lot of typing. Below are the procedures to set up autocompletion for Zsh, if you are running that on Windows. --> kubectl 为 Bash 和 Zsh 提供自动补全功能，可以减轻许多输入的负担。 下面是设置 Zsh 自动补全功能的操作步骤，前提是你在 Windows 上面运行的是 Zsh。 {{< include "included/optional-kubectl-configs-zsh.md" >}} ## {{% heading "whatsnext" %}} {{< include "included/kubectl-whats-next.md" >}} </ins>  No newline at end of file

This is a Feature Request translate content/docs/tasks/tools/install-kubectl- into Chinese What would you like to be content/zh/docs/tasks/tools/install-kubectl- /assign /language zh
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details


Question: #### Load balancers with mixed protocol types <del> {{< feature-state for_k8s_version="v1.24" state="beta" >}} </del> <ins> {{< feature-state for_k8s_version="v1.26" state="stable" >}} </ins> By default, for LoadBalancer type of Services, when there is more than one port defined, all ports must have the same protocol, and the protocol must be one which is supported

This is a Bug Report Problem: The Feature State for is mentioned as under the docs which is wrong. As per mention in the the correct Feature state for is . Proposed Solution: Update the Feature State of MixedProtocolLBService from Kubernetes v1.24 [beta] to Kubernetes v1.26 [stable]. Page to Update:
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/language en /sig docs /sig network
I will open a PR for it soon. /assign
Fixed the issue here:


Question: - title: kube-proxy CLI path: /docs/admin/kube-proxy/ <del> - title: kub-scheduler CLI </del> <ins> - title: kube-scheduler CLI </ins> path: /docs/admin/kube-scheduler/ - title: kubelet CLI

This is a Bug Report This issue appeared recently within kubernetes/website. Links in follow the next pattern , see a square bracket inside of the . I tried to follow in order to find a source of the issue, but wasn't able to do so. my best guesses: Source for generation for 1_17 branch was corrupted. Backend was replaced by something else but not commited (i don't believe in this). This can be temporary content (on ein PR) as toolset for kubernetes-sigs/reference-docs .
/kind bug /priority backlog
ping
I am looking now
, you are referring to a link problem in the reference? I don't immediately see a problem. Can you provide an example of a command that has a link issue? Thanks! I see a link that appears incorrectly formatted, such as the flag in the command, Though, the link does work for me.
I plan on updating the build instructions and README.
any link that follow pattern . If we ware talking about from the root of the kubernetes-sigs/reference-docs, it would be any link in usage block. Almost all of them are anchor links, so problem isn't visible at first. search for or , last symbol of the link is clearly not suppose to be a link (at least its not a link in source yaml) P.S. Is it worth time to update build instructions now? Isn't going to change generator backend to htmlwriter?
, I have a feeling there is a miscommunication. I am not sure what you are referring to. I thought you are logging an issue specifically to the kubectl reference. Please provide a specific example.
ok. for on link to for on link yourself why is in link. diff for kubernetes/website (kubectl-) and see how links are formed. -become right bracket in the href attribute. P.S. just updated one of the search links as i forgot to copy/paste last element of the link (). P.P.S. looks like regular expression issue.
I see. I think we are referring to the same problem -- the right bracket.
Should I close issue or you prefer to have it opened untill kubernetes-sigs/reference-docs is opened?
, I would leave this issue open as a reminder for next release. Thanks! NOTE: The links were manually fixed for the 1.17 release (search/replace).
got it!


Question: ## Enable Topology Aware Hints To enable service topology hints, enable the `TopologyAwareHints` [feature <del> gate](docs/reference/command-line-tools-reference/feature-gates/) for the </del> <ins> gate](/docs/reference/command-line-tools-reference/feature-gates/) for the </ins> kube-apiserver, kube-controller-manager, and kube-proxy: ```

This is a Bug Report <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: In there is a table broken with GitHub Markdown renderer. ! BTW, the table is not broken with Hugo Markdown renderer. ! Proposed Solution: Page to Update: No Page on to Update. Just a Markdown file on GitHub to update. <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--<!--Additional Information:--/assign
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
We support viewing the rendered documentation via I don't think this issue is valid.
/priority awaiting-more-evidence /langauge en
Thank for your comment. I will describe a bit more about this issue I opened. [As-is] Yes, although the second row of the Markdown code has 4 columns and other rows have 3 columns, this table is rendered alright by Hugo Markdown renderer. This is a issue about improving consistency of the number of columns in the Markdown code, regardless of the type of Markdown renderer. [To-be]

This is a Bug Report <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: In , the link is broken. Proposed Solution: In Page to Update: <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--<!--Additional Information:--/assign
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
already logged here: /close /sig cluster-lifecycle
Closing this issue. <detailsIn response to : already logged here: /sig cluster-lifecycle Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details


Question: [Automated HA master deployment - design doc](https://git.k8s.io/community/contributors/design-proposals/cluster-lifecycle/ha_master.md)

This is a Bug Report <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: The image in is in PNG format, which makes it hard for contributors to edit its content. Proposed Solution: Replace with SVG or something else (e.g. Google Drawings object, etc.) (Example of Google Drawings object: ) Page to Update: <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--<!--Additional Information:--/language en
/triage accepted We'd prefer SVG images, ideally with the text converted to shapes. It's OK to save an editable version somewhere else - SVG lets you add a comment about where to find the editable version.
I would like to work on this
/assign
fixing issue in Sorry for so many closed PRs, I'm newbie and got a little confused : )


Question:
  --machine-id-file string     Default: "/etc/machine-id,/var/lib/dbus/machine-id"	   --log_backtrace_at <a string in the form 'file:N'>     Default: :0

Comma-separated list of files to check for machine-id. Use the first one that exists.

when logging hits line file:N, emit a stack trace

 --log_dir string

If non-empty, write log files in this directory

 --log_file string

If non-empty, use this log file

 --log_file_max_size uint     Default: 1800

Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

 --logtostderr     Default: true

log to standard error instead of files

This is a Bug Report <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: ! xref: Has references to some CLI arguments that are not valid for . Seem to be side effect of changes went into Proposed Solution: Remove the invalid flags from the documentation in Page to Update:
/language en /triage accepted
/assign
/assign
Thanks for taking care of this :)


Question: title: API server id: kube-apiserver date: 2018-04-12 <del> full_link: /docs/reference/generated/kube-apiserver/ </del> <ins> full_link: /docs/concepts/overview/components/#kube-apiserver </ins> short_description: > Control plane component that serves the Kubernetes API.

This is a clean-up request <!-- Thanks for filing an issue! Before submitting, please fill in the following information. --<!-- See for guidance on writing an actionable issue description. --<!--Required Information--Problem: Pages such as use the for the term “API Server”. At the moment that shortcode hyperlinks to which then redirects to This is reference documentation and quite a lot to take in, especially for someone who is new to Kubernetes. I recommend updating the glossary term for “API Server” to hyperlink to Proposed Solution: Edit to . <!--Optional Information (remove the comment tags around information you would like to include)--<!--Kubernetes Version:--Additional Information: /kind cleanup /language en /priority backlog /sig api-machinery /good-first-issue Notes: We try to . If you make this change to the English localization, feel free to suggest the equivalent change in other languages; it's a mechanical / repetitive update (a chore), but it also lets each localization team pick up approval tasks on their own cadence and using their own workflow. See for general guidance.
This request has been marked as suitable for new contributors. Please ensure the request meets the requirements listed . If this request no longer meets these requirements, the label can be removed by commenting with the command. <detailsIn response to : This is a clean-up request <!-- See for guidance on writing an actionable issue description. --Problem: Pages such as use the for the term “API Server”. At the moment that shortcode hyperlinks to which then redirects to Edit to . <!--Kubernetes Version:--/kind cleanup /language en /priority backlog /sig api-machinery /good-first-issue We try to . If you make this change to the English localization, feel free to suggest the equivalent change in other languages; it's a mechanical / repetitive update (a chore), but it also lets each localization team pick up approval tasks on their own cadence and using their own workflow. See for general guidance. Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/assign
Hey , I have tried to work on this issue and opened a pull request. Kindly review it and suggest the necessary changes.


Question: <ins> --- title: "autocompletado con fish" description: "Configuración opcional para habilitar el autocompletado en la shell fish." headless: true _build: list: never render: never publishResources: false --- {{< note >}} El autocompletado para Fish necesita de kubectl versión 1.23 o superior. {{< /note >}} El script de autocompletado de Fish para kubectl puede ser generado con el comando `kubectl completion fish`. Ejecutando este comando en tu shell habilitará el autocompletado de kubectl para Fish. Para qué funcione en sus futuras sesiones shell, debes agregar la siguiente línea al archivo `~/.config/fish/config.fish`: ```shell kubectl completion fish | source ``` Después de recargar tu shell, el autocompletado para kubectl estará funcionando automáticamente. </ins>

This is a Feature Request What would you like to be Localize to Spanish Why is this needed There is no Spanish localization for this file. Comments /triage accepted /kind feature /language es /sig docs
/assign
/area localization


Question: sort | uniq -c ``` <del> The above command will recursively return all fields named `image` for all items returned. As an alternative, it is possible to use the absolute path to the image field within the Pod.  This ensures the correct field is retrieved even when the field name is repeated, e.g. many fields are called `name` within a given item: ```shell kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" ``` </del> The jsonpath is interpreted as follows: - `.items[*]`: for each returned value

The alternative mentioned on this page is identical to the thing it is supposed to replace: This first example used to use to recursively return all fields named image for all items returned, but now it uses the same jsonpath as the alternative below it: Suggest removing the following text: See:
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/language en
/assign