使用 kubectl 与 Kubernetes API 交互并针对 Kyma 进行配置

学习目标

  • 安装、配置并使用 kubectl

  • 使用最重要的 kubectl 命令

描述 kubectl 与 Kubernetes API 的交互

什么是 kubectl?

要与 Kubernetes API 交互,您需要一个客户端。kubectl 工具是一个用于与 Kubernetes 集群交互的命令行工具。它允许您管理和控制 Kubernetes 资源,例如 pod、service、deployment 等。使用 kubectl,您可以执行各种操作,包括创建、更新和删除资源。Kubernetes API 是一个 REST API,这意味着您可以使用任何 HTTP 客户端与其交互。由于通常还必须处理身份验证和权限,因此使用像 kubectl 这样的专用客户端要容易得多。

Note

在深入内容之前,我们要指出,如果您对 SAP BTP、Kyma 运行时和 kubectl 命令行工具感兴趣,可以在学习路径中找到更详细的信息:Delivering Side-by-Side Extensibility based on SAP BTP, Kyma runtime

配置 Kubectl

要使用 kubectl,您必须在本地计算机上安装它,并将其配置为指向特定的 Kubernetes 集群。首先,您需要一个 kubeconfig 文件。该文件包含有关集群的重要信息,例如 API 服务器 URL、身份验证方法和证书颁发机构。kubeconfig 文件通常存储在用户账户的主目录中。例如,在 Linux 上,kubeconfig 文件位于 ~/.kube/config,在 Windows 上,您可以在 %USERPROFILE%\.kube\config 找到它。

在接下来的某节课中,您将学习如何下载 kubeconfig 文件并配置 kubectl,以便与您的 Kubernetes 集群交互。对于 Kyma,除 kubectl 外,还需要 kubelogin 插件。

一旦 kubeconfig 文件配置正确,kubectl 将在您发出命令时使用该文件中的信息与 Kubernetes API 交互。您也可以通过将 kubeconfig 文件导出到终端来配置 kubectl,或使用 KUBECONFIG 环境变量指定 kubeconfig 文件的位置。

Hint

此方法类似于在 Cloud Foundry 运行时中使用 CF LOGIN 命令。

使用 Kubectl

一旦 kubeconfig 文件配置正确,kubectl 将在您发出命令时使用该文件中的信息与 Kubernetes API 交互。也可以通过将 kubeconfig 文件导出到终端来配置 kubectl。您可以使用 KUBECONFIG 环境变量指定 kubeconfig 文件的位置。

在继续介绍命令之前,请记住,Kubernetes 中定义的所有内容都可以通过 RESTful Kubernetes API 访问。

每个命令都需要指定命名空间和对象类型。如果未指定命名空间,则使用默认命名空间。对象类型是资源类型的名称,例如 PodsDeployments。对象的名称是资源的名称,例如 my-podmy-deployment

kubectl 语法如下:

kubectl [command] [TYPE] [NAME] [flags]

列出对象

要列出对象,可以使用 get 命令。get 命令列出一个或多个资源。例如,要列出 default 命名空间中的所有 Pod,请使用以下命令:

kubectl get pods

要列出特定命名空间中的所有 Pod,可以使用以下命令:

kubectl get pods --namespace my-namespace

Note

--namespace 标志是可选的。如果未指定命名空间,则使用默认命名空间。不过,您也可以在 kubeconfig 文件中指定命名空间,或为不同命名空间创建不同的上下文,然后在这些上下文之间切换,或将自定义命名空间设为默认。有关上下文的更多信息,请阅读官方 Kubernetes 文档

以下是 get 命令的其他一些示例,它们列出默认命名空间中指定类型的资源:

kubectl get pods
kubectl get services
kubectl get replicasets
kubectl get deployments

创建对象

要创建对象,可以使用 create 命令。create 命令从 YAML 或 JSON 文件创建 Kubernetes 对象。例如,要创建一个 Pod,请使用以下命令:

kubectl create -f my-pod.yaml

-f 标志是 --filename 的缩写。它指定包含对象定义的 YAML 或 JSON 文件的路径。

create 命令还可以从 URL 创建对象。例如,要从 URL 创建 Pod,可以使用以下命令:

kubectl create -f https://raw.githubusercontent.com/SAP-samples/kyma-runtime-learning-journey/main/unit_1/my-pod.yaml

Note

如果使用相同的对象定义运行两次 create 命令,它会抛出错误。为避免这种情况,您可以改用 apply 命令。

更新对象

要更新对象,可以使用 apply 命令。apply 命令从 YAML 或 JSON 文件更新 Kubernetes 对象。例如,要更新一个 pod,可以使用以下命令:

kubectl apply -f my-pod.yaml

apply 操作期间,Kubernetes API 服务器会将 YAML 或 JSON 文件中的对象定义与该对象在集群中的当前状态进行比较。如果存在任何差异,则会更新该对象。

删除对象

要删除对象,可以使用 delete 命令。delete 命令删除一个 Kubernetes 对象。例如,要删除一个 Pod,可以使用以下命令:

kubectl delete pod my-pod

描述对象

要描述对象,可以使用 describe 命令。describe 命令显示有关 Kubernetes 对象的详细信息。例如,要描述一个 Pod,可以使用以下命令:

kubectl describe pod my-pod

您甚至可以将 describe 命令的输出导出到 YAML 或 JSON 文件。例如,要将 describe 命令的输出导出到 YAML 文件,可以使用以下命令:

kubectl describe pod my-pod -o yaml > my-pod.yaml

为对象添加标签

要为对象添加标签,可以使用 label 命令。label 命令在 Kubernetes 对象上添加或更新标签。例如,要为 pod 添加标签,可以使用以下命令:

kubectl label pod my-pod my-label=my-value

检索集群信息

要检索集群信息,可以使用 cluster-info 命令。cluster-info 命令显示有关集群的信息。

kubectl cluster-info

要检索资源使用情况信息,可以使用 top 命令。top 命令显示节点和 pod 的资源使用情况信息。

kubectl top nodes
kubectl top pods

其他命令

要获取所有可用命令的完整列表,可以使用 help 命令。

kubectl help

其他客户端

与 Kubernetes API 交互最常见的方式是使用 kubectl。例如,Kyma 自带一个 Dashboard,您可以用它与 Kubernetes API 交互。

概要

在本课中,您学习了如何使用 kubectl 与 Kubernetes API 交互。您还学习了如何配置 kubectl,以及如何使用它来列出、创建、更新、删除和描述对象。您还学习了如何为对象添加标签,以及如何获取所有可用命令的列表。

有关通过 Kubectl 与 Kubernetes API 交互的延伸阅读

在此处查找有关通过 kubectl 与 Kubernetes API 交互的更多信息:

  • Kubernetes Documentation

  • Install kubectl

  • kubectl Cheat Sheet