kubernetes.core.k8s_scale 模块 – 为 Deployment、ReplicaSet、Replication Controller 或 Job 设置新的大小。
注意
此模块是 kubernetes.core 集合(版本 5.0.0)的一部分。
如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install kubernetes.core。您需要进一步的要求才能使用此模块,请参阅要求了解详细信息。
要在 playbook 中使用它,请指定:kubernetes.core.k8s_scale。
概要
- 类似于 kubectl scale 命令。用于设置 Deployment、ReplicaSet 或 Replication Controller 的副本数量,或 Job 的并行属性。支持检查模式。 
- 对于 Job,不支持 - wait参数。
注意
此模块具有相应的 action 插件。
要求
执行此模块的主机需要满足以下要求。
- python >= 3.9 
- kubernetes >= 24.2.0 
- PyYAML >= 3.11 
参数
| 参数 | 注释 | 
|---|---|
| 用于向 API 进行身份验证的令牌。也可以通过 K8S_AUTH_API_KEY 环境变量指定。 | |
| 用于指定 API 版本。 用于在不提供完整资源定义的情况下创建、删除或发现对象。 与kind、name和namespace结合使用以标识特定对象。 如果提供了资源定义,则resource_definition中的apiVersion值将覆盖此选项。 默认值:  | |
| 用于向 API 进行身份验证的 CA 证书的路径。必须提供完整的证书链以避免证书验证错误。也可以通过 K8S_AUTH_SSL_CA_CERT 环境变量指定。 | |
| 用于向 API 进行身份验证的证书的路径。也可以通过 K8S_AUTH_CERT_FILE 环境变量指定。 | |
| 用于向 API 进行身份验证的密钥文件的路径。也可以通过 K8S_AUTH_KEY_FILE 环境变量指定。 | |
| 在配置文件中找到的上下文的名称。也可以通过 K8S_AUTH_CONTEXT 环境变量指定。 | |
| 当定义多个资源时,是否在错误时继续。 选项 
 | |
| 对于 Deployment、ReplicaSet、Replication Controller,仅当现有副本数匹配时才缩放。对于 Job,仅当当前并行值匹配时才更新并行度。 | |
| 提供用于访问 API 的 URL。也可以通过 K8S_AUTH_HOST 环境变量指定。 | |
| 用于操作的模拟组。 也可以通过 K8S_AUTH_IMPERSONATE_GROUPS 环境变量指定。示例:Group1,Group2 | |
| 用于操作的模拟用户名。 也可以通过 K8S_AUTH_IMPERSONATE_USER 环境变量指定。 | |
| 用于指定对象模型。 用于在不提供完整资源定义的情况下创建、删除或发现对象。 与 api_version、name 和 namespace 结合使用以标识特定对象。 如果提供了 resource definition,则 resource_definition 中的 kind 值将覆盖此选项。 | |
| 现有 Kubernetes 配置文件的路径。如果未提供且未提供其他连接选项,则 Kubernetes 客户端将尝试从 ~/.kube/config 加载默认配置文件。也可以通过 K8S_AUTH_KUBECONFIG 环境变量指定。 可以使用分隔符“;”用于 Windows 平台,或使用“:”用于其他平台,提供多个 Kubernetes 配置文件。 Kubernetes 配置可以作为字典提供。此功能需要 python kubernetes 客户端版本 >= 17.17.0。在版本 2.2.0 中添加。 | |
| 用于筛选结果的标签选择器列表。 默认值:  | |
| 用于指定对象名称。 用于在不提供完整资源定义的情况下创建、删除或发现对象。 与 api_version、kind 和 namespace 结合使用以标识特定对象。 如果提供了资源定义,则resource_definition中的metadata.name值将覆盖此选项。 | |
| 用于指定对象的命名空间。 在创建、删除或发现对象而无需提供完整的资源定义时很有用。 与 api_version、kind 和 name 结合使用以识别特定对象。 如果提供了资源定义,则resource_definition中的metadata.namespace值将覆盖此选项。 | |
| 不应通过代理的主机/域/IP/CIDR 的逗号分隔列表。也可以通过 K8S_AUTH_NO_PROXY 环境变量指定。 请注意,此模块不会从环境中拾取典型的代理设置(例如 NO_PROXY)。 此功能需要 kubernetes>=19.15.0。当 Kubernetes 库低于 19.15.0 时,即使 no_proxy 设置正确也会失败。 示例值为“localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16” | |
| 提供用于 API 身份验证的密码。也可以通过 K8S_AUTH_PASSWORD 环境变量指定。 请阅读  | |
| 是否保存 kube config 刷新令牌。也可以通过 K8S_AUTH_PERSIST_CONFIG 环境变量指定。 当 k8s 上下文使用带有刷新令牌的用户凭据(如 oidc 或 gke/gcloud 身份验证)时,令牌由 k8s python 客户端库刷新,但默认情况下不保存。因此,旧的刷新令牌可能会过期,并且下一次身份验证可能会失败。将此标志设置为 true 将告诉 k8s python 客户端将新的刷新令牌保存到 kube config 文件。 默认为 false。 请注意,当前版本的 k8s python 客户端库尚不支持将此标志设置为 True。 此 k8s python 库的修复程序在此处:https://github.com/kubernetes-client/python-base/pull/169 选项 
 | |
| 用于连接的 HTTP 代理的 URL。也可以通过 K8S_AUTH_PROXY 环境变量指定。 请注意,此模块不会从环境中拾取典型的代理设置(例如 HTTP_PROXY)。 | |
| 用于基本身份验证标头的冒号分隔的用户名:密码。 也可以通过 K8S_AUTH_PROXY_HEADERS_BASIC_AUTH 环境指定。 | |
| 用于代理基本身份验证标头的冒号分隔的用户名:密码。 也可以通过 K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH 环境指定。 | |
| 表示您想要的 user-agent 的字符串,例如 foo/1.0。 也可以通过 K8S_AUTH_PROXY_HEADERS_USER_AGENT 环境指定。 | |
| 所需的副本数。 | |
| 在创建或更新对象时,提供对象的有效 YAML 定义(作为字符串、列表或字典)。 注意:kind、api_version、name 和 namespace 将被提供的 resource_definition 中找到的相应值覆盖。 | |
| 仅当当前对象版本匹配时才尝试缩放。 | |
| 提供一个包含要创建或更新的对象或对象的有效 YAML 定义的文件的路径。与 resource_definition 互斥。注意:kind、api_version、name 和 namespace 将被从 src 文件读取的配置中找到的相应值覆盖。 从本地文件系统读取。要从 Ansible 控制器的文件系统(包括已加密的文件)读取,请使用文件查找插件或模板查找插件,并结合 from_yaml 过滤器,然后将结果传递给 resource_definition。请参阅下面的示例。 可用于创建资源的清单文件的 URL。在 2.4.0 版本中添加。 在 kubernetes.core.k8s 模块的情况下,与 template 互斥。 | |
| 提供用于 API 身份验证的用户名。也可以通过 K8S_AUTH_USERNAME 环境变量指定。 请注意,这仅适用于配置为使用 HTTP 基本身份验证的集群。如果您的集群具有不同的身份验证形式(例如 OpenShift 中的 OAuth2),则此选项将无法按预期工作,您应该研究 community.okd.k8s_auth 模块,因为该模块可能满足您的需求。 | |
| 是否验证 API 服务器的 SSL 证书。也可以通过 K8S_AUTH_VERIFY_SSL 环境变量指定。 选项 
 | |
| 对于 Deployment、ReplicaSet、Replication Controller,等待 ready_replicas 的状态值更改为 replicas 的数量。对于 Job,此选项将被忽略。 选项 
 | |
| 检查之间睡眠的秒数。 默认值: | |
| 当  默认值: | 
注释
注意
- 为避免当 - validate_certs为 True 时出现 SSL 证书验证错误,必须通过- ca_cert或 kubeconfig 文件提供 API 服务器的完整证书链。
示例
- name: Scale deployment up, and extend timeout
  kubernetes.core.k8s_scale:
    api_version: v1
    kind: Deployment
    name: elastic
    namespace: myproject
    replicas: 3
    wait_timeout: 60
- name: Scale deployment down when current replicas match
  kubernetes.core.k8s_scale:
    api_version: v1
    kind: Deployment
    name: elastic
    namespace: myproject
    current_replicas: 3
    replicas: 2
- name: Increase job parallelism
  kubernetes.core.k8s_scale:
    api_version: batch/v1
    kind: job
    name: pi-with-timeout
    namespace: testing
    replicas: 2
# Match object using local file or inline definition
- name: Scale deployment based on a file from the local filesystem
  kubernetes.core.k8s_scale:
    src: /myproject/elastic_deployment.yml
    replicas: 3
    wait: no
- name: Scale deployment based on a template output
  kubernetes.core.k8s_scale:
    resource_definition: "{{ lookup('template', '/myproject/elastic_deployment.yml') | from_yaml }}"
    replicas: 3
    wait: no
- name: Scale deployment based on a file from the Ansible controller filesystem
  kubernetes.core.k8s_scale:
    resource_definition: "{{ lookup('file', '/myproject/elastic_deployment.yml') | from_yaml }}"
    replicas: 3
    wait: no
- name: Scale deployment using label selectors (continue operation in case error occured on one resource)
  kubernetes.core.k8s_scale:
    replicas: 3
    kind: Deployment
    namespace: test
    label_selectors:
      - app=test
    continue_on_error: true
返回值
常见返回值记录在此处 此处,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 如果进行了更改,将返回已修补的对象,否则返回现有对象。 返回:成功 | |
| 此对象表示的已版本化架构。 返回:成功 | |
| 任务的已用时间(以秒为单位) 返回:当  示例: | |
| 表示此对象表示的 REST 资源。 返回:成功 | |
| 标准对象元数据。包括名称、命名空间、注释、标签等。 返回:成功 | |
| 对象的特定属性。将根据 api_version 和 kind 而有所不同。 返回:成功 | |
| 对象的当前状态详细信息。 返回:成功 | 
