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。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求

要在剧本中使用它,请指定:kubernetes.core.k8s_scale

概要

  • 类似于 kubectl scale 命令。用于设置 Deployment、ReplicaSet 或 Replication Controller 的副本数量,或 Job 的并行属性。支持检查模式。

  • wait 参数不支持 Job。

注意

此模块具有相应的 action 插件

要求

执行此模块的主机需要以下要求。

  • python >= 3.9

  • kubernetes >= 24.2.0

  • PyYAML >= 3.11

参数

参数

注释

api_key

字符串

用于对 API 进行身份验证的令牌。也可以通过 K8S_AUTH_API_KEY 环境变量指定。

api_version

别名:api,version

字符串

用于指定 API 版本。

用于在不提供完整资源定义的情况下创建、删除或发现对象。

kindnamenamespace 结合使用以标识特定对象。

如果提供了 resource definition,则来自 resource_definitionapiVersion 值将覆盖此选项。

默认值: "v1"

ca_cert

别名:ssl_ca_cert

路径

用于对 API 进行身份验证的 CA 证书的路径。必须提供完整的证书链以避免证书验证错误。也可以通过 K8S_AUTH_SSL_CA_CERT 环境变量指定。

client_cert

别名:cert_file

路径

用于对 API 进行身份验证的证书的路径。也可以通过 K8S_AUTH_CERT_FILE 环境变量指定。

client_key

别名:key_file

路径

用于对 API 进行身份验证的密钥文件的路径。也可以通过 K8S_AUTH_KEY_FILE 环境变量指定。

context

字符串

配置文件中找到的上下文名称。也可以通过 K8S_AUTH_CONTEXT 环境变量指定。

continue_on_error

布尔值

在 kubernetes.core 2.0.0 中添加

定义多个资源时是否继续处理错误。

选项

  • false ← (默认)

  • true

current_replicas

整数

对于 Deployment、ReplicaSet、Replication Controller,仅在现有副本数量匹配时才进行缩放。对于 Job,只有在当前并行值匹配时才更新并行性。

host

字符串

提供用于访问 API 的 URL。也可以通过 K8S_AUTH_HOST 环境变量指定。

impersonate_groups

列表 / 元素=字符串

在 kubernetes.core 2.3.0 中添加

要为操作模拟的用户组。

也可以通过 K8S_AUTH_IMPERSONATE_GROUPS 环境变量指定。例如:Group1,Group2

impersonate_user

字符串

在 kubernetes.core 2.3.0 中添加

要为操作模拟的用户名。

也可以通过 K8S_AUTH_IMPERSONATE_USER 环境变量指定。

kind

字符串

用于指定对象模型。

用于在不提供完整资源定义的情况下创建、删除或发现对象。

api_versionnamenamespace 结合使用以标识特定对象。

如果提供了 resource definition,则来自 resource_definitionkind 值将覆盖此选项。

kubeconfig

任意

现有 Kubernetes 配置文件的路径。如果未提供,并且未提供其他连接选项,则 Kubernetes 客户端将尝试从 ~/.kube/config 加载默认配置文件。也可以通过 K8S_AUTH_KUBECONFIG 环境变量指定。

可以使用分隔符“;” (Windows 平台) 或“:” (其他平台) 提供多个 Kubernetes 配置文件。

Kubernetes 配置可以作为字典提供。此功能需要 python kubernetes 客户端版本 >= 17.17.0。在 2.2.0 版本中添加。

label_selectors

列表 / 元素=字符串

在 kubernetes.core 2.0.0 中添加

用于过滤结果的标签选择器列表。

默认值: []

name

字符串

用于指定对象名称。

用于在不提供完整资源定义的情况下创建、删除或发现对象。

api_versionkindnamespace 结合使用以标识特定对象。

如果提供了 resource definition,则来自 resource_definitionmetadata.name 值将覆盖此选项。

namespace

字符串

用于指定对象命名空间。

在不提供完整资源定义的情况下创建、删除或发现对象时很有用。

api_versionkindname 结合使用以标识特定对象。

如果提供了 resource definition,则来自 resource_definitionmetadata.namespace 值将覆盖此选项。

no_proxy

字符串

在 kubernetes.core 2.3.0 中添加

不应该通过代理的主机/域名/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 环境变量指定。

请阅读username选项的描述,了解此选项适用的情况。

persist_config

布尔值

是否保存 kube config 更新令牌。也可以通过 K8S_AUTH_PERSIST_CONFIG 环境变量指定。

当 k8s 上下文使用具有更新令牌的用户凭据(如 oidc 或 gke/gcloud auth)时,令牌由 k8s python 客户端库刷新,但默认情况下不会保存。因此,旧的刷新令牌可能会过期,下一次身份验证可能会失败。将此标志设置为 true 将告诉 k8s python 客户端将新的刷新令牌保存到 kube config 文件。

默认为 false。

请注意,当前版本的 k8s python 客户端库尚不支持将此标志设置为 True。

此 k8s python 库的修复程序位于:https://github.com/kubernetes-client/python-base/pull/169

选项

  • false

  • true

proxy

字符串

用于连接的 HTTP 代理的 URL。也可以通过 K8S_AUTH_PROXY 环境变量指定。

请注意,此模块不会从环境中获取典型的代理设置(例如 HTTP_PROXY)。

proxy_headers

字典

在 kubernetes.core 2.0.0 中添加

basic_auth

字符串

用于基本身份验证标头的冒号分隔的用户名:密码。

也可以通过 K8S_AUTH_PROXY_HEADERS_BASIC_AUTH 环境变量指定。

proxy_basic_auth

字符串

用于代理基本身份验证标头的冒号分隔的用户名:密码。

也可以通过 K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH 环境变量指定。

user_agent

字符串

表示所需用户代理的字符串,例如 foo/1.0。

也可以通过 K8S_AUTH_PROXY_HEADERS_USER_AGENT 环境变量指定。

replicas

整数 / 必填

所需的副本数量。

resource_definition

别名:definition,inline

字符串

在创建或更新时,提供对象的有效 YAML 定义(作为字符串、列表或字典)。

注意:kindapi_versionnamenamespace 将被提供的 resource_definition 中找到的相应值覆盖。

resource_version

字符串

仅当当前对象版本匹配时才尝试缩放。

src

路径

提供包含要创建或更新的对象或对象的有效 YAML 定义的文件的路径。与 resource_definition 互斥。注意:kindapi_versionnamenamespace 将被从 src 文件读取的配置中找到的相应值覆盖。

从本地文件系统读取。要从 Ansible 控制器的文件系统读取,包括保管库文件,请使用文件查找插件或模板查找插件,结合 from_yaml 过滤器,并将结果传递给 resource_definition。请参见下面的示例。

可用于创建资源的清单文件的 URL。在 2.4.0 版本中添加。

kubernetes.core.k8s 模块的情况下,与 template 互斥。

username

字符串

提供用于对 API 进行身份验证的用户名。也可以通过 K8S_AUTH_USERNAME 环境变量指定。

请注意,这仅适用于配置为使用 HTTP 基本身份验证的集群。如果您的集群具有不同的身份验证方式(例如 OpenShift 中的 OAuth2),则此选项将无法按预期工作,您应该查看 community.okd.k8s_auth 模块,因为它可能满足您的需求。

validate_certs

别名:verify_ssl

布尔值

是否验证 API 服务器的 SSL 证书。也可以通过 K8S_AUTH_VERIFY_SSL 环境变量指定。

选项

  • false

  • true

wait

布尔值

对于 Deployment、ReplicaSet、Replication Controller,等待ready_replicas 的状态值更改为 replicas 的数量。对于 Job,此选项将被忽略。

选项

  • false

  • true ← (默认)

wait_sleep

整数

在 kubernetes.core 2.0.0 中添加

检查之间睡眠的秒数。

默认值: 5

wait_timeout

整数

waitTrue 时,等待 ready_replicas 状态等于 replicas 的秒数。如果在分配的时间内未达到状态,则会发生错误。对于 Job,此选项将被忽略。

默认值: 20

备注

注意

  • validate_certsTrue 时,为避免 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

返回值

公共返回值已记录在 此处,以下是此模块特有的字段

描述

result

复杂

如果进行了更改,将返回修补的对象,否则返回现有对象。

返回:成功

api_version

字符串

此对象表示的版本化模式。

返回:成功

duration

整数

任务的经过时间(秒)

返回:wait 为 true 时

示例: 48

kind

字符串

表示此对象表示的 REST 资源。

返回:成功

metadata

复杂

标准对象元数据。包括名称、命名空间、注释、标签等。

返回:成功

spec

复杂

对象的特定属性。将根据 api_versionkind 而有所不同。

返回:成功

status

复杂

对象的当前状态详细信息。

返回:成功

作者

  • Chris Houseknecht (@chouseknecht)

  • Fabian von Feilitzsch (@fabianvf)