为 Kyma 设置和配置 Kubectl

学习目标

  • 为 Kyma 设置和配置 kubectl

使用场景

你已成功创建一个 Kyma runtime 实例。现在,你想要与它交互,并学习如何使用 kubectl 命令行界面(CLI)来管理你的资源。但首先,你需要了解如何设置 kubectl CLI 以连接到你的 Kyma runtime,尤其是因为 Kyma runtime 需要 kubectl 的一个特殊插件来完成身份验证过程。

任务流程

在本练习中,你将执行以下步骤:

  1. 安装 kubectl CLI。

  2. 安装 kubelogin 插件。

  3. 配置 kubectl CLI 以连接到你的 Kyma runtime 实例。

  4. 使用 kubectl 与你的 Kyma runtime 实例交互。

任务 1:安装 Kubectl CLI

前提条件

你已在 SAP BTP 子账户中成功创建一个 Kyma runtime 实例。

步骤

  1. 安装 Kubectl CLI。

  2. 按照官方文档安装 kubectl CLI。

  3. 要验证 kubectl CLI 是否已正确安装,请在终端或命令行中运行以下命令:

kubectl version --client

如果安装成功,你会看到客户端和 Kustomize 版本作为输出。 2. 安装 Kubelogin 插件。 Kyma runtime 需要名为 kubelogin 的特殊插件,kubectl CLI 才能连接到你的 Kyma runtime 实例。

  1. 按照官方文档安装 kubelogin 插件。

  2. 要验证 kubelogin 插件是否已正确安装,请在终端或命令行中执行以下命令:

kubectl version --client

如果安装成功,你会看到客户端和 kubelogin 插件版本作为输出。

任务 2:连接到你的 Kyma Runtime 实例

如前所述,kubectl 依赖 kubeconfig 文件,该文件通常位于 ~/.kube 目录(macOS/Linux)或 %USERPROFILE%\.kube(Windows)中。

步骤

  1. 转到你的 SAP BTP 子账户概览页面。

  2. 选择 KubeconfigURL 的链接,以下载你的 Kyma runtime 实例的 kubeconfig.yaml 文件。 KubeconfigURL

  3. 在终端中,将 kubeconfig 文件的位置导出为环境变量。 对于 MacOS/Linux:

export KUBECONFIG={KUBECONFIG_FILE_PATH}

对于 Windows:

$ENV:KUBECONFIG="{KUBECONFIG_FILE_PATH}"

注意

kubeconfig 文件包含用于访问你的 Kyma runtime 实例的凭据。因此,确保其安全非常重要。

  1. 要验证 kubeconfig 文件是否已正确配置,请在终端或命令行中运行以下命令:

kubectl cluster-info

如果成功,你会看到以下输出: 终端输出显示命令 kubectl cluster-info 的结果。它显示 Kubernetes 控制平面和 CoreDNS 在特定 URL 上运行,并建议使用 kubectl cluster-info dump 进行调试。

任务 3:访问你的 Kyma Runtime 中的资源

现在是时候使用一些 kubectl 命令与你的 Kyma runtime 实例交互了。请记住,Kubernetes 中定义的所有内容都可以使用 RESTful Kubernetes API 访问。

每个 kubectl 命令都必须指定命名空间和对象类型。如果未指定命名空间,kubectl 会假定为 default 命名空间。对象类型是资源类型的名称,例如 PodsDeployments。对象的名称是资源的名称,例如 my-podmy-deployment

kubectl 语法如下:

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

步骤

  1. 列出对象。 要列出对象,你可以使用 get 命令。get 命令列出一个或多个资源。

  2. 要列出所有命名空间中的所有 Pod,请使用以下命令:

kubectl get all --all-namespaces
  1. 要列出特定命名空间中的所有 Pod,你可以使用以下命令:

kubectl get pods --namespace my-namespace

提示

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

  1. 尝试 get 命令的其他一些示例,这些示例列出默认命名空间中指定类型的资源:

kubectl get pods
kubectl get services
kubectl get replicasets
kubectl get deployments
kubectl get nodes
  1. 创建对象。

  2. 创建一个新命名空间:

kubectl create namespace my-namespace
  1. 在你新建的命名空间中创建一个 Pod:

cat <<EOF | kubectl -n my-namespace apply -f -
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx:1.21.3
EOF
  1. create 命令还可以从 YAML 或 JSON 文件创建 Kubernetes 对象。例如,你可以在 YAML 文件中定义一个 Pod,并使用以下命令创建它:

kubectl create -f my-pod.yaml

-f 标志是 --filename 的简写。它指定包含对象定义的 YAML 或 JSON 文件的路径。 4. 第三种方法是从 URL 创建对象。例如,你可以使用以下命令:

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

注意

如果你使用相同的对象定义运行 create 命令两次,它会抛出错误。为避免此问题,请改用 apply 命令。

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

kubectl apply -f my-pod.yaml

apply 操作期间,Kubernetes API 服务器会将 YAML 或 JSON 文件中的对象定义与集群中该对象的当前状态进行比较。如果存在任何差异,则会更新该对象。 4. 描述对象。 要描述对象,你可以使用 describe 命令,它会显示有关 Kubernetes 对象的详细信息。

  1. 例如,要描述一个 Pod,你可以使用以下命令:

kubectl describe pod my-pod
  1. 你甚至可以将 describe 命令的输出导出到 YAML 或 JSON 文件。例如,要将 describe 命令的输出导出到 YAML 文件,你可以使用以下命令:

kubectl describe pod my-pod -o yaml > my-pod.yaml
  1. 为对象添加标签。 要为对象添加标签,你可以使用 label 命令。label 命令在 Kubernetes 对象上添加或更新标签。例如,要为 Pod 添加标签,你可以使用以下命令:

kubectl label pod my-pod my-label=my-value
  1. 删除对象。

  2. 要删除对象,你可以使用 delete 命令。例如,要删除一个 Pod,请运行:

kubectl delete pod my-pod
  1. 要删除你创建的命名空间,请运行:

kubectl delete namespace my-namespace
  1. 获取集群详细信息。

  2. 要检索集群信息,请使用 cluster-info 命令。它显示有关集群的信息。

kubectl cluster-info
  1. 要检索 Node 和 Pod 的资源使用信息,请使用 top 命令。

kubectl top nodes
kubectl top pods
  1. 要获取所有可用命令的完整列表,你可以使用 help 命令。

kubectl help

结果

你已成功安装 kubectl CLI 并将其配置为连接到你的 Kyma runtime 实例。你可以使用基本的 kubectl 命令与它交互。