Concepts

Detailed explanations of Kubernetes system concepts and abstractions.

Edit This Page

使用配置文件对 Kubernetes 对象的命令式管理

通过使用 kubectl 命令行工具以及用 YAML 或 JSON 编写的对象配置文件,可以创建、更新和删除 Kubernetes 对象。本文档介绍了如何使用配置文件定义和管理对象。

权衡

kubectl 工具支持三种对象管理:

有关每种对象管理的优缺点的讨论,请参阅 Kubernetes 对象管理

如何创建对象

您可以使用 kubectl create -f 从一个配置文件创建对象。有关详细信息,请参阅 kubernetes API 参考

如何更新对象

警告: 使用 replace 命令更新对象将删除配置文件中未指定的规范的所有部分。这不应该用于集群部分管理其规范的对象,例如 LoadBalancer 类型的服务,在该服务中,externalIPs 字段是独立于配置文件管理的。必须将独立管理的字段复制到配置文件中,以防止 replace 删除它们。

您可以通过一个配置文件使用 kubectl replace -f 更新活动对象。

如何删除对象

您可以使用 kubectl delete -f 删除配置文件中描述的对象。

如何查看对象

您可以使用 kubectl get -f 查看有关配置文件中描述的对象的信息。

-o yaml 标志表明需要打印完整的对象配置。使用 kubectl get -h 查看选项列表。

限制

当每个对象的配置被完全定义并记录在其配置文件中时,createreplacedelete 命令就可以很好地工作。然而,当更新了一个活动对象,而更新没有合并到它的配置文件中时,更新将在下一次 replace 执行时丢失。如果控制器(如 HorizontalPodAutoscaler)直接更新活动对象,则可能发生这种情况。下面举个例子:

  1. 您从配置文件创建一个对象。
  2. 另一个来源通过更改某个字段来更新对象。
  3. 您从配置文件中替换该对象。步骤 2 中其他来源所做的更改将丢失。

如果您需要支持同一个对象的多个写入器,则可以使用 kubectl apply 来管理该对象。

从 URL 创建和编辑对象而不保存配置

假设您有一个对象配置文件的 URL。您可以使用 kubectl create --edit 在创建对象之前对配置进行更改。这对于指向可由读取器修改的配置文件的教程和任务尤其有用。

kubectl create -f <url> --edit

从命令式命令迁移到命令式对象配置

从命令式命令迁移到命令式对象配置需要几个手动步骤。

  1. 将活动对象导出到本地对象配置文件:

    kubectl get <kind>/<name> -o yaml --export > <kind>_<name>.yaml
    
  2. 手动从对象配置文件中删除状态字段。

  3. 对于后续的对象管理,只使用 replace

    kubectl replace -f <kind>_<name>.yaml
    

定义控制器选择器和 PodTemplate 标签

警告:强烈建议不要更新控制器上的选择器。

推荐的方法是定义一个单一的、不可变的 PodTemplate 标签,该标签仅由控制器选择器使用,没有其他语义含义。

示例标签:

selector:
  matchLabels:
      controller-selector: "extensions/v1beta1/deployment/nginx"
template:
  metadata:
    labels:
      controller-selector: "extensions/v1beta1/deployment/nginx"

What’s next

Analytics

Create an Issue Edit this Page