在 Ubuntu 上安装 Kubectl2025年3月17日 | 阅读 12 分钟 Kubectl 简介Kubernetes 提供了一个命令行工具,可以借助 Kubernetes API 与 Kubernetes 集群 的控制平面进行通信。该工具称为 kubectl。 Kubectl 在目录 $HOME/.kube 中查找一个名为 config 的文件用于配置。我们可以通过设置 --kubeconfig 标志 或 KUBECONFIG 环境变量 来定义其他 kubeconfig 文件。 从用户的角度来看,kubectl 是我们控制 Kubernetes 的驾驶舱。它允许我们执行所有可能的 Kubernetes 操作。从技术用户的角度来看,kubectl 是 Kubernetes API 的客户端。API 才是 Kubernetes 的真正用户界面。 Kubernetes 完全由这个 API 控制。这意味着所有 Kubernetes 操作都公开为一个 API 端点,可以通过对该端点的 HTTP 请求来运行。kubectl 的主要目标是相应地实现对 Kubernetes API 的 HTTP 请求。 Kubernetes 简介Kubernetes 是一个免费的容器编排系统,用于自动化软件部署、管理和扩展。最初由 Google 开发,现由 Cloud Native Computing Foundation 管理。 Kubernetes 这个词源于希腊语,意为“飞行员”或“舵手”。通常,Kubernetes 被称为 K8s,这是 K 和 s 之间的字母数量。 Kubernetes 的概念Kubernetes 指定了一组原语(构建块),这些原语共同提供了基于自定义指标、内存和 CPU 来扩展、维护和部署应用程序的机制。Kubernetes 是可扩展的,并且与工作负载松散耦合。在 Kubernetes 上运行的容器、扩展和内部组件依赖于 Kubernetes API。 Kubernetes 遵循副本/主架构。Kubernetes 的元素可以分为维护单个节点的组件和控制面板组件。 控制面板Kubernetes 的主节点管理集群的 Kubernetes 控制面板,处理其工作负载并协调系统内部的通信。Kubernetes 的控制面板由多个组件组成,所有这些进程都可以运行在单个主节点上的多个主节点上。以下是几个 Kubernetes 控制面板组件:
节点节点也称为 minion 或 worker。它是部署容器的机器。在集群中,所有节点必须运行一个容器运行时,如 containerd,以及以下组件:
为什么我们需要 kubectl?我们的 Kubernetes 平台是一个由工作节点和主节点组成的复合系统。一种与它交互的方式是通过其 API 服务器。该服务器是 Kubernetes 控制平面的主要组件,它表示一个 HTTP REST API,允许所有外部组件、集群和用户之间的通信。 API 被视为我们 Kubernetes 平台的主要用户界面和前端。通过与客户端库、kubectl 交互或直接构建 REST 请求,可以管理、查询和更新我们 Kubernetes 平台上的对象和资源的状态。 Kubectl 是构建 Kubernetes API HTTP 请求的最通用方法之一,它用于执行 Kubernetes 操作、部署容器化应用程序、检查和维护集群中的资源、查看系统日志以及执行监控操作。 Kubectl 身份验证在生产环境或常规环境中,有两种常用技术可以进行 kubectl 身份验证。这两种技术是令牌(OIDC 令牌和服务帐户令牌)和客户端证书(企业 PKI 证书和自签名 Kubernetes 证书)。
kubectl 的常见用例kubectl 通常可用于启动或执行所有 Kubernetes 操作。但有一些最常用的功能用于查询和管理 Kubernetes 集群的健康状况。描述和列出资源是其中一项功能。我们需要检查资源的状态并记住当前运行的资源数量,因为会创建更多资源。
Kubernetes 状态Kubernetes 会主动检查对象(无论是 pod、部署还是容器)的健康状况。Kubernetes 的控制面板包含集群的每个 Kubernetes 对象的当前状态和配置记录。另一方面,控制器管理器会查看实际状态和期望状态之间的差异,并进行操作以改进它们。
在团队协作中,调试对象状态很重要。由其他用户创建的资源可能会限制我们资源的性能。我们创建的资源可能会卡在 Waiting、Pending 状态,或者由于建立其所需的资产当前在空间有限的集群中使用而失败。我们可以使用 kubectl debug 和 kubectl logs 来理解对象的状态并深入研究各种故障原因。 Kubectl 配置Kubectl 是一个与 Kubernetes 交互的 CLI(命令行界面)。我们可以使用它来管理 Kubernetes 资源,包括部署、服务和 pod。kubectl 的配置文件是一个配置文件,其中保存了与 Kubernetes 集群交互的所有关键信息。它包括以下信息:
kubectl 语法我们可以使用以下语法从终端运行 kubectl 命令: 说明 Command- 它描述了我们希望对多个资源执行的操作。 例如,create、describe、delete、get 等。 TYPE- 它描述了资源的类型。这些资源类型不区分大小写,我们可以定义缩写、单数或复数形式。 例如,以下命令会产生相同的结果: NAME- 它描述了资源的名称。资源名称区分大小写。如果缺少名称,则会显示每个资源的详细信息。 例如,kubectl get pods。 我们可以通过名称和类型定义所有资源,或在对一个或多个资源执行操作时定义多个文件。
例如,kubectl get pod/example-pod1 replicationcontroller/example-rc1
为同类资源组资源 例如,kubectl get pod example-pod1 example-pod2 flags- 它描述了可选标志。 例如,我们可以使用 --server 或 -s 标志来指定 Kubernetes API 服务器的端口和地址。 注意:标志会覆盖相关的环境变量和我们从命令行定义的默认值。命名空间覆盖和集群内身份验证首先,kubectl 将默认确定它是否在 pod 中运行,因此也在集群中运行。它首先检查环境变量,即 KUBERNETES_SERVICE_PORT 和 KUBERNETES_SERVICE_HOST,以及 /var/run/secrets/kubernetes.io.serviceaccount/token 上的服务帐户令牌文件的存在。如果这三者都找到,则会模拟集群内身份验证。 为了保持向后兼容性,当在集群内身份验证期间设置了环境变量,即 POD_NAMESPACE 时,它将覆盖服务帐户令牌中的命名空间(默认)。依赖于命名空间默认值的工具或清单会受到此影响。 POD_NAMESPACE 环境变量。如果设置了环境变量,cli 操作将在命名空间资源上默认使用该变量的值。 kubectl 如何管理 ServiceAccount 令牌If
我们在 kubectl 命令行上没有显式指定任何命名空间 然后,kubectl 会模拟它正在我们集群中运行。该工具,即 kubectl 会查找 ServiceAccount 的命名空间(它与 pod 命名空间相同)并在该命名空间下运行。这与集群外部发生的情况不同。如果 kubectl 在集群外部运行且我们未定义命名空间,kubectl 命令将在(默认)命名空间下运行。 kubectl 操作以下是一些 kubectl 操作及其语法和描述: ![]() alpha- 它列出了当前与 alpha 功能相关的命令,这些功能在 Kubernetes 集群中默认未启用。 语法 annotate- 它更新或添加多个资源的注解。 语法 api-resources- 它列出可用的 API 资源。 语法 api-versions- 它列出可用的 API 版本。 语法 apply- 它通过 stdin 或文件将配置更改应用于资源。 语法 attach- 它附加到一个活动的容器,以便与 stdin(容器)进行交互或查看流的末尾。 语法 auth- 检查授权。 语法 autoscale- 它自动扩展由复制控制器处理的 pod 组。 语法 certificate- 更改证书资源。 语法 cluster-info- 它显示集群中服务和主节点的端点信息。 语法 completion- 为指定的 shell(zsh 或 bash)生成最终的 shell 补全代码。 语法 config- 它更改 kubeconfig 文件。 语法 convert- 它在不同 API 版本之间转换配置文件。接受 JSON 和 YAML 格式。 重要提示:它需要安装一个插件,即 kubectl-convert。 语法 cordon- 它将节点标记为不可调度。 语法 cp- 它在容器之间复制目录和文件。 语法 create- 它从 stdin 或文件创建多个资源。 语法 delete- 它通过 stdin、文件或指定标签名称、选择器、资源或资源选择器来删除资源。 语法 describe- 它显示多个资源的详细状态。 语法 diff- 对比文件或 stdin 与实时配置。 语法 在 Ubuntu 上安装 kubectlKubectl 是一款开源工具,在容器编排中至关重要。Kubernetes 通过在多个云环境或本地服务器上大规模管理和编排集群来运行。 集群是用于运行容器化服务和应用程序的主机组。一个集群至少需要两个不同的节点才能运行——一个工作节点和一个主节点。我们可以选择根据需要添加任意数量的工作节点来扩展集群,以实现可扩展性。 在 Kubernetes 中,节点指的是服务器。服务器是主节点,负责集群状态。工作节点是运行工作负载的服务器——通常是容器化服务和应用程序。 前提条件我们需要设置两台在 Ubuntu 系统上运行的服务器。对于 Kubernetes,为了获得最佳性能,最低系统要求是 2 CPUs 和 2 GB RAM。一台服务器将是主节点,另一台将是工作节点。
启用 snaps 并安装 kubectlsnap 是一种应用程序包,它包含了运行在其所有依赖项中,可以在所有流行的 Linux 发行版上运行,只需一次构建。它们会自动优雅地更新和回滚。snap 可从 Snap Store 和应用商店安装和发现,并拥有数百万用户。 启用 snapd如果您运行的是 Focal Fossa (Ubuntu 20.04)、Bionic Beaver (Ubuntu 18.04) 和 Xenial Xerus (Ubuntu 16.04),则无需执行任何操作。Snap 已安装并准备就绪。 对于 Ubuntu 版本介于 Wily Werewolf (Ubuntu 15.10) 和 Trusty Tahr (Ubuntu 14.04 LTS) 之间,以及默认不包含 snap 的 Ubuntu 变体,可以使用 Ubuntu 软件中心 通过搜索 snapd 来安装 snap。也可以通过命令行安装 snapd: ![]() ![]() 要么重新登录并注销,要么重启系统,以确保 snap 路径已正确更新。 安装 kubectl我们可以简单地运行以下命令来安装 kubectl: ![]() 卸载 Kubectl我们可以在终端窗口中使用以下命令来删除或卸载 kubectl: ![]() 下一主题TLP Ubuntu |
我们请求您订阅我们的新闻通讯以获取最新更新。