为 Kyma 设置和配置 Kubectl
学习目标
为 Kyma 设置和配置 kubectl
使用场景
你已成功创建一个 Kyma runtime 实例。现在,你想要与它交互,并学习如何使用 kubectl 命令行界面(CLI)来管理你的资源。但首先,你需要了解如何设置 kubectl CLI 以连接到你的 Kyma runtime,尤其是因为 Kyma runtime 需要 kubectl 的一个特殊插件来完成身份验证过程。
任务流程
在本练习中,你将执行以下步骤:
安装 kubectl CLI。
安装 kubelogin 插件。
配置 kubectl CLI 以连接到你的 Kyma runtime 实例。
使用 kubectl 与你的 Kyma runtime 实例交互。
任务 1:安装 Kubectl CLI
前提条件
你已在 SAP BTP 子账户中成功创建一个 Kyma runtime 实例。
步骤
安装 Kubectl CLI。
按照官方文档安装 kubectl CLI。
要验证 kubectl CLI 是否已正确安装,请在终端或命令行中运行以下命令:
kubectl version --client
如果安装成功,你会看到客户端和 Kustomize 版本作为输出。 2. 安装 Kubelogin 插件。 Kyma runtime 需要名为 kubelogin 的特殊插件,kubectl CLI 才能连接到你的 Kyma runtime 实例。
按照官方文档安装 kubelogin 插件。
要验证 kubelogin 插件是否已正确安装,请在终端或命令行中执行以下命令:
kubectl version --client
如果安装成功,你会看到客户端和 kubelogin 插件版本作为输出。
任务 2:连接到你的 Kyma Runtime 实例
如前所述,kubectl 依赖 kubeconfig 文件,该文件通常位于 ~/.kube 目录(macOS/Linux)或 %USERPROFILE%\.kube(Windows)中。
步骤
转到你的 SAP BTP 子账户概览页面。
选择 KubeconfigURL 的链接,以下载你的 Kyma runtime 实例的 kubeconfig.yaml 文件。

在终端中,将 kubeconfig 文件的位置导出为环境变量。 对于 MacOS/Linux:
export KUBECONFIG={KUBECONFIG_FILE_PATH}
对于 Windows:
$ENV:KUBECONFIG="{KUBECONFIG_FILE_PATH}"
注意
kubeconfig 文件包含用于访问你的 Kyma runtime 实例的凭据。因此,确保其安全非常重要。
要验证 kubeconfig 文件是否已正确配置,请在终端或命令行中运行以下命令:
kubectl cluster-info
如果成功,你会看到以下输出:

任务 3:访问你的 Kyma Runtime 中的资源
现在是时候使用一些 kubectl 命令与你的 Kyma runtime 实例交互了。请记住,Kubernetes 中定义的所有内容都可以使用 RESTful Kubernetes API 访问。
每个 kubectl 命令都必须指定命名空间和对象类型。如果未指定命名空间,kubectl 会假定为 default 命名空间。对象类型是资源类型的名称,例如 Pods 或 Deployments。对象的名称是资源的名称,例如 my-pod 或 my-deployment。
kubectl 语法如下:
kubectl [command] [TYPE] [NAME] [flags]
步骤
列出对象。 要列出对象,你可以使用
get命令。get命令列出一个或多个资源。要列出所有命名空间中的所有 Pod,请使用以下命令:
kubectl get all --all-namespaces
要列出特定命名空间中的所有 Pod,你可以使用以下命令:
kubectl get pods --namespace my-namespace
提示
--namespace标志是可选的。如果你不指定命名空间,则使用 default 命名空间。不过,你也可以在 kubeconfig 文件中指定命名空间,或为不同的命名空间创建不同的上下文,然后在这些上下文之间切换,或将你的自定义命名空间设置为默认。请在官方 Kubernetes 文档中阅读有关上下文的更多信息。
尝试
get命令的其他一些示例,这些示例列出默认命名空间中指定类型的资源:
kubectl get pods
kubectl get services
kubectl get replicasets
kubectl get deployments
kubectl get nodes
创建对象。
创建一个新命名空间:
kubectl create namespace my-namespace
在你新建的命名空间中创建一个 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
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命令。
更新对象。 要更新对象,你可以使用
apply命令。apply命令从 YAML 或 JSON 文件更新 Kubernetes 对象。例如,要更新一个 Pod,你可以使用以下命令:
kubectl apply -f my-pod.yaml
在 apply 操作期间,Kubernetes API 服务器会将 YAML 或 JSON 文件中的对象定义与集群中该对象的当前状态进行比较。如果存在任何差异,则会更新该对象。
4. 描述对象。
要描述对象,你可以使用 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
删除对象。
要删除对象,你可以使用
delete命令。例如,要删除一个 Pod,请运行:
kubectl delete pod my-pod
要删除你创建的命名空间,请运行:
kubectl delete namespace my-namespace
获取集群详细信息。
要检索集群信息,请使用
cluster-info命令。它显示有关集群的信息。
kubectl cluster-info
要检索 Node 和 Pod 的资源使用信息,请使用
top命令。
kubectl top nodes
kubectl top pods
要获取所有可用命令的完整列表,你可以使用
help命令。
kubectl help
结果
你已成功安装 kubectl CLI 并将其配置为连接到你的 Kyma runtime 实例。你可以使用基本的 kubectl 命令与它交互。