kubernetes.core.k8s_log 模块 – 从 Kubernetes 资源获取日志

注意

此模块是 kubernetes.core 集合(版本 5.0.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install kubernetes.core。您需要其他要求才能使用此模块,请参阅 要求 了解详细信息。

要在 playbook 中使用它,请指定:kubernetes.core.k8s_log

kubernetes.core 0.10.0 中的新增功能

概要

  • 使用 Kubernetes Python 客户端对 K8s 日志端点执行读取操作。

  • 使用配置文件、证书、密码或令牌进行身份验证。

  • 支持检查模式。

  • 类似于 `kubectl logs` 或 `oc logs`

注意

此模块具有相应的 action 插件

要求

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

  • python >= 3.9

  • kubernetes >= 24.2.0

  • PyYAML >= 3.11

参数

参数

注释

all_containers

布尔值

在 kubernetes.core 2.4.0 中添加

如果设置为 true,则检索 pod 中所有容器的日志。

container 互斥。

选项

  • false

  • true

api_key

字符串

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

api_version

别名:api, version

字符串

用于指定 API 版本。

用于创建、删除或发现对象,而无需提供完整的资源定义。

kindnamenamespace 一起使用以标识特定对象。

如果提供了 资源定义,则 resource_definition 中的 apiVersion 值将覆盖此选项。

默认值: "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 环境变量指定。

container

字符串

用于指定从中获取日志的 pod 中的容器。

如果只有一个容器,则此选项将默认为该容器。

如果有多个容器,则此选项是必需的或将 all_containers 设置为 true

all_containers 互斥。

context

字符串

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

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 一起使用以标识特定对象。

如果使用 label_selectors,则无法覆盖。

默认值: "Pod"

kubeconfig

任意

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

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

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

label_selectors

列表 / 元素=字符串

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

只能提供 namelabel_selectors 中的一个。

默认值: []

name

字符串

用于指定对象名称。

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

只能提供 namelabel_selectors 中的一个。

namespace

字符串

用于指定对象的命名空间。

在创建、删除或发现对象而无需提供完整的资源定义时非常有用。

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

如果提供了资源定义,则resource_definition中的metadata.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”

password

字符串

提供用于 API 身份验证的密码。也可以通过 K8S_AUTH_PASSWORD 环境变量指定。

请阅读 username 选项的说明,了解何时适用此选项。

persist_config

布尔值

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

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

默认为 false。

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

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

选项

  • false

  • true

previous

布尔值

在 kubernetes.core 2.4.0 中添加

如果 true,则打印 Pod 中容器的先前实例(如果存在)的日志。

选项

  • 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

字符串

表示你想要的 user-agent 的字符串,例如 foo/1.0。

也可以通过 K8S_AUTH_PROXY_HEADERS_USER_AGENT 环境指定。

since_seconds

字符串

在 kubernetes.core 2.2.0 中添加

相对于当前时间,以秒为单位的时间,用于显示日志。

tail_lines

整数

在 kubernetes.core 2.4.0 中添加

从日志末尾检索的行数。

username

字符串

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

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

validate_certs

别名:verify_ssl

布尔值

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

选项

  • false

  • true

备注

注意

  • 为了避免当 validate_certsTrue 时的 SSL 证书验证错误,必须通过 ca_cert 或在 kubeconfig 文件中提供 API 服务器的完整证书链。

示例

- name: Get a log from a Pod
  kubernetes.core.k8s_log:
    name: example-1
    namespace: testing
  register: log

# This will get the log from the first Pod found matching the selector
- name: Log a Pod matching a label selector
  kubernetes.core.k8s_log:
    namespace: testing
    label_selectors:
    - app=example
  register: log

# This will get the log from a single Pod managed by this Deployment
- name: Get a log from a Deployment
  kubernetes.core.k8s_log:
    api_version: apps/v1
    kind: Deployment
    namespace: testing
    name: example
    since_seconds: "4000"
  register: log

# This will get the log from a single Pod managed by this DeploymentConfig
- name: Get a log from a DeploymentConfig
  kubernetes.core.k8s_log:
    api_version: apps.openshift.io/v1
    kind: DeploymentConfig
    namespace: testing
    name: example
    tail_lines: 100
  register: log

# This will get the logs from all containers in Pod
- name: Get the logs from all containers in pod
  kubernetes.core.k8s_log:
    namespace: testing
    name: some-pod
    all_containers: true

返回值

常见返回值记录在此处 此处,以下是此模块特有的字段

描述

log

字符串

对象的文本日志

返回值: 成功

log_lines

列表 / 元素=字符串

对象的日志,按换行符分割

返回值: 成功

作者

  • Fabian von Feilitzsch (@fabianvf)