diff --git a/content/zh/docs/reference/kubectl/overview.md b/content/zh/docs/reference/kubectl/overview.md
deleted file mode 100644
index ddc83e8536..0000000000
--- a/content/zh/docs/reference/kubectl/overview.md
+++ /dev/null
@@ -1,1025 +0,0 @@
----
-reviewers:
-- hw-qiaolei
-title: kubectl 概述
-content_type: concept
-weight: 20
-card:
- name: reference
- weight: 20
----
-
-
-
-
-
-你可以使用 Kubectl 命令行工具管理 Kubernetes 集群。
-`kubectl` 在 `$HOME/.kube` 目录中查找一个名为 `config` 的配置文件。
-你可以通过设置 KUBECONFIG 环境变量或设置
-[`--kubeconfig`](/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
-参数来指定其它 [kubeconfig](/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/) 文件。
-
-
-本文概述了 `kubectl` 语法和命令操作描述,并提供了常见的示例。
-有关每个命令的详细信息,包括所有受支持的参数和子命令,
-请参阅 [kubectl](/docs/reference/generated/kubectl/kubectl-commands/) 参考文档。
-有关安装说明,请参见[安装 kubectl](/zh/docs/tasks/tools/install-kubectl/) 。
-
-
-
-
-## 语法
-
-
-使用以下语法 `kubectl` 从终端窗口运行命令:
-
-```shell
-kubectl [command] [TYPE] [NAME] [flags]
-```
-
-
-其中 `command`、`TYPE`、`NAME` 和 `flags` 分别是:
-
-
-* `command`:指定要对一个或多个资源执行的操作,例如 `create`、`get`、`describe`、`delete`。
-
-* `TYPE`:指定[资源类型](#资源类型)。资源类型不区分大小写,
- 可以指定单数、复数或缩写形式。例如,以下命令输出相同的结果:
-
- ```shell
- kubectl get pod pod1
- kubectl get pods pod1
- kubectl get po pod1
- ```
-
-
-
-* `NAME`:指定资源的名称。名称区分大小写。
- 如果省略名称,则显示所有资源的详细信息 `kubectl get pods`。
-
- 在对多个资源执行操作时,你可以按类型和名称指定每个资源,或指定一个或多个文件:
-
-
- * 要按类型和名称指定资源:
-
- * 要对所有类型相同的资源进行分组,请执行以下操作:`TYPE1 name1 name2 name<#>`。
-
- 例子:`kubectl get pod example-pod1 example-pod2`
-
- * 分别指定多个资源类型:`TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>`。
-
- 例子:`kubectl get pod/example-pod1 replicationcontroller/example-rc1`
-
- * 用一个或多个文件指定资源:`-f file1 -f file2 -f file<#>`
-
- * [使用 YAML 而不是 JSON](/zh/docs/concepts/configuration/overview/#general-configuration-tips)
- 因为 YAML 更容易使用,特别是用于配置文件时。
- 例子:`kubectl get -f ./pod.yaml`
-
-
-* `flags`: 指定可选的参数。例如,可以使用 `-s` 或 `-server` 参数指定
- Kubernetes API 服务器的地址和端口。
-
-{{< caution >}}
-
-从命令行指定的参数会覆盖默认值和任何相应的环境变量。
-{{< /caution >}}
-
-
-如果你需要帮助,从终端窗口运行 `kubectl help` 。
-
-
-## 操作
-
-
-下表包含所有 kubectl 操作的简短描述和普通语法:
-
-
-
-操作 | 语法 | 描述
--------------------- | -------------------- | --------------------
-`alpha` | `kubectl alpha SUBCOMMAND [flags]` | 列出与 alpha 特性对应的可用命令,这些特性在 Kubernetes 集群中默认情况下是不启用的。
-`annotate` | kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | 添加或更新一个或多个资源的注解。
-`api-resources` | `kubectl api-resources [flags]` | 列出可用的 API 资源。
-`api-versions` | `kubectl api-versions [flags]` | 列出可用的 API 版本。
-`apply` | `kubectl apply -f FILENAME [flags]`| 从文件或 stdin 对资源应用配置更改。
-`attach` | `kubectl attach POD -c CONTAINER [-i] [-t] [flags]` | 附加到正在运行的容器,查看输出流或与容器(stdin)交互。
-`auth` | `kubectl auth [flags] [options]` | 检查授权。
-`autoscale` | kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] | 自动伸缩由副本控制器管理的一组 pod。
-`certificate` | `kubectl certificate SUBCOMMAND [options]` | 修改证书资源。
-`cluster-info` | `kubectl cluster-info [flags]` | 显示有关集群中主服务器和服务的端口信息。
-`completion` | `kubectl completion SHELL [options]` | 为指定的 shell (bash 或 zsh)输出 shell 补齐代码。
-`config` | `kubectl config SUBCOMMAND [flags]` | 修改 kubeconfig 文件。有关详细信息,请参阅各个子命令。
-`convert` | `kubectl convert -f FILENAME [options]` | 在不同的 API 版本之间转换配置文件。配置文件可以是 YAML 或 JSON 格式。
-`cordon` | `kubectl cordon NODE [options]` | 将节点标记为不可调度。
-`cp` | `kubectl cp [options]` | 在容器之间复制文件和目录。
-`create` | `kubectl create -f FILENAME [flags]` | 从文件或 stdin 创建一个或多个资源。
-`delete` | kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] | 从文件、标准输入或指定标签选择器、名称、资源选择器或资源中删除资源。
-`describe` | kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] | 显示一个或多个资源的详细状态。
-`diff` | `kubectl diff -f FILENAME [flags]`| 将 live 配置和文件或标准输入做对比 (**BETA**)
-`drain` | `kubectl drain NODE [options]` | 腾空节点以准备维护。
-`edit` | kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] | 使用默认编辑器编辑和更新服务器上一个或多个资源的定义。
-`exec` | `kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]` | 对 pod 中的容器执行命令。
-`explain` | `kubectl explain [--recursive=false] [flags]` | 获取多种资源的文档。例如 pod, node, service 等。
-`expose` | kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags] | 将副本控制器、服务或 pod 作为新的 Kubernetes 服务暴露。
-`get` | kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] | 列出一个或多个资源。
-`kustomize` | `kubectl kustomize [flags] [options]` | 列出从 kustomization.yaml 文件中的指令生成的一组 API 资源。参数必须是包含文件的目录的路径,或者是 git 存储库 URL,其路径后缀相对于存储库根目录指定了相同的路径。
-`label` | kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | 添加或更新一个或多个资源的标签。
-`logs` | `kubectl logs POD [-c CONTAINER] [--follow] [flags]` | 在 pod 中打印容器的日志。
-`options` | `kubectl options` | 全局命令行选项列表,适用于所有命令。
-`patch` | kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] | 使用策略合并 patch 程序更新资源的一个或多个字段。
-`plugin` | `kubectl plugin [flags] [options]` | 提供用于与插件交互的实用程序。
-`port-forward` | `kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]` | 将一个或多个本地端口转发到一个 pod。
-`proxy` | `kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]` | 运行 Kubernetes API 服务器的代理。
-`replace` | `kubectl replace -f FILENAME` | 从文件或标准输入中替换资源。
-`rollout` | `kubectl rollout SUBCOMMAND [options]` | 管理资源的部署。有效的资源类型包括:Deployments, DaemonSets 和 StatefulSets。
-`run` | kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags] | 在集群上运行指定的镜像。
-`scale` | kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] | 更新指定副本控制器的大小。
-`set` | `kubectl set SUBCOMMAND [options]` | 配置应用程序资源。
-`taint` | `kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options]` | 更新一个或多个节点上的污点。
-`top` | `kubectl top [flags] [options]` | 显示资源(CPU/内存/存储)的使用情况。
-`uncordon` | `kubectl uncordon NODE [options]` | 将节点标记为可调度。
-`version` | `kubectl version [--client] [flags]` | 显示运行在客户端和服务器上的 Kubernetes 版本。
-`wait` | kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available] [options] | 实验性:等待一种或多种资源的特定条件。
-
-
-
-了解更多有关命令操作的信息,请参阅 [kubectl](/zh/docs/reference/kubectl/kubectl/) 参考文档。
-
-
-
-## 资源类型
-
-
-下表列出所有受支持的资源类型及其缩写别名:
-
-
-(以下输出可以通过 `kubectl api-resources` 获取,内容以 Kubernetes 1.19.1 版本为准。)
-
-
-| 资源名 | 缩写名 | API 分组 | 按命名空间 | 资源类型 |
-|---|---|---|---|---|
-| `bindings` | | | true | Binding |
-| `componentstatuses` | `cs` | | false | ComponentStatus |
-| `configmaps` | `cm` | | true | ConfigMap |
-| `endpoints` | `ep` | | true | Endpoints |
-| `events` | `ev` | | true | Event |
-| `limitranges` | `limits` | | true | LimitRange |
-| `namespaces` | `ns` | | false | Namespace |
-| `nodes` | `no` | | false | Node |
-| `persistentvolumeclaims` | `pvc` | | true | PersistentVolumeClaim |
-| `persistentvolumes` | `pv` | | false | PersistentVolume |
-| `pods` | `po` | | true | Pod |
-| `podtemplates` | | | true | PodTemplate |
-| `replicationcontrollers` | `rc` | | true | ReplicationController |
-| `resourcequotas` | `quota` | | true | ResourceQuota |
-| `secrets` | | | true | Secret |
-| `serviceaccounts` | `sa` | | true | ServiceAccount |
-| `services` | `svc` | | true | Service |
-| `mutatingwebhookconfigurations` | | admissionregistration.k8s.io | false | MutatingWebhookConfiguration |
-| `validatingwebhookconfigurations` | | admissionregistration.k8s.io | false | ValidatingWebhookConfiguration |
-| `customresourcedefinitions` | `crd,crds` | apiextensions.k8s.io | false | CustomResourceDefinition |
-| `apiservices` | | apiregistration.k8s.io | false | APIService |
-| `controllerrevisions` | | apps | true | ControllerRevision |
-| `daemonsets` | `ds` | apps | true | DaemonSet |
-| `deployments` | `deploy` | apps | true | Deployment |
-| `replicasets` | `rs` | apps | true | ReplicaSet |
-| `statefulsets` | `sts` | apps | true | StatefulSet |
-| `tokenreviews` | | authentication.k8s.io | false | TokenReview |
-| `localsubjectaccessreviews` | | authorization.k8s.io | true | LocalSubjectAccessReview |
-| `selfsubjectaccessreviews` | | authorization.k8s.io | false | SelfSubjectAccessReview |
-| `selfsubjectrulesreviews` | | authorization.k8s.io | false | SelfSubjectRulesReview |
-| `subjectaccessreviews` | | authorization.k8s.io | false | SubjectAccessReview |
-| `horizontalpodautoscalers` | `hpa` | autoscaling | true | HorizontalPodAutoscaler |
-| `cronjobs` | `cj` | batch | true | CronJob |
-| `jobs` | | batch | true | Job |
-| `certificatesigningrequests` | `csr` | certificates.k8s.io | false | CertificateSigningRequest |
-| `leases` | | coordination.k8s.io | true | Lease |
-| `endpointslices` | | discovery.k8s.io | true | EndpointSlice |
-| `events` | `ev` | events.k8s.io | true | Event |
-| `ingresses` | `ing` | extensions | true | Ingress |
-| `flowschemas` | | flowcontrol.apiserver.k8s.io | false | FlowSchema |
-| `prioritylevelconfigurations` | | flowcontrol.apiserver.k8s.io | false | PriorityLevelConfiguration |
-| `ingressclasses` | | networking.k8s.io | false | IngressClass |
-| `ingresses` | `ing` | networking.k8s.io | true | Ingress |
-| `networkpolicies` | `netpol` | networking.k8s.io | true | NetworkPolicy |
-| `runtimeclasses` | | node.k8s.io | false | RuntimeClass |
-| `poddisruptionbudgets` | `pdb` | policy | true | PodDisruptionBudget |
-| `podsecuritypolicies` | `psp` | policy | false | PodSecurityPolicy |
-| `clusterrolebindings` | | rbac.authorization.k8s.io | false | ClusterRoleBinding |
-| `clusterroles` | | rbac.authorization.k8s.io | false | ClusterRole |
-| `rolebindings` | | rbac.authorization.k8s.io | true | RoleBinding |
-| `roles` | | rbac.authorization.k8s.io | true | Role |
-| `priorityclasses` | `pc` | scheduling.k8s.io | false | PriorityClass |
-| `csidrivers` | | storage.k8s.io | false | CSIDriver |
-| `csinodes` | | storage.k8s.io | false | CSINode |
-| `storageclasses` | `sc` | storage.k8s.io | false | StorageClass |
-| `volumeattachments` | | storage.k8s.io | false | VolumeAttachment |
-
-
-
-
-## 输出选项
-
-
-有关如何格式化或排序某些命令的输出的信息,请使用以下部分。有关哪些命令支持各种输出选项的详细信息,请参阅[kubectl](/zh/docs/reference/kubectl/kubectl/) 参考文档。
-
-
-### 格式化输出
-
-
-所有 `kubectl` 命令的默认输出格式都是人类可读的纯文本格式。要以特定格式向终端窗口输出详细信息,可以将 `-o` 或 `--output` 参数添加到受支持的 `kubectl` 命令中。
-
-
-#### 语法
-
-```shell
-kubectl [command] [TYPE] [NAME] -o=
-```
-
-
-根据 `kubectl` 操作,支持以下输出格式:
-
-
-Output format | Description
---------------| -----------
-`-o custom-columns=` | 使用逗号分隔的[自定义列](#custom-columns)列表打印表。
-`-o custom-columns-file=` | 使用 `` 文件中的[自定义列](#custom-columns)模板打印表。
-`-o json` | 输出 JSON 格式的 API 对象
-`-o jsonpath=` | 打印 [jsonpath](/zh/docs/reference/kubectl/jsonpath/) 表达式定义的字段
-`-o jsonpath-file=` | 打印 `` 文件中 [jsonpath](/zh/docs/reference/kubectl/jsonpath/) 表达式定义的字段。
-`-o name` | 仅打印资源名称而不打印任何其他内容。
-`-o wide` | 以纯文本格式输出,包含任何附加信息。对于 pod 包含节点名。
-`-o yaml` | 输出 YAML 格式的 API 对象。
-
-
-
-
-##### 示例
-
-
-在此示例中,以下命令将单个 pod 的详细信息输出为 YAML 格式的对象:
-
-```shell
-kubectl get pod web-pod-13je7 -o yaml
-```
-
-
-请记住:有关每个命令支持哪种输出格式的详细信息,请参阅 [kubectl](/zh/docs/reference/kubectl/kubectl/) 参考文档。
-
-
-#### 自定义列
-
-
-要定义自定义列并仅将所需的详细信息输出到表中,可以使用该 custom-columns 选项。你可以选择内联定义自定义列或使用模板文件:`-o=custom-columns=` 或 `-o=custom-columns-file=`。
-
-
-##### 示例
-
-
-内联:
-
-```shell
-kubectl get pods -o custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
-```
-
-
-模板文件:
-
-```shell
-kubectl get pods -o custom-columns-file=template.txt
-```
-
-
-其中,`template.txt` 文件包含:
-
-```
-NAME RSRC
-metadata.name metadata.resourceVersion
-```
-
-
-运行任何一个命令的结果类似于:
-
-```shell
-NAME RSRC
-submit-queue 610995
-```
-
-
-#### Server-side 列
-
-
-`kubectl` 支持从服务器接收关于对象的特定列信息。
-这意味着对于任何给定的资源,服务器将返回与该资源相关的列和行,以便客户端打印。
-通过让服务器封装打印的细节,这允许在针对同一集群使用的客户端之间提供一致的人类可读输出。
-
-
-此功能默认启用。要禁用它,请将该 `--server-print=false` 参数添加到 `kubectl get` 命令中。
-
-
-##### 例子:
-
-
-要打印有关 pod 状态的信息,请使用如下命令:
-
-```shell
-kubectl get pods --server-print=false
-```
-
-
-输出类似于:
-
-```shell
-NAME AGE
-pod-name 1m
-```
-
-
-### 排序列表对象
-
-
-要将对象排序后输出到终端窗口,可以将 `--sort-by` 参数添加到支持的 `kubectl` 命令。通过使用 `--sort-by` 参数指定任何数字或字符串字段来对对象进行排序。要指定字段,请使用 [jsonpath](/zh/docs/reference/kubectl/jsonpath/) 表达式。
-
-
-#### 语法
-
-```shell
-kubectl [command] [TYPE] [NAME] --sort-by=
-```
-
-
-##### 示例
-
-
-要打印按名称排序的 pod 列表,请运行:
-
-```shell
-kubectl get pods --sort-by=.metadata.name
-```
-
-
-## 示例:常用操作
-
-
-使用以下示例集来帮助你熟悉运行常用 kubectl 操作:
-
-
-`kubectl apply` - 以文件或标准输入为准应用或更新资源。
-
-
-```shell
-# 使用 example-service.yaml 中的定义创建服务。
-kubectl apply -f example-service.yaml
-
-# 使用 example-controller.yaml 中的定义创建 replication controller。
-kubectl apply -f example-controller.yaml
-
-# 使用 路径下的任意 .yaml, .yml, 或 .json 文件 创建对象。
-kubectl apply -f
-```
-
-
-`kubectl get` - 列出一个或多个资源。
-
-
-
-```shell
-# 以纯文本输出格式列出所有 pod。
-kubectl get pods
-
-# 以纯文本输出格式列出所有 pod,并包含附加信息(如节点名)。
-kubectl get pods -o wide
-
-# 以纯文本输出格式列出具有指定名称的副本控制器。提示:你可以使用别名 'rc' 缩短和替换 'replicationcontroller' 资源类型。
-kubectl get replicationcontroller
-
-# 以纯文本输出格式列出所有副本控制器和服务。
-kubectl get rc,services
-
-# 以纯文本输出格式列出所有守护程序集,包括未初始化的守护程序集。
-kubectl get ds --include-uninitialized
-
-# 列出在节点 server01 上运行的所有 pod
-kubectl get pods --field-selector=spec.nodeName=server01
-```
-
-
-`kubectl describe` - 显示一个或多个资源的详细状态,默认情况下包括未初始化的资源。
-
-
-
-```shell
-# 显示名称为 的节点的详细信息。
-kubectl describe nodes
-
-# 显示名为 的 pod 的详细信息。
-kubectl describe pods/
-
-# 显示由名为 的副本控制器管理的所有 pod 的详细信息。
-# 记住:副本控制器创建的任何 pod 都以复制控制器的名称为前缀。
-kubectl describe pods
-
-# 描述所有的 pod,不包括未初始化的 pod
-kubectl describe pods
-```
-
-{{< note >}}
-
-
-`kubectl get` 命令通常用于检索同一资源类型的一个或多个资源。
-它具有丰富的参数,允许你使用 `-o` 或 `--output` 参数自定义输出格式。你可以指定 `-w` 或 `--watch` 参数以开始观察特定对象的更新。
-`kubectl describe` 命令更侧重于描述指定资源的许多相关方面。它可以调用对 `API 服务器` 的多个 API 调用来为用户构建视图。
-例如,该 `kubectl describe node` 命令不仅检索有关节点的信息,还检索在其上运行的 pod 的摘要,为节点生成的事件等。
-
-{{< /note >}}
-
-
-`kubectl delete` - 从文件、stdin 或指定标签选择器、名称、资源选择器或资源中删除资源。
-
-
-
-```shell
-# 使用 pod.yaml 文件中指定的类型和名称删除 pod。
-kubectl delete -f pod.yaml
-
-# 删除所有带有 '=' 标签的 Pod 和服务。
-kubectl delete pods,services -l =
-
-# 删除所有 pod,包括未初始化的 pod。
-kubectl delete pods --all
-```
-
-
-`kubectl exec` - 对 pod 中的容器执行命令。
-
-
-
-```shell
-# 从 pod 中获取运行 'date' 的输出。默认情况下,输出来自第一个容器。
-kubectl exec -- date
-
-# 运行输出 'date' 获取在容器的 中 pod 的输出。
-kubectl exec -c -- date
-
-# 获取一个交互 TTY 并运行 /bin/bash 。默认情况下,输出来自第一个容器。
-kubectl exec -ti -- /bin/bash
-```
-
-
-`kubectl logs` - 打印 Pod 中容器的日志。
-
-
-
-```shell
-# 从 pod 返回日志快照。
-kubectl logs
-
-# 从 pod 开始流式传输日志。这类似于 'tail -f' Linux 命令。
-kubectl logs -f
-```
-
-
-
-## 示例:创建和使用插件
-
-
-使用以下示例来帮助你熟悉编写和使用 `kubectl` 插件:
-
-
-```shell
-# 用任何语言创建一个简单的插件,并为生成的可执行文件命名
-# 以前缀 "kubectl-" 开始
-cat ./kubectl-hello
-```
-
-```shell
-#!/bin/sh
-
-# 这个插件打印单词 "hello world"
-echo "hello world"
-```
-这个插件写好了,把它变成可执行的:
-```bash
-sudo chmod a+x ./kubectl-hello
-
-# 并将其移动到路径中的某个位置
-sudo mv ./kubectl-hello /usr/local/bin
-sudo chown root:root /usr/local/bin
-
-# 你现在已经创建并"安装了"一个 kubectl 插件。
-# 你可以开始使用这个插件,从 kubectl 调用它,就像它是一个常规命令一样
-kubectl hello
-```
-```
-hello world
-```
-
-```shell
-# 你可以"卸载"一个插件,只需从你的路径中删除它
-sudo rm /usr/local/bin/kubectl-hello
-```
-
-
-为了查看可用的所有 `kubectl` 插件,你可以使用 `kubectl plugin list` 子命令:
-```shell
-kubectl plugin list
-```
-
-输出类似于:
-```
-The following kubectl-compatible plugins are available:
-
-/usr/local/bin/kubectl-hello
-/usr/local/bin/kubectl-foo
-/usr/local/bin/kubectl-bar
-```
-
-`kubectl plugin list`指令也可以向你告警哪些插件被运行,或是被其它插件覆盖了,例如:
-```shell
-sudo chmod -x /usr/local/bin/kubectl-foo # 删除执行权限
-kubectl plugin list
-```
-
-```
-The following kubectl-compatible plugins are available:
-
-/usr/local/bin/kubectl-hello
-/usr/local/bin/kubectl-foo
- - warning: /usr/local/bin/kubectl-foo identified as a plugin, but it is not executable
-/usr/local/bin/kubectl-bar
-
-error: one plugin warning was found
-```
-
-
-你可以将插件视为在现有 kubectl 命令之上构建更复杂功能的一种方法:
-
-
-```shell
-cat ./kubectl-whoami
-```
-
-
-接下来的几个示例假设你已经将 `kubectl-whoami` 设置为以下内容:
-
-
-```shell
-#!/bin/bash
-
-#这个插件利用 `kubectl config` 命令基于当前所选上下文输出当前用户的信息
-kubectl config view --template='{{ range .contexts }}{{ if eq .name "'$(kubectl config current-context)'" }}Current user: {{ printf "%s\n" .context.user }}{{ end }}{{ end }}'
-```
-
-
-运行以上命令将为你提供一个输出,其中包含 KUBECONFIG 文件中当前上下文的用户:
-
-
-```shell
-#!/bin/bash
-# 使文件成为可执行的
-sudo chmod +x ./kubectl-whoami
-
-# 然后移动到你的路径中
-sudo mv ./kubectl-whoami /usr/local/bin
-
-kubectl whoami
-Current user: plugins-user
-```
-
-
-要了解关于插件的更多信息,请查看[示例 cli 插件](https://github.com/kubernetes/sample-cli-plugin)。
-
-
-
-## {{% heading "whatsnext" %}}
-
-
-
-* 开始使用 [kubectl](/docs/reference/generated/kubectl/kubectl-commands/) 命令。
-
-* 查看更多[示例 cli 插件](https://github.com/kubernetes/sample-cli-plugin)。
diff --git a/content/zh/docs/setup/production-environment/windows/user-guide-windows-containers.md b/content/zh/docs/setup/production-environment/windows/user-guide-windows-containers.md
index 3fcbb64e20..c4a28a707c 100644
--- a/content/zh/docs/setup/production-environment/windows/user-guide-windows-containers.md
+++ b/content/zh/docs/setup/production-environment/windows/user-guide-windows-containers.md
@@ -31,7 +31,7 @@ Windows 应用程序构成了许多组织中运行的服务和应用程序的很
* Configure an example deployment to run Windows containers on the Windows node
* (Optional) Configure an Active Directory Identity for your Pod using Group Managed Service Accounts (GMSA)
-->
-## 目标
+## 目标 {#objectives}
* 配置一个示例 deployment 以在 Windows 节点上运行 Windows 容器
* (可选)使用组托管服务帐户(GMSA)为你的 Pod 配置 Active Directory 身份
@@ -46,13 +46,13 @@ behaves in much the same way for Linux and Windows containers.
[Kubectl commands](/docs/reference/kubectl/) to interface with the cluster are identical.
The example in the section below is provided to jumpstart your experience with Windows containers.
-->
-## 在你开始之前
+## 在你开始之前 {#before-you-begin}
* 创建一个 Kubernetes 集群,其中包括一个控制平面和
[运行 Windows 服务器的工作节点](/zh/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes/)
* 重要的是要注意,对于 Linux 和 Windows 容器,在 Kubernetes
上创建和部署服务和工作负载的行为几乎相同。
- 与集群接口的 [kubectl 命令](/zh/docs/reference/kubectl/overview/)相同。
+ 与集群接口的 [kubectl 命令](/zh/docs/reference/kubectl/)相同。
提供以下部分中的示例只是为了快速启动 Windows 容器的使用体验。
-## 入门:部署 Windows 容器
+## 入门:部署 Windows 容器 {#getting-started-deploying-a-windows-container}
要在 Kubernetes 上部署 Windows 容器,你必须首先创建一个示例应用程序。
下面的示例 YAML 文件创建了一个简单的 Web 服务器应用程序。
@@ -163,13 +163,13 @@ the container port 80 is exposed directly to the service.
kubectl get pods -o wide -w
```
- 正确部署服务后,两个 Pod 都标记为“Ready”。要退出 watch 命令,请按 Ctrl + C。
+ 正确部署服务后,两个 Pod 都标记为 “Ready”。要退出 watch 命令,请按 Ctrl + C。
1. 检查部署是否成功。验证:
* Windows 节点上每个 Pod 有两个容器,使用 `docker ps`
* Linux 控制平面节点列出两个 Pod,使用 `kubectl get pods`
- * 跨网络的节点到 Pod 通信,从 Linux 控制平面节点 `curl` 你的 pod IPs 的端口80,以检查 Web 服务器响应
+ * 跨网络的节点到 Pod 通信,从 Linux 控制平面节点 `curl` 你的 pod IPs 的端口 80,以检查 Web 服务器响应
* Pod 到 Pod 的通信,使用 docker exec 或 kubectl exec 在 Pod 之间
(以及跨主机,如果你有多个 Windows 节点)进行 ping 操作
* 服务到 Pod 的通信,从 Linux 控制平面节点和各个 Pod 中 `curl` 虚拟服务 IP
@@ -194,7 +194,7 @@ Only Windows pods are able to access service IPs.
-->
## 可观测性 {#observability}
-### 抓取来自工作负载的日志
+### 抓取来自工作负载的日志 {#capturing-logs-from-workloads}
-## 使用可配置的容器用户名
+## 使用可配置的容器用户名 {#using-configurable-container-usernames}
从 Kubernetes v1.16 开始,可以为 Windows 容器配置与其镜像默认值不同的用户名
来运行其入口点和进程。
@@ -255,7 +255,7 @@ simplified service principal name (SPN) management, and the ability to delegate
Containers configured with a GMSA can access external Active Directory Domain resources while carrying the identity configured with the GMSA.
Learn more about configuring and using GMSA for Windows containers [here](/docs/tasks/configure-pod-container/configure-gmsa/).
-->
-## 使用组托管服务帐户管理工作负载身份
+## 使用组托管服务帐户管理工作负载身份 {#managing-workload-identity-with-group-managed-service-accounts}
从 Kubernetes v1.14 开始,可以将 Windows 容器工作负载配置为使用组托管服务帐户(GMSA)。
组托管服务帐户是 Active Directory 帐户的一种特定类型,它提供自动密码管理,
@@ -267,7 +267,7 @@ Windows 容器配置和使用 GMSA 的更多信息。
-## 污点和容忍度
+## 污点和容忍度 {#taints-and-tolerations}
目前,用户需要将 Linux 和 Windows 工作负载运行在各自特定的操作系统的节点上,
-因而需要结合使用污点和节点选择算符。 这可能仅给 Windows 用户造成不便。
+因而需要结合使用污点和节点选择算符。这可能仅给 Windows 用户造成不便。
推荐的方法概述如下,其主要目标之一是该方法不应破坏与现有 Linux 工作负载的兼容性。
如果 `IdentifyPodOS` [特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)是启用的,
你可以(并且应该)为 Pod 设置 `.spec.os.name` 以表明该 Pod
-中的容器所针对的操作系统。 对于运行 Linux 容器的 Pod,设置
-`.spec.os.name` 为 `linux`。 对于运行 Windows 容器的 Pod,设置 `.spec.os.name`
+中的容器所针对的操作系统。对于运行 Linux 容器的 Pod,设置
+`.spec.os.name` 为 `linux`。对于运行 Windows 容器的 Pod,设置 `.spec.os.name`
为 `Windows`。
{{< note >}}
@@ -317,7 +318,7 @@ so taints and tolerations and node selectors are still required
-### 确保特定操作系统的工作负载落在适当的容器主机上
+### 确保特定操作系统的工作负载落在适当的容器主机上 {#ensuring-os-specific-workloads-land-on-the-appropriate-container-host}
-### 处理同一集群中的多个 Windows 版本
+### 处理同一集群中的多个 Windows 版本 {#handling-multiple-windows-versions-in-the-same-cluster}
-Kubernetes 1.17 自动添加了一个新标签 `node.kubernetes.io/windows-build` 来简化此操作。
+Kubernetes 1.17 自动添加了一个新标签 `node.kubernetes.io/windows-build` 来简化此操作。
如果你运行的是旧版本,则建议手动将此标签添加到 Windows 节点。
-### 使用 RuntimeClass 简化
+### 使用 RuntimeClass 简化 {#simplifying-with-runtimeclass}
-## 使用 kubectl 完成集群的第一次访问
+## 使用 kubectl 完成集群的第一次访问 {#accessing-for-the-first-time-with-kubectl}
-当你第一次访问 Kubernetes API 的时候,我们建议你使用 Kubernetes CLI,`kubectl`。
+当你第一次访问 Kubernetes API 的时候,我们建议你使用 Kubernetes CLI 工具 `kubectl`。
访问集群时,你需要知道集群的地址并且拥有访问的凭证。通常,这些在你通过
[启动安装](/zh/docs/setup/)安装集群时都是自动安装好的,或者其他人安装时
@@ -49,11 +49,12 @@ kubectl config view
```
-有许多 [例子](/zh/docs/reference/kubectl/cheatsheet/) 介绍了如何使用 kubectl,
-可以在 [kubectl 参考](/zh/docs/reference/kubectl/overview/) 中找到更完整的文档。
+有许多[例子](/zh/docs/reference/kubectl/cheatsheet/)介绍了如何使用 kubectl,
+可以在 [kubectl 参考](/zh/docs/reference/kubectl/)中找到更完整的文档。
-## 直接访问 REST API
+## 直接访问 REST API {#directly-accessing-the-rest-api}
Kubectl 处理 apiserver 的定位和身份验证。
如果要使用 curl 或 wget 等 http 客户端或浏览器直接访问 REST API,可以通过
@@ -97,13 +98,13 @@ The following command runs kubectl in a mode where it acts as a reverse proxy.
locating the apiserver and authenticating.
Run it like this:
-->
-### 使用 kubectl proxy
+### 使用 kubectl proxy {#using-kubectl-proxy}
以下命令以反向代理的模式运行 kubectl。它处理 apiserver 的定位和验证。
像这样运行:
```shell
-kubectl proxy --port=8080 &
+kubectl proxy --port=8080
```
+输出类似于:
+
```json
{
"kind": "APIVersions",
@@ -139,18 +146,18 @@ curl http://localhost:8080/api/
-### 不使用 kubectl proxy
+### 不使用 kubectl proxy {#without-kubectl-proxy}
-在 Kubernetes 1.3 或更高版本中,`kubectl config view` 不再显示 token。
使用 `kubectl apply` 和 `kubectl describe secret ...` 及 grep 和剪切操作来为 default 服务帐户创建令牌,如下所示:
-`grep/cut` 方法实现:
+
首先,创建 Secret,请求默认 ServiceAccount 的令牌:
+
```shell
kubectl apply -f - <
接下来,等待令牌控制器使用令牌填充 Secret:
+
```shell
while ! kubectl describe secret default-token | grep -E '^token' >/dev/null; do
echo "waiting for token..." >&2
@@ -176,12 +182,22 @@ while ! kubectl describe secret default-token | grep -E '^token' >/dev/null; do
done
```
+
捕获并使用生成的令牌:
+
```shell
-APISERVER=$(kubectl config view | grep server | cut -f 2- -d ":" | tr -d " ")
-TOKEN=$(kubectl describe secret default-token | grep -E '^token' | cut -f2 -d':' | tr -d ' ')
+APISERVER=$(kubectl config view --minify | grep server | cut -f 2- -d ":" | tr -d " ")
+TOKEN=$(kubectl describe secret default-token | grep -E '^token' | cut -f2 -d':' | tr -d " ")
curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
```
+
+
+输出类似于:
+
```json
{
"kind": "APIVersions",
@@ -197,14 +213,22 @@ curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
}
```
+
`jsonpath` 方法实现:
```shell
APISERVER=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}')
-TOKEN=$(kubectl get secret default-token -o jsonpath='{.data.token}' | base64 --decode )
+TOKEN=$(kubectl get secret default-token -o jsonpath='{.data.token}' | base64 --decode)
curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
```
+
+输出类似于:
+
```json
{
"kind": "APIVersions",
@@ -230,9 +254,8 @@ certificate.
On some clusters, the apiserver does not require authentication; it may serve
on localhost, or be protected by a firewall. There is not a standard
-for this. [Configuring Access to the API](/docs/admin/accessing-the-api)
-describes how a cluster admin can configure this. Such approaches may conflict
-with future high-availability support.
+for this. [Controlling Access to the API](/docs/concepts/security/controlling-access)
+describes how a cluster admin can configure this.
-->
上面的例子使用了 `--insecure` 参数,这使得它很容易受到 MITM 攻击。
当 kubectl 访问集群时,它使用存储的根证书和客户端证书来访问服务器
@@ -252,26 +275,26 @@ client libraries.
### Go client
-* To get the library, run the following command: `go get k8s.io/client-go//kubernetes`. See [https://github.com/kubernetes/client-go](https://github.com/kubernetes/client-go) to see which versions are supported.
-* Write an application atop of the client-go clients. Note that client-go defines its own API objects, so if needed, please import API definitions from client-go rather than from the main repository, e.g., `import "k8s.io/client-go/1.4/pkg/api/v1"` is correct.
+* To get the library, run the following command: `go get k8s.io/client-go@kubernetes-`, see [INSTALL.md](https://github.com/kubernetes/client-go/blob/master/INSTALL.md#for-the-casual-user) for detailed installation instructions. See [https://github.com/kubernetes/client-go](https://github.com/kubernetes/client-go#compatibility-matrix) to see which versions are supported.
+* Write an application atop of the client-go clients. Note that client-go defines its own API objects, so if needed, please import API definitions from client-go rather than from the main repository, e.g., `import "k8s.io/client-go/kubernetes"` is correct.
The Go client can use the same [kubeconfig file](/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
as the kubectl CLI does to locate and authenticate to the apiserver. See this [example](https://git.k8s.io/client-go/examples/out-of-cluster-client-configuration/main.go).
If the application is deployed as a Pod in the cluster, please refer to the [next section](#accessing-the-api-from-a-pod).
-->
-## 以编程方式访问 API
+## 以编程方式访问 API {#programmatic-access-to-the-api}
Kubernetes 官方提供对 [Go](#go-client) 和 [Python](#python-client) 的客户端库支持。
-### Go 客户端
+### Go 客户端 {#go-client}
-* 想要获得这个库,请运行命令:`go get k8s.io/client-go//kubernetes`。
- 参阅 [https://github.com/kubernetes/client-go](https://github.com/kubernetes/client-go)
- 来查看目前支持哪些版本。
+* 想要获得这个库,请运行命令:`go get k8s.io/client-go@kubernetes-`,
+ 有关详细安装说明,请参阅 [INSTALL.md](https://github.com/kubernetes/client-go/blob/master/INSTALL.md#for-the-casual-user)。
+ 请参阅 [https://github.com/kubernetes/client-go](https://github.com/kubernetes/client-go#compatibility-matrix) 以查看支持的版本。
* 基于这个 client-go 客户端库编写应用程序。
请注意,client-go 定义了自己的 API 对象,因此如果需要,请从 client-go 而不是从主存储库
- 导入 API 定义,例如,`import "k8s.io/client-go/1.4/pkg/api/v1"` 才是对的。
+ 导入 API 定义,例如,`import "k8s.io/client-go/kubernetes"` 才是对的。
Go 客户端可以像 kubectl CLI 一样使用相同的
[kubeconfig 文件](/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
@@ -286,7 +309,7 @@ Go 客户端可以像 kubectl CLI 一样使用相同的
To use [Python client](https://github.com/kubernetes-client/python), run the following command: `pip install kubernetes`. See [Python Client Library page](https://github.com/kubernetes-client/python) for more installation options.
-The Python client can use the same [kubeconfig file](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)
+The Python client can use the same [kubeconfig file](/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
as the kubectl CLI does to locate and authenticate to the apiserver. See this [example](https://github.com/kubernetes-client/python/tree/master/examples).
### Other languages
@@ -294,7 +317,7 @@ as the kubectl CLI does to locate and authenticate to the apiserver. See this [e
There are [client libraries](/docs/reference/using-api/client-libraries/) for accessing the API from other languages.
See documentation for other libraries for how they authenticate.
-->
-### Python 客户端
+### Python 客户端 {#python-client}
如果想要使用 [Python 客户端](https://github.com/kubernetes-client/python),
请运行命令:`pip install kubernetes`。参阅
@@ -306,7 +329,7 @@ Python 客户端可以像 kubectl CLI 一样使用相同的
来定位和验证 apiserver,可参阅
[示例](https://github.com/kubernetes-client/python/tree/master/examples)。
-### 其它语言
+### 其它语言 {#other-languages}
目前有多个[客户端库](/zh/docs/reference/using-api/client-libraries/)
为其它语言提供访问 API 的方法。
@@ -332,23 +355,23 @@ for more details.
## 访问集群上运行的服务 {#accessing-services-running-on-the-cluster}
上一节介绍了如何连接到 Kubernetes API 服务器。
有关连接到 Kubernetes 集群上运行的其他服务的信息,请参阅
-[访问集群服务](/zh/docs/tasks/administer-cluster/access-cluster-services/)。
+[访问集群服务](/zh/docs/tasks/access-application-cluster/access-cluster-services/)。
-## 请求重定向
+## 请求重定向 {#requesting-redirects}
重定向功能已弃用并被删除。请改用代理(见下文)。
@@ -367,7 +390,7 @@ There are several different proxies you may encounter when using Kubernetes:
- adds authentication headers
-->
-## 多种代理
+## 多种代理 {#so-many-proxies}
使用 Kubernetes 时可能会遇到几种不同的代理:
diff --git a/static/_redirects b/static/_redirects
index 872c340201..8576b926ef 100644
--- a/static/_redirects
+++ b/static/_redirects
@@ -216,6 +216,7 @@
/docs/reference/glossary/maintainer/ /docs/reference/glossary/approver/ 301
/docs/reference/kubectl/overview/ /docs/reference/kubectl/ 301
+/zh/docs/reference/kubectl/overview/ /zh/docs/reference/kubectl/ 301
/docs/reference/kubectl/kubectl-cmds/ /docs/reference/generated/kubectl/kubectl-commands/ 301!
/docs/reference/kubectl/kubectl/kubectl_* /docs/reference/generated/kubectl/kubectl-commands#:splat 301
/docs/reference/scheduling/profiles/ /docs/reference/scheduling/config/#profiles 301