diff --git a/content/zh/docs/concepts/extend-kubernetes/extend-cluster.md b/content/zh/docs/concepts/extend-kubernetes/extend-cluster.md deleted file mode 100644 index 05af5323d9..0000000000 --- a/content/zh/docs/concepts/extend-kubernetes/extend-cluster.md +++ /dev/null @@ -1,434 +0,0 @@ ---- -title: 扩展 Kubernetes 集群 -content_type: concept -weight: 10 ---- - - - - - -Kubernetes 是高度可配置和可扩展的。因此,极少需要分发或提交补丁代码给 Kubernetes 项目。 - -本文档介绍自定义 Kubernetes 集群的选项。本文档的目标读者包括希望了解如何使 -Kubernetes 集群满足其业务环境需求的 -{{< glossary_tooltip text="集群运维人员" term_id="cluster-operator" >}}、 -Kubernetes 项目的{{< glossary_tooltip text="贡献者" term_id="contributor" >}}。 -或潜在的{{< glossary_tooltip text="平台开发人员" term_id="platform-developer" >}} -也可以从本文找到有用的信息,如对已存在扩展点和模式的介绍,以及它们的权衡和限制。 - - - - -## 概述 - -定制方法可以大致分为 *配置(Configuration)* 和 *扩展(Extension)* 。 -*配置* 只涉及更改标志参数、本地配置文件或 API 资源; -*扩展* 涉及运行额外的程序或服务。本文档主要内容是关于扩展。 - - -## 配置 {#configuration} - -关于 *配置文件* 和 *标志* 的说明文档位于在线文档的"参考"部分,按照可执行文件组织: - -* [kubelet](/zh/docs/reference/command-line-tools-reference/kubelet/) -* [kube-apiserver](/zh/docs/reference/command-line-tools-reference/kube-apiserver/) -* [kube-controller-manager](/zh/docs/reference/command-line-tools-reference/kube-controller-manager/) -* [kube-scheduler](/zh/docs/reference/command-line-tools-reference/kube-scheduler/). - - -在托管的 Kubernetes 服务或受控安装的 Kubernetes 版本中,标志和配置文件可能并不总是可以更改的。而且当它们可以进行更改时,它们通常只能由集群管理员进行更改。此外,标志和配置文件在未来的 Kubernetes 版本中可能会发生变化,并且更改设置后它们可能需要重新启动进程。出于这些原因,只有在没有其他选择的情况下才使用它们。 - - -*内置策略 API* ,例如 [ResourceQuota](/zh/docs/concepts/policy/resource-quotas/)、 -[PodSecurityPolicy](/zh/docs/concepts/policy/pod-security-policy/)、 -[NetworkPolicy](/zh/docs/concepts/services-networking/network-policies/) -和基于角色的权限控制 ([RBAC](/zh/docs/reference/access-authn-authz/rbac/)), -是内置的 Kubernetes API。API 通常与托管的 Kubernetes 服务和受控的 Kubernetes 安装一起使用。 -它们是声明性的,并使用与其他 Kubernetes 资源(如 Pod )相同的约定,所以新的集群配置可以重复使用, -并以与应用程序相同的方式进行管理。 -而且,当它们变稳定后,也遵循和其他 Kubernetes API 一样的 -[支持政策](/zh/docs/reference/using-api/deprecation-policy/)。 -出于这些原因,在合适的情况下它们优先于 *配置文件* 和 *标志* 被使用。 - - -## 扩展程序 {#extension} - -扩展程序是指对 Kubernetes 进行扩展和深度集成的软件组件。它们适合用于支持新的类型和新型硬件。 - -大多数集群管理员会使用托管的或统一分发的 Kubernetes 实例。 -因此,大多数 Kubernetes 用户不需要安装扩展程序,而且还有少部分用户甚至需要编写新的扩展程序。 - - -## 扩展模式 {#extension-patterns} - - -Kubernetes 的设计是通过编写客户端程序来实现自动化的。 -任何读和(或)写 Kubernetes API 的程序都可以提供有用的自动化工作。 -*自动化* 程序可以运行在集群之中或之外。按照本文档的指导,你可以编写出高可用的和健壮的自动化程序。 -自动化程序通常适用于任何 Kubernetes 集群,包括托管集群和受管理安装的集群。 - - -*控制器(Controller)* 模式是编写适合 Kubernetes 的客户端程序的一种特定模式。 -控制器通常读取一个对象的 `.spec` 字段,可能做出一些处理,然后更新对象的 `.status` 字段。 - -一个控制器是 Kubernetes 的一个客户端。 -当 Kubernetes 作为客户端调用远程服务时,它被称为 *Webhook* , -远程服务称为 *Webhook* 后端。 和控制器类似,Webhooks 增加了一个失败点。 - - -在 webhook 模型里,Kubernetes 向远程服务发送一个网络请求。 -在 *可执行文件插件* 模型里,Kubernetes 执行一个可执行文件(程序)。 -可执行文件插件被 kubelet(如 -[Flex 卷插件](/zh/docs/concepts/storage/volumes/#flexvolume) -和[网络插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/) -和 `kubectl` 所使用。 - - -下图显示了扩展点如何与 Kubernetes 控制平面进行交互。 - - - - - - -## 扩展点 {#extension-points} - -下图显示了 Kubernetes 系统的扩展点。 - - - - - - - -1. 用户通常使用 `kubectl` 与 Kubernetes API 进行交互。 - [kubectl 插件](/zh/docs/tasks/extend-kubectl/kubectl-plugins/)扩展了 kubectl 可执行文件。 - 它们只影响个人用户的本地环境,因此不能执行站点范围的策略。 -2. API 服务器处理所有请求。API 服务器中的几种类型的扩展点允许对请求进行身份认证或根据其内容对其进行阻止、 - 编辑内容以及处理删除操作。这些内容在 - [API 访问扩展](/zh/docs/concepts/extend-kubernetes/#api-access-extensions)小节中描述。 -3. API 服务器提供各种 *资源(Resource)* 。 *内置的资源种类(Resource Kinds)* ,如 `pods`, - 由 Kubernetes 项目定义,不能更改。你还可以添加你自己定义的资源或其他项目已定义的资源, - 称为 *自定义资源(Custom Resource)*,如[自定义资源](/zh/docs/concepts/extend-kubernetes/#user-defined-types) - 部分所述。自定义资源通常与 API 访问扩展一起使用。 -4. Kubernetes 调度器决定将 Pod 放置到哪个节点。有几种方法可以扩展调度器。 - 这些内容在[调度器扩展](/zh/docs/concepts/extend-kubernetes/#scheduler-extensions) - 小节中描述。 -5. Kubernetes 的大部分行为都是由称为控制器(Controllers)的程序实现的,这些程序是 API 服务器的客户端。 - 控制器通常与自定义资源一起使用。 -6. `kubelet` 在主机上运行,并帮助 Pod 看起来就像在集群网络上拥有自己的 IP 的虚拟服务器。 - [网络插件](/zh/docs/concepts/extend-kubernetes/#network-plugins)让你可以实现不同的 pod 网络。 -7. `kubelet` 也负责为容器挂载和卸载卷。新的存储类型可以通过 - [存储插件](/zh/docs/concepts/extend-kubernetes/#storage-plugins)支持。 - - -如果你不确定从哪里开始扩展,下面流程图可以提供一些帮助。请注意,某些解决方案可能涉及多种类型的扩展。 - - - - - - -## API 扩展 {#api-extensions} - -### 用户自定义类型 {#user-defined-types} - -如果你想定义新的控制器、应用程序配置对象或其他声明式 API,并使用 Kubernetes -工具(如 `kubectl`)管理它们,请考虑为 Kubernetes 添加一个自定义资源。 - -不要使用自定义资源作为应用、用户或者监控数据的数据存储。 - -有关自定义资源的更多信息,请查看 -[自定义资源概念指南](/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources/)。 - - -### 将新的 API 与自动化相结合 - -自定义资源 API 和控制循环的组合称为 -[操作者(Operator)模式](/zh/docs/concepts/extend-kubernetes/operator/)。 -操作者模式用于管理特定的,通常是有状态的应用程序。 -这些自定义 API 和控制循环还可用于控制其他资源,例如存储或策略。 - - -### 改变内置资源 - -当你通过添加自定义资源来扩展 Kubernetes API 时,添加的资源始终属于新的 API 组。 -你不能替换或更改已有的 API 组。 -添加 API 不会直接影响现有 API(例如 Pod )的行为,但是 API 访问扩展可以。 - - -### API 访问扩展 {#api-access-extensions} - -当请求到达 Kubernetes API Server 时,它首先被要求进行用户认证,然后要进行授权检查, -接着受到各种类型的准入控制的检查。有关此流程的更多信息,请参阅 -[Kubernetes API 访问控制](/zh/docs/concepts/security/controlling-access/)。 - -上述每个步骤都提供了扩展点。 - -Kubernetes 有几个它支持的内置认证方法。它还可以位于身份验证代理之后,并将 Authorziation 头部 -中的令牌发送给远程服务(webhook)进行验证。所有这些方法都在 -[身份验证文档](/zh/docs/reference/access-authn-authz/authentication/)中介绍。 - - -### 身份认证 {#authentication} - -[身份认证](/zh/docs/reference/access-authn-authz/authentication/) -将所有请求中的头部字段或证书映射为发出请求的客户端的用户名。 - -Kubernetes 提供了几种内置的身份认证方法,如果这些方法不符合你的需求,可以使用 -[身份认证 Webhook](/zh/docs/reference/access-authn-authz/authentication/#webhook-token-authentication) 方法。 - - -### 鉴权 {#authorization} - -[鉴权组件](/zh/docs/reference/access-authn-authz/authorization/)决定特定用户是否可以对 -API 资源执行读取、写入以及其他操作。它只是在整个资源的层面上工作 -- -它不基于任意的对象字段进行区分。如果内置授权选项不能满足你的需求, -[鉴权 Webhook](/zh/docs/reference/access-authn-authz/webhook/) -允许调用用户提供的代码来作出授权决定。 - - -### 动态准入控制 - -在请求被授权之后,如果是写入操作,它还将进入 -[准入控制](/zh/docs/reference/access-authn-authz/admission-controllers/) -步骤。除了内置的步骤之外,还有几个扩展: - -* [镜像策略 Webhook](/zh/docs/reference/access-authn-authz/admission-controllers/#imagepolicywebhook) - 限制哪些镜像可以在容器中运行。 -* 为了进行灵活的准入控制决策,可以使用通用的 - [准入 Webhook](/zh/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks)。 - 准入 Webhooks 可以拒绝创建或更新操作。 - - -## 基础设施扩展 - -### 存储插件 - -[Flex Volumes](/zh/docs/concepts/storage/volumes/#flexvolume) -允许用户挂载无内置插件支持的卷类型,它通过 Kubelet 调用一个可执行文件插件来挂载卷。 - - -### 设备插件 {#device-plugins} - -设备插件允许节点通过 -[设备插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/). -发现新的节点资源(除了内置的 CPU 和内存之外)。 - - -### 网络插件 {#network-plugins} - -不同的网络结构可以通过节点级的 -[网络插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/) -得到支持。 - - -### 调度器扩展 {#scheduler-extensions} - -调度器是一种特殊类型的控制器,用于监视 pod 并将其分配到节点。 -默认的调度器可以完全被替换,而继续使用其他 Kubernetes 组件,或者可以同时运行 -[多个调度器](/zh/docs/tasks/extend-kubernetes/configure-multiple-schedulers/)。 - -这是一个不太轻松的任务,几乎所有的 Kubernetes 用户都会意识到他们并不需要修改调度器。 - -调度器也支持 -[Webhook](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/scheduler_extender.md), -它允许使用一个 Webhook 后端(调度器扩展程序)为 Pod 筛选节点和确定节点的优先级。 - - - -## {{% heading "whatsnext" %}} - - -* 详细了解[自定义资源](/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources/) -* 了解[动态准入控制](/zh/docs/reference/access-authn-authz/extensible-admission-controllers/) -* 详细了解基础设施扩展 - * [网络插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/) - * [设备插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/) -* 了解 [kubectl 插件](/zh/docs/tasks/extend-kubectl/kubectl-plugins/) -* 了解[操作者模式](/zh/docs/concepts/extend-kubernetes/operator/) - - diff --git a/content/zh/docs/reference/kubernetes-api/api-index.md b/content/zh/docs/reference/kubernetes-api/api-index.md deleted file mode 100644 index a9fca7e581..0000000000 --- a/content/zh/docs/reference/kubernetes-api/api-index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: v1.20 -weight: 50 ---- - -[Kubernetes API v1.20](/docs/reference/generated/kubernetes-api/v1.20/) \ No newline at end of file diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md deleted file mode 100644 index ac949750b1..0000000000 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md +++ /dev/null @@ -1,69 +0,0 @@ - - - -### 概要 - - - -此命令并非设计用来单独运行。请参阅可用子命令列表。 - - - -### 选项 - - ---- - - - - - - - - - - -
-h, --help
- -kubelet 操作的帮助命令 -
- - - -### 从父命令继承的选项 - - ---- - - - - - - - - - - -
--rootfs string
- -[实验] 指向 '真实' 宿主机的根目录。 -
- diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md deleted file mode 100644 index 51ab7eb85d..0000000000 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md +++ /dev/null @@ -1,67 +0,0 @@ - - - -### 概要 - - - -此命令并非设计用来单独运行。请参阅可用子命令列表。 - - - -### 选项 - - ---- - - - - - - - - - - -
-h, --help
- -config 操作的帮助命令 -
- - - -### 从父命令继承的选项 - - ---- - - - - - - - - - - -
--rootfs string
- -[实验] 指向宿主机上的 '实际' 根文件系统的路径。 -
- diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md deleted file mode 100644 index 9c5bd03582..0000000000 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md +++ /dev/null @@ -1,134 +0,0 @@ - - -### 概要 - - - -针对集群中的 kubelet-config-1.X ConfigMap 启用或更新节点的动态 kubelet 配置,其中 X 是所需 kubelet 版本的次要版本。 - - -警告:此功能仍处于试验阶段,默认情况下处于禁用状态。仅当知道自己在做什么时才启用它,因为在此阶段它可能会产生令人惊讶的副作用。 - - -Alpha 免责声明:此命令当前为 Alpha 功能。 - -``` -kubeadm alpha kubelet config enable-dynamic [flags] -``` - - -### 示例 - -``` - # 为节点启用动态 kubelet 配置。 - kubeadm alpha phase kubelet enable-dynamic-config --node-name node-1 --kubelet-version 1.16.0 - - WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it - may have surprising side-effects at this stage. -``` - - -### 选项 - - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-h, --help
- -enable-dynamic 操作的帮助命令 -
- ---kubeconfig string     默认值: "/etc/kubernetes/admin.conf" -
- -与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 -
--kubelet-version string
- -kubelet 所需版本 -
--node-name string
- -应该启用动态 kubelet 配置节点的名称 -
- - - -### 从父命令继承的选项 - - ---- - - - - - - - - - - -
--rootfs string
- -[实验] 指向 '真实' 宿主机的根目录。 -
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md deleted file mode 100644 index d2f4bd71f6..0000000000 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md +++ /dev/null @@ -1,68 +0,0 @@ - - - -### 概要 - - - -此命令并非设计用来单独运行。请参阅可用子命令列表。 - - - -### 选项 - - ---- - - - - - - - - - - -
-h, --help
- -selfhosting 操作的帮助命令 -
- - - -### 从父命令继承的选项 - - ---- - - - - - - - - - - -
--rootfs string
- -[实验] 指向 '真实' 宿主机的根目录。 -
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md deleted file mode 100644 index 7f1a6a9fd5..0000000000 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md +++ /dev/null @@ -1,171 +0,0 @@ - - - -### 概要 - - - -将用于控制平面组件的静态 Pod 文件转换为通过 Kubernetes API 配置的自托管 DaemonSet。 - - - -有关自托管的限制,请参阅相关文档。 - - - -Alpha 免责声明:此命令当前为 alpha 功能。 - - -``` -kubeadm alpha selfhosting pivot [flags] -``` - - - -### 示例 - - - -``` -# 将静态 Pod 托管的控制平面转换为自托管的控制平面。 - -kubeadm alpha phase self-hosting convert-from-staticpods -``` - - - -### 选项 - - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ---cert-dir string     默认值:"/etc/kubernetes/pki" -
- -证书存储的路径 -
--config string
- -kubeadm 配置文件的路径。 -
-f, --force
- -在不提示确认的情况下转换集群 -
-h, --help
- -pivot 操作的帮助命令 -
- ---kubeconfig string     默认值:"/etc/kubernetes/admin.conf" -
- -与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 -
-s, --store-certs-in-secrets
- -启用 secret 存储证书 -
- - - -### 从父命令继承的选项 - - ---- - - - - - - - - - - -
--rootfs string
- -[实验] 到 '真实' 主机根文件系统的路径。 -
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_config_view.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_config_view.md deleted file mode 100644 index d3cc8d9041..0000000000 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_config_view.md +++ /dev/null @@ -1,91 +0,0 @@ - - - -### 概要 - - - -使用此命令,可以查看 kubeadm 配置的集群中的 ConfigMap。 -该配置位于 "kube-system" 命名空间中的名为 "kubeadm-config" 的 ConfigMap 中。 - - -``` -kubeadm config view [flags] -``` - - - -### 选项 - - ---- - - - - - - - - - - -
-h, --help
- -view 操作的帮助命令 -
- - - -### 继承于父命令的选项 - - ---- - - - - - - - - - - - - - - - - - -
- ---kubeconfig string     默认值:"/etc/kubernetes/admin.conf" -
- -用于和集群通信的 KubeConfig 文件。如果未设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 -
--rootfs string
- -[实验] 到 '真实' 主机根文件系统的路径。 -
- diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md index 6cb9305b6c..3c1425bfc1 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md @@ -45,9 +45,6 @@ has to be used. ## kubeadm config upload from-file {#cmd-config-from-file} -## kubeadm config view {#cmd-config-view} -{{< include "generated/kubeadm_config_view.md" >}} - ## kubeadm config print init-defaults {#cmd-config-print-init-defaults} {{< include "generated/kubeadm_config_print_init-defaults.md" >}} diff --git a/content/zh/docs/reference/tools.md b/content/zh/docs/reference/tools.md deleted file mode 100644 index 1ad75ba98f..0000000000 --- a/content/zh/docs/reference/tools.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -reviewers: -- janetkuo -title: 工具 -content_type: concept ---- - - - - - -Kubernetes 包含一些内置工具,可以帮助用户更好的使用 Kubernetes 系统。 - - -## Kubectl - - -[`kubectl`](/zh/docs/tasks/tools/install-kubectl/) 是 Kubernetes 命令行工具, -可以用来操控 Kubernetes 集群。 - -## Kubeadm - - -[`kubeadm`](/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/) 是一个命令行工具, -可以用来在物理机、云服务器或虚拟机(目前处于 alpha 阶段) -上轻松部署一个安全可靠的 Kubernetes 集群。 - -## Minikube - - -[`minikube`](https://minikube.sigs.k8s.io/docs/) 是一个可以方便用户 -在其工作站点本地部署一个单节点 Kubernetes 集群的工具,用于开发和测试。 - -## Dashboard - - -[`Dashboard`](/zh/docs/tasks/access-application-cluster/web-ui-dashboard/) -是 Kubernetes 基于 Web 的用户管理界面,允许用户部署容器化应用到 Kubernetes -集群,进行故障排查以及管理集群和集群资源。 - -## Helm - - -[`Kubernetes Helm`](https://github.com/kubernetes/helm) 是一个管理 -预先配置完毕的 Kubernetes 资源包的工具,这里的资源在 Helm 中也被称作 -Kubernetes charts。 - - -使用 Helm: - -* 查找并使用已经打包为 Kubernetes charts 的流行软件 -* 分享您自己的应用作为 Kubernetes charts -* 为 Kubernetes 应用创建可重复执行的构建 -* 为您的 Kubernetes 清单文件提供更智能化的管理 -* 管理 Helm 软件包的发布 - -## Kompose - - -[`Kompose`](https://github.com/kubernetes/kompose) 一个转换工具, -用来帮助 Docker Compose 用户迁移至 Kubernetes。 - - -使用 Kompose: - -* 将一个 Docker Compose 文件解释成 Kubernetes 对象 -* 将本地 Docker 开发 转变成通过 Kubernetes 来管理 -* 转换 v1 或 v2 Docker Compose `yaml` 文件 或 - [已发布的应用程序包](https://docs.docker.com/compose/bundles/) - diff --git a/content/zh/docs/setup/production-environment/tools/kubeadm/self-hosting.md b/content/zh/docs/setup/production-environment/tools/kubeadm/self-hosting.md deleted file mode 100644 index 97a366fd87..0000000000 --- a/content/zh/docs/setup/production-environment/tools/kubeadm/self-hosting.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: 配置您的 kubernetes 集群以自托管控制平台 -content_type: concept -weight: 100 ---- - - - - - -### 自托管 Kubernetes 控制平台 {#self-hosting} - - -kubeadm 允许您实验性地创建 _self-hosted_ Kubernetes 控制平面。 -这意味着 API 服务器,控制管理器和调度程序之类的关键组件将通过配置 Kubernetes API 以 -[DaemonSet Pods](/zh/docs/concepts/workloads/controllers/daemonset/) 的身份运行, -而不是通过静态文件在 kubelet 中配置[静态 Pods](/zh/docs/tasks/configure-pod-container/static-pod/)。 - - -要创建自托管集群,请参见 -[kubeadm alpha selfhosting pivot](/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha/#cmd-selfhosting) -命令。 - - - - -#### 警告 - - -{{< caution >}} -此功能将您的集群设置为不受支持的状态,从而使 kubeadm 无法再管理您的集群。 -这包括 `kubeadm 升级` 。 -{{< /caution >}} - - -1. 1.8及更高版本中的自托管功能有一些重要限制。 - 特别是,自托管集群在没有人工干预的情况下_无法从控制平面节点的重新启动中恢复_ 。 - - -2. 默认情况下,自托管的控制平面 Pod 依赖于从 - [`hostPath`](/zh/docs/concepts/storage/volumes/#hostpath) 卷加载的凭据。 - 除初始创建外,这些凭据不由 kubeadm 管理。 - - -3. 控制平面的自托管部分不包括 etcd,后者仍作为静态 Pod 运行。 - - -#### 过程 - -自托管引导过程描述于 [kubeadm 设计文档](https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.9.md#optional-self-hosting) 中。 - - -总体而言,`kubeadm alpha 自托管` 的工作原理如下: - - - 1. 等待此引导静态控制平面运行且良好。 - 这与没有自我托管的 `kubeadm init` 过程相同。 - - 2. 使用静态控制平面 Pod 清单来构造一组 DaemonSet 清单,这些清单将运行自托管的控制平面。 - 它还会在必要时修改这些清单,例如添加新的 secrets 卷。 - - - 3. 在 `kube-system` 名称空间中创建 DaemonSets ,并等待生成的 Pod 运行。 - - - 4. 自托管 Pod 运行后,将删除其关联的静态 Pod,然后 kubeadm 继续安装下一个组件。 - 这将触发 kubelet 停止那些静态 Pod 。 - - - 5. 当原始静态控制平面停止时,新的自托管控制平面能够绑定到侦听端口并变为活动状态。 - - diff --git a/content/zh/docs/tasks/administer-cluster/enabling-endpointslices.md b/content/zh/docs/tasks/administer-cluster/enabling-endpointslices.md deleted file mode 100644 index 80ac9f50ce..0000000000 --- a/content/zh/docs/tasks/administer-cluster/enabling-endpointslices.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -reviewers: -title: 启用 EndpointSlices -content_type: task ---- - - - - - - -本页提供启用 Kubernetes EndpointSlice 的总览。 - -## {{% heading "prerequisites" %}} - -{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} - - - - -## 介绍 - -EndpointSlice (端点切片)为 Kubernetes Endpoints 提供了可伸缩和可扩展的替代方案。 -它们建立在 Endpoints 提供的功能基础之上,并以可伸缩的方式进行扩展。 -当 Service 具有大量(>100)网络端点时,它们将被分成多个较小的 EndpointSlice 资源, -而不是单个大型 Endpoints 资源。 - - -## 启用 EndpointSlice - -{{< feature-state for_k8s_version="v1.17" state="beta" >}} - -{{< note >}} - -EndpointSlice 资源旨在解决较早资源:Endpoints 中的缺点。一些 Kubernetes 组件和第三方应用程序 -继续使用并依赖 Endpoints。既然情况如此,应该将 EndpointSlices 视为集群中 Endpoints 的补充,而不是 -彻底替代。 -{{< /note >}} - - -Kubernetes 中的 EndpointSlice 功能包含若干不同组件。它们中的大部分都是 -默认被启用的: - - -* _EndpointSlice API_:EndpointSlice 隶属于 `discovery.k8s.io/v1beta1` API。 - 此 API 处于 Beta 阶段,从 Kubernetes 1.17 开始默认被启用。 - 下面列举的所有组件都依赖于此 API 被启用。 -* _EndpointSlice 控制器_:此 {{< glossary_tooltip text="控制器" term_id="controller" >}} - 为 Service 维护 EndpointSlice 及其引用的 Pods。 - 此控制器通过 `EndpointSlice` 特性门控控制。自从 Kubernetes 1.18 起, - 该特性门控默认被启用。 - - -* _EndpointSliceMirroring 控制器_:此 {{< glossary_tooltip text="控制器" term_id="controller" >}} - 将自定义的 Endpoints 映射为 EndpointSlice。 - 控制器受 `EndpointSlice` 特性门控控制。该特性门控自 1.19 开始被默认启用。 -* _kube-proxy_:当 {{< glossary_tooltip text="kube-proxy" term_id="kube-proxy">}} - 被配置为使用 EndpointSlice 时,它会支持更大数量的 Service 端点。 - 此功能在 Linux 上受 `EndpointSliceProxying` 特性门控控制;在 Windows 上受 - `WindowsEndpointSliceProxying` 特性门控控制。 - 在 Linux 上,从 Kubernetes 1.19 版本起自动启用。目前尚未在 Windows 节点 - 上默认启用。 - 要在 Windows 节点上配置 kube-proxy 使用 EndpointSlice,你需要为 kube-proxy 启用 - `WindowsEndpointSliceProxying` - [特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)。 - - - -## API 字段 - -EndpointSlice API 中的某些字段有对应的特性门控控制。 - -- `EndpointSliceNodeName` 特性门控控制对 `nodeName` 字段的访问。这是默认情况下禁用的 Alpha 功能。 -- `EndpointSliceTerminating` 特性门控控制对 `serving` 和 `terminating` 状况字段的访问。这是默认情况下禁用的 Alpha 功能。 - - -## 使用 EndpointSlice - -在集群中完全启用 EndpointSlice 的情况下,你应该看到对应于每个 -Endpoints 资源的 EndpointSlice 资源。除了支持现有的 Endpoints 功能外, -EndpointSlices 将允许集群中网络端点更好的可伸缩性和可扩展性。 - - -## {{% heading "whatsnext" %}} - - -* 参阅 [EndpointSlices](/zh/docs/concepts/services-networking/endpoint-slices/) -* 参阅[将应用程序与服务连接](/zh/docs/concepts/services-networking/connect-applications-service/) diff --git a/content/zh/docs/tasks/tools/install-kubectl.md b/content/zh/docs/tasks/tools/install-kubectl.md deleted file mode 100644 index e67a7dcb21..0000000000 --- a/content/zh/docs/tasks/tools/install-kubectl.md +++ /dev/null @@ -1,1070 +0,0 @@ ---- -title: 安装并配置 kubectl -content_type: task -weight: 10 -card: - name: tasks - weight: 20 - title: 安装 kubectl ---- - - - - -使用 Kubernetes 命令行工具 [kubectl](/zh/docs/reference/kubectl/kubectl/), -你可以在 Kubernetes 上运行命令。 -使用 kubectl,你可以部署应用、检视和管理集群资源、查看日志。 -要了解 kubectl 操作的完整列表,请参阅 -[kubectl 概览](/zh/docs/reference/kubectl/overview/)。 - -## {{% heading "prerequisites" %}} - - -你必须使用与集群小版本号差别为一的 kubectl 版本。 -例如,1.2 版本的客户端应该与 1.1 版本、1.2 版本和 1.3 版本的主节点一起使用。 -使用最新版本的 kubectl 有助于避免无法预料的问题。 - - - - -## 在 Linux 上安装 kubectl {#install-kubectl-on-linux} - -### 在 Linux 上使用 curl 安装 kubectl 可执行文件 - - -1. 使用下面命令下载最新的发行版本: - - ```bash - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" - ``` - - - 要下载特定版本,将命令中的 `$(curl -L -s https://dl.k8s.io/release/stable.txt)` - 部分替换为指定版本。 - - 例如,要下载 Linux 上的版本 {{< param "fullversion" >}},输入: - - ``` - curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/linux/amd64/kubectl - ``` - - -2. 验证可执行文件(可选步骤): - - - 下载 kubectl 校验和文件: - - ```bash - curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256" - ``` - - - 使用校验和文件检查 kubectl 可执行二进制文件: - - ```bash - echo "$( - 如果合法,则输出为: - - ```bash - kubectl: OK - ``` - - - 如果检查失败,则 `sha256` 退出且状态值非 0 并打印类似如下输出: - - ```bash - kubectl: FAILED - sha256sum: WARNING: 1 computed checksum did NOT match - ``` - - {{< note >}} - - 所下载的二进制可执行文件和校验和文件须是同一版本。 - {{< /note >}} - - - -3. 安装 kubectl - - ```bash - sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl - ``` - - - 如果你并不拥有目标系统的 root 访问权限,你仍可以将 kubectl 安装到 - `~/.local/bin` 目录下: - - ```bash - mkdir -p ~/.local/bin/kubectl - mv ./kubectl ~/.local/bin/kubectl - # 之后将 ~/.local/bin/kubectl 添加到环境变量 $PATH 中 - ``` - - -4. 测试你所安装的版本是最新的: - - ``` - kubectl version --client - ``` - - -### 使用原生包管理器安装 {#install-using-native-package-management} - -{{< tabs name="kubectl_install" >}} -{{< tab name="Ubuntu、Debian 或 HypriotOS" codelang="bash" >}} -sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl -curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - -echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list -sudo apt-get update -sudo apt-get install -y kubectl -{{< /tab >}} - -{{< tab name="CentOS、RHEL 或 Fedora" codelang="bash" >}} -cat < /etc/yum.repos.d/kubernetes.repo -[kubernetes] -name=Kubernetes -baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 -enabled=1 -gpgcheck=1 -repo_gpgcheck=1 -gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg -EOF -yum install -y kubectl -{{< /tab >}} -{{< /tabs >}} - - -### 使用其他包管理器安装 {#install-using-other-package-management} - -{{< tabs name="other_kubectl_install" >}} -{{% tab name="Snap" %}} - -如果你使用 Ubuntu 或者其他支持 [snap](https://snapcraft.io/docs/core/install) -包管理器的 Linux 发行版,kubeclt 可以作为 [Snap](https://snapcraft.io) -应用来安装: - -```shell -snap install kubectl --classic - -kubectl version --client -``` - -{{% /tab %}} - -{{% tab name="Homebrew" %}} - -如果你在使用 Linux 且使用 [Homebrew](https://docs.brew.sh/Homebrew-on-Linux) 包管理器, -kubectl 也可以用这种方式[安装](https://docs.brew.sh/Homebrew-on-Linux#install)。 - -```shell -brew install kubectl - -kubectl version --client -``` - -{{% /tab %}} - -{{< /tabs >}} - - -## 在 macOS 上安装 kubectl - -### 在 macOS 上使用 curl 安装 kubectl 可执行文件 - - -1. 下载最新发行版本: - - ```bash - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl" - ``` - - - 要下载特定版本,可将上面命令中的 `$(curl -L -s https://dl.k8s.io/release/stable.txt)` - 部分替换成你想要的版本。 - - 例如,要在 macOS 上安装版本 {{< param "fullversion" >}},输入: - - ```bash - curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/darwin/amd64/kubectl - ``` - - -2. 检查二进制可执行文件(可选操作) - - - 下载 kubectl 校验和文件: - - ```bash - curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256" - ``` - - - 使用校验和文件检查 kubectl 二进制可执行文件: - - ```bash - echo "$( - 如果合法,则输出为: - - ```bash - kubectl: OK - ``` - - - 如果检查失败,则 `shasum` 退出且状态值为非 0,并打印类似如下的输出: - - ```bash - kubectl: FAILED - shasum: WARNING: 1 computed checksum did NOT match - ``` - - {{< note >}} - - 下载的二进制可执行文件和校验和文件须为同一版本。 - {{< /note >}} - - -3. 设置 kubectl 二进制文件为可执行模式 - - ```bash - chmod +x ./kubectl - ``` - - -4. 将 kubectl 二进制文件移动到系统 `PATH` 环境变量中的某个位置: - - ```bash - sudo mv ./kubectl /usr/local/bin/kubectl && \ - sudo chown root: /usr/local/bin/kubectl - ``` - - -5. 测试以确保所安装的版本是最新的: - - ```bash - kubectl version --client - ``` - - -### 在 macOS 上使用 Homebrew 安装 {#install-with-homebrew-on-macos} - -如果你使用的是 macOS 系统且使用 [Homebrew](https://brew.sh/) 包管理器, -你可以使用 Homebrew 来安装 kubectl。 - - -1. 运行安装命令: - - ```bash - brew install kubectl - ``` - - - 或者 - - ```bash - brew install kubernetes-cli - ``` - - -2. 测试以确保你安装的版本是最新的: - - ```bash - kubectl version --client - ``` - - -### 在 macOS 上用 Macports 安装 kubectl - -如果你使用的是 macOS 系统并使用 [Macports](https://macports.org/) 包管理器, -你可以通过 Macports 安装 kubectl。 - - -1. 运行安装命令: - - ```bash - sudo port selfupdate - sudo port install kubectl - ``` - - -2. 测试以确保你安装的版本是最新的: - - ```bash - kubectl version --client - ``` - - -## 在 Windows 上安装 kubectl {#install-kubectl-on-windows} - -### 在 Windows 上使用 curl 安装 kubectl 二进制文件 - - -1. 下载[最新发行版本 {{< param "fullversion" >}}](https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe)。 - - 或者如何你安装了 `curl`,使用下面的命令: - - ```bash - curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe - ``` - - - 要了解哪个是最新的稳定版本(例如,出于脚本编写目的),可查看 - [https://dl.k8s.io/release/stable.txt](https://dl.k8s.io/release/stable.txt)。 - - -2. 验证二进制可执行文件(可选操作) - - - 下载 kubectl 校验和文件: - - ```powershell - curl -LO https://dl.k8s.io/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe.sha256 - ``` - - - 使用校验和文件验证 kubectl 可执行二进制文件: - - - - 使用命令行提示符(Commmand Prompt)来手动比较 `CertUtil` 的输出与 - 所下载的校验和文件: - - ```cmd - CertUtil -hashfile kubectl.exe SHA256 - type kubectl.exe.sha256 - ``` - - - - 使用 PowerShell 的 `-eq` 操作符来自动完成校验操作,获得 `True` 或 `False` 结果: - - ```powershell - $($(CertUtil -hashfile .\kubectl.exe SHA256)[1] -replace " ", "") -eq $(type .\kubectl.exe.sha256) - ``` - - -3. 将可执行文件放到 PATH 目录下。 - - -4. 测试以确定所下载的 `kubectl` 版本是正确的的: - - ```cmd - kubectl version --client - ``` - - -{{< note >}} -[Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/#kubernetes) -会将自己的 `kubectl` 程序添加到 PATH 中。 -如果你之前安装过 Docker Desktop,你可能需要将新安装的 PATH 项放到 Docker Desktop -安装程序所添加的目录之前,或者干脆删除 Docker Desktop 所安装的 `kubectl`。 -{{< /note >}} - - -## 使用 PowerShell 从 PSGallery 安装 kubectl - -如果你使用的是 Windows 系统并使用 [Powershell Gallery](https://www.powershellgallery.com/) -软件包管理器,你可以使用 PowerShell 安装和更新 kubectl。 - - -1. 运行安装命令(确保指定 `DownloadLocation`): - - ```powershell - Install-Script -Name 'install-kubectl' -Scope CurrentUser -Force - install-kubectl.ps1 [-DownloadLocation <路径名>] - ``` - - - {{< note >}} - 如果你没有指定 `DownloadLocation`,那么 `kubectl` 将安装在用户的 `temp` 目录中。 - {{< /note >}} - - - 安装程序创建 `$HOME/.kube` 目录,并指示它创建配置文件 - - -2. 测试以确保你安装的版本是最新的: - - ```powershell - kubectl version --client - ``` - - -{{< note >}} -通过重新运行步骤 1 中列出的两个命令可以更新安装。 -{{< /note >}} - - -### 在 Windows 系统上用 Chocolatey 或者 Scoop 安装 - - -1. 要在 Windows 上用 [Chocolatey](https://chocolatey.org) 或者 - [Scoop](https://scoop.sh) 命令行安装程序安装 kubectl: - - {{< tabs name="kubectl_win_install" >}} - {{% tab name="choco" %}} - ```powershell - choco install kubernetes-cli - ``` - {{% /tab %}} - {{% tab name="scoop" %}} - ```powershell - scoop install kubectl - ``` - {{% /tab %}} - {{< /tabs >}} - - -2. 测试以确保你安装的版本是最新的: - - ``` - kubectl version --client - ``` - - -3. 切换到你的 HOME 目录: - - ```powershell - # 如果你在使用 cmd.exe,运行 cd %USERPROFILE% - cd ~ - ``` - - -4. 创建 `.kube` 目录: - - ```powershell - mkdir .kube - ``` - - -5. 进入到刚刚创建的 `.kube` 目录: - - ```powershell - cd .kube - ``` - - -6. 配置 kubectl 以使用远程 Kubernetes 集群: - - ```powershell - New-Item config -type file - ``` - - -{{< note >}} -使用你喜欢的文本编辑器,例如 Notepad,编辑此配置文件。 -{{< /note >}} - - - -## 将 kubectl 作为 Google Cloud SDK 的一部分下载 - -kubectl 可以作为 Google Cloud SDK 的一部分进行安装。 - - -1. 安装 [Google Cloud SDK](https://cloud.google.com/sdk/)。 - -2. 运行以下命令安装 `kubectl`: - - ```shell - gcloud components install kubectl - ``` - - -3. 测试以确保你安装的版本是最新的: - - ```shell - kubectl version --client - ``` - - -## 验证 kubectl 配置 {#verifying-kubectl-configuration} - -kubectl 需要一个 -[kubeconfig 配置文件](/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/) -使其找到并访问 Kubernetes 集群。当你使用 -[kube-up.sh](https://github.com/kubernetes/kubernetes/blob/master/cluster/kube-up.sh) -创建 Kubernetes 集群或者使用已经部署好的 Minikube 集群时, -会自动生成 kubeconfig 配置文件。 -默认情况下,kubectl 的配置文件位于 `~/.kube/config`。 - - -通过获取集群状态检查 kubectl 是否被正确配置: - -```shell -kubectl cluster-info -``` - - -如果你看到一个 URL 被返回,那么 kubectl 已经被正确配置, -能够正常访问你的 Kubernetes 集群。 - -如果你看到类似以下的信息被返回,那么 kubectl 没有被正确配置, -无法正常访问你的 Kubernetes 集群。 - -``` -The connection to the server was refused - did you specify the right host or port? -``` - - -例如,如果你打算在笔记本电脑(本地)上运行 Kubernetes 集群,则需要首先安装 -minikube 等工具,然后重新运行上述命令。 - -如果 kubectl cluster-info 能够返回 URL 响应,但你无法访问你的集群,可以使用 -下面的命令检查配置是否正确: - -```shell -kubectl cluster-info dump -``` - - -## 可选的 kubectl 配置 - -### 启用 shell 自动补全功能 - -kubectl 为 Bash 和 Zsh 支持自动补全功能,可以节省大量输入! - -下面是设置 Bash 与 Zsh 下自动补齐的过程(包括 Linux 与 macOS 的差异)。 - -{{< tabs name="kubectl_autocompletion" >}} - -{{% tab name="Linux 上的 Bash" %}} - - -#### 介绍 - -用于 Bash 的 kubectl 自动补齐脚本可以用 `kubectl completion bash` 命令生成。 -在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。 - -不过,补齐脚本依赖于 [**bash-completion**](https://github.com/scop/bash-completion) 软件包, -这意味着你必须先安装 bash-completion(你可以通过运行 `type _init_completion`)来测试是否 -你已经安装了这个软件)。 - - -### 安装 bash-completion - -很多包管理器都提供 bash-completion(参见[这里](https://github.com/scop/bash-completion#installation))。 -你可以通过 `apt-get install bash-completion` 或 `yum install bash-completion` 来安装。 - -上述命令会创建 `/usr/share/bash-completion/bash_completion`,也就是 bash-completion 的主脚本。 -取决于所用的包管理器,你可能必须在你的 `~/.bashrc` 中通过 `source` 源引此文件。 - -要搞清楚这一点,可以重新加载你的 Shell 并运行 `type _init_completion`。 -如果命令成功,一切就绪;否则你就需要将下面的内容添加到你的 `~/.bashrc` -文件中: - -```bash -source /usr/share/bash-completion/bash_completion -``` - -之后,重新加载你的 Shell 并运行 `type _init_completion` 来检查 bash-completion 是否已 -正确安装。 - - -### 启用 kubectl 自动补齐 - -你现在需要确定在你的所有 Shell 会话中都源引了 kubectl 自动补齐脚本。 -实现这点有两种方式: - - -- 在 `~/.bashrc` 文件中源引自动补齐脚本 - - ```bash - echo 'source <(kubectl completion bash)' >>~/.bashrc - ``` - - -- 将自动补齐脚本添加到目录 `/etc/bash_completion.d`: - - ```bash - kubectl completion bash >/etc/bash_completion.d/kubectl - ``` - - -如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用: - -```bash -echo 'alias k=kubectl' >>~/.bashrc -echo 'complete -F __start_kubectl k' >>~/.bashrc -``` - - - - -{{< note >}} -bash-completion 会自动源引 `/etc/bash_completion.d` 下的所有自动补齐脚本。 -{{< /note >}} - - -两种方法是等价的。重新加载 Shell 之后,kubectl 的自动补齐应该能够使用了。 - -{{% /tab %}} - -{{% tab name="macOS 上的 Bash" %}} - - -### 介绍 - -用于 Bash 的 kubectl 自动补齐脚本可以用 `kubectl completion bash` 命令生成。 -在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。 -不过,补齐脚本依赖于 [**bash-completion**](https://github.com/scop/bash-completion) 软件包, -你必须预先安装。 - - -{{< warning>}} -`bash-completion` 有两个版本,v1 和 v2。 -v1 是用于 Bash 3.2 版本的(macOS 上的默认配置),v2 是用于 Bash 4.1 以上版本的。 -`kubectl` 补齐脚本 *无法* 在 v1 版本的 bash-completion 和 Bash 3.2 上使用, -需要 **bash-completion v2** 和 **Bash 4.1 以上版本**。 -因此,为了在 macOS 上正常使用 kubectl 自动补齐,你需要安装并使用 Bash 4.1+ -版本([*相关指南*](https://itnext.io/upgrading-bash-on-macos-7138bd1066ba))。 -下面的指令假定你在使用 Bash 4.1+(也就是说 Bash 4.1 及以上版本)。 -{{< /warning >}} - - -### 升级 Bash {#upgrade-bash} - -这里的命令假定你使用的是 Bash 4.1+。你可以通过下面的命令来检查 Bash 版本: - -```bash -echo $BASH_VERSION -``` - - -如果版本很老,你可以使用 Homebrew 来安装或升级: - -```bash -brew install bash -``` - - -重新加载 Shell 并验证你使用的版本是期望的版本: - -```bash -echo $BASH_VERSION $SHELL -``` - - -Homebrew 通常安装 Bash 到 `/usr/local/bin/bash`。 - - -### 安装 bash-completion - -{{< note >}} -如前所述,这里的指令假定你使用的是 Bash 4.1+,这意味着你会安装 bash-completion -的 v2 版本(与此相对,在 Bash 3.2 版本中的 bash-completion v1 是 kubectl -无法使用的。 -{{< /note >}} - -你可以通过输入 `type _init_completion` 来测试是否 bash-completion v2 已经安装。 -如果没有,可以用 Homebrew 来安装: - -```bash -brew install bash-completion@2 -``` - - -就像命令的输出所提示的,你应该将下面的内容添加到 `~/.bash_profile` 文件中: - -```bash -export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d" -[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh" -``` - - -重新加载你的 Shell 并运行 `type _init_completion`,验证 bash-completion v2 -被正确安装。 - - -### 启用 kubectl 自动补齐 - -你现在需要确保在你的所有 Shell 会话中都源引了 kubectl 自动补齐脚本。 -实现这点有两种方式: - - -- 在 `~/.bash_profile` 文件中源引自动补齐脚本 - - ```bash - echo 'source <(kubectl completion bash)' >>~/.bash_profile - ``` - - -- 将自动补齐脚本添加到目录 `/usr/local/etc/bash_completion.d`: - - ```bash - kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl - ``` - - -- 如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用: - - ```bash - echo 'alias k=kubectl' >>~/.bash_profile - echo 'complete -F __start_kubectl k' >>~/.bash_profile - ``` - - -- 如果你是所有 Homebrew 来安装 kubectl(如[前文](#install-with-homebrew-on-macos)所述), - kubectl 补齐脚本应该已经位于 `/usr/local/etc/bash_completion.d/kubectl` 目录下。 - 在这种情况下,你就不用做任何操作了。 - - -{{< note >}} -Homebrew 安装 bash-completion v2 时会源引 `BASH_COMPLETION_COMPAT_DIR` 目录下的所有 -文件,这是为什么后面两种方法也可行的原因。 -{{< /note >}} - - -在任何一种情况下,重新加载 Shell 之后,kubectl 的自动补齐应该可以工作了。 - -{{% /tab %}} - -{{% tab name="Zsh" %}} - - -Zsh 的 kubectl 补齐脚本可通过 `kubectl completion zsh` 命令来生成。 -在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。 - -```zsh -source <(kubectl completion zsh) -``` - - -如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用: - -```zsh -echo 'alias k=kubectl' >>~/.zshrc -echo 'complete -F __start_kubectl k' >>~/.zshrc -``` - - -重新加载 Shell 之后,kubectl 的自动补齐应该可以工作了。 - - -如果你看到类似 `complete:13: command not found: compdef` 这种错误信息, -可以将下面的命令添加到你的 `~/.zshrc` 文件的文件头: - -```zsh -autoload -Uz compinit -compinit -``` - -{{% /tab %}} - -{{< /tabs >}} - -## {{% heading "whatsnext" %}} - - -* [安装 Minikube](https://minikube.sigs.k8s.io/docs/start/) -* 参阅[入门指南](/zh/docs/setup/),了解创建集群相关的信息 -* 了解如何[启动和暴露你的应用](/zh/docs/tasks/access-application-cluster/service-access-application-cluster/) -* 如果你需要访问别人创建的集群,参考 - [共享集群访问文档](/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) -* 阅读 [kubectl 参考文档](/zh/docs/reference/kubectl/kubectl/) -