Kubernetes 仪表盘(Beta)

  • 引入于 16.1 版本,功能标志environment_settings_to_graphqlkas_user_accesskas_user_access_projectexpose_authorized_cluster_agents。此功能处于 Beta 阶段。
  • 功能标志 environment_settings_to_graphql 移除于极狐GitLab 16.2。
  • 功能标志 kas_user_accesskas_user_access_projectexpose_authorized_cluster_agents 移除于极狐GitLab 16.2。
  • 在 16.10 中移至环境详情页面。

使用 Kubernetes 仪表盘通过直观的可视化界面了解集群的状态。该仪表盘适用于每个连接的 Kubernetes 集群,无论您是使用 CI/CD 还是 GitOps 部署它们。

Kubernetes summary UI

配置仪表盘

Version history
  • Filtering resources by namespace introduced in GitLab 16.2 with a flag named kubernetes_namespace_for_environment. Disabled by default.
  • 通过命名空间进行过滤引入于极狐GitLab 16.2,使用名为 kubernetes_namespace_for_environment 的功能标志。默认禁用。
  • 通过命名空间进行过滤默认启用于极狐GitLab 16.3。功能标志 kubernetes_namespace_for_environment 被移除。
  • 选择相关的 Flux 资源引入于极狐GitLab 16.3,使用名为 flux_resource_for_environment 功能标志。
  • 选择相关的 Flux 资源在极狐GitLab 16.4 中正式可用。功能标志 flux_resource_for_environment 被移除。

配置仪表盘,将其用于特定环境。您可以为已存在的环境配置仪表盘,也可以在创建环境时添加仪表盘。

先决条件:

  • Kubernetes 代理必须使用 user_access 关键字与环境的项目或其父组共享。

::Tabs

:::TabTitle 环境已经存在

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 运维 > 环境
  3. 选择要关联 Kubernetes 的环境。
  4. 选择 编辑
  5. 选择适用于 Kubernetes 的极狐GitLab 代理。
  6. 可选。从 Kubernetes 命名空间下拉列表中,选择命名空间。
  7. 可选。从 Flux 资源下拉列表中,选择 Flux 资源。
  8. 选择 保存

:::TabTitle 环境不存在

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 运维 > 环境
  3. 选择 新建环境
  4. 填写 名称 字段。
  5. 选择适用于 Kubernetes 的极狐GitLab 代理。
  6. 可选。从 Kubernetes 命名空间下拉列表中,选择命名空间。
  7. 可选。从 Flux 资源下拉列表中,选择 Flux 资源。
  8. 选择 保存

::EndTabs

为动态环境配置仪表盘

  • 引入于极狐GitLab 17.6。

要为动态环境配置仪表盘:

  • 在你的 .gitlab-ci.yml 文件中指定代理。你必须制定代理配置项目的完整路径,后面跟上冒号以及代理的名称。

比如:

deploy_review_app:
  stage: deploy
  script: make deploy
  environment:
    name: review/$CI_COMMIT_REF_SLUG
    kubernetes:
      agent: path/to/agent/project:agent-name

更多详情,可以查看 CI/CD YAML 语法引用

查看仪表盘

  • Kubernetes watch API 集成引入于极狐GitLab 16.6,使用名为 k8s_watch_api 的功能标志。默认禁用。
  • Kubernetes watch API 集成默认启用于极狐GitLab 16.7。
  • 功能在极狐GitLab 17.1 正式可用。功能标志 k8s_watch_api 被移除。

查看仪表盘以查看连接集群的状态。如果启用了功能标志 k8s_watch_api,您的 Kubernetes 资源和 Flux 同步状态将实时更新。

要查看配置的仪表盘:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 运维 > 环境
  3. 扩展与适用于 Kubernetes 的极狐GitLab 代理关联的环境。
  4. 展开 Kubernetes 概述

pod 列表会展示出来。选择一个 pod 来查看其详细信息。

Flux 同步状态

  • 引入于极狐GitLab 16.3。
  • 自定义 Flux 资源的名称引入于极狐GitLab 16.3,功能标志flux_resource_for_environment
  • 自定义 Flux 资源的名称普遍可用于极狐GitLab 16.4。移除功能标志 flux_resource_for_environment

你可以从仪表盘查看 Flux 部署的同步状态。要显示部署状态,您的仪表盘必须能够检索 KustomizationHelmRelease 资源,这需要为环境配置命名空间。

极狐GitLab 在环境设置中指定的 Flux 资源 下拉列表中搜索 KustomizationHelmRelease 资源。

仪表盘展示 Flux 部署的同步状态。

状态 描述
已调谐 部署成功与其环境相协调
调谐中 正在进行协调
停滞 由于存在错误,如果没有人为干预就无法解决,协调会陷入困境
失败 由于出现不可恢复的错误,部署无法协调
未知 无法检索部署的同步状态
不可用 无法检索 KustomizationHelmRelease 资源

触发 Flux 调谐

  • 引入于极狐GitLab 17.3。

你可以手动调谐你的部署与其 Flux 资源。

要触发调谐:

  1. 在仪表盘上,选择 Flux 部署的同步状态徽章。
  2. 选择 操作 ({ellipsis_v}) **> 触发调谐 ({retry}**)。

暂停或恢复 Flux 调谐操作

  • 引入于极狐GitLab 17.5。

你可以从 UI 上手动暂停或恢复你的 Flux 调谐。

要暂停或恢复调谐:

  1. 在仪表盘上,选择 Flux 部署的同步状态徽章。
  2. 选择 操作 ( ),然后选择以下之一:
    • 暂停调谐 ( ) 以暂停 Flux 调谐。
    • 恢复调谐 ( ) 以重新启动 Flux 调谐。

查看 pod 日志

  • 引入于极狐GitLab 17.2。

当你想从配置好的仪表盘来快速了解和排查跨环境的问题时,可以查看 pod 日志。你可以查看 pod 中每个容器的日志。

  • 选择 查看日志,然后选择你想要查看日志的容器。

你还可以从 pod 详情中查看 pod 日志。

删除日志

  • 引入极狐GitLab 17.3。

要重启一个失败的 pod,直接从 Kubernetes 仪表盘上删除它。

要删除一个 pod:

  1. Kubernetes 概览 选项卡中,找到你想要删除的 pod。
  2. 选择 操作 ( ) > 删除 pod ( )。

你还可以从 pod 详情中删除 pod。

详情仪表盘

  • 引入于极狐GitLab 16.4,使用名为 k8s_dashboard 的功能标志。默认禁用。
此功能的可用性受控于功能标志。更多详情,可以查看历史。此功能仅为测试用,还未生产就绪。

详情仪表盘提供了以下 Kubernetes 资源的相关信息:

  • Pods
  • Services
  • Deployments
  • ReplicaSets
  • StatefulSets
  • DaemonSets
  • Jobs
  • CronJobs

每一个仪表盘都会显示资源的状态、命名空间和时间。你可以选择一个资源,打开侧边抽屉查看更多信息,包括标签、YAML 格式的状态信息、注解和规格说明。

Kubernetes dashboard UI

查看详情仪表盘

先决条件:

  • 配置好的 Kubernetes 代理可以在环境的项目或它们的父群组中共享,这需要使用关键字 user_access

详情仪表盘没有链接到侧边栏导航。要查看详情仪表盘:

  1. 找到你的 Kubernetes 代理 ID:
    1. 在左侧导航栏,选择 搜索或前往 并找到你的项目。
    2. 选择 运维 > Kubernetes 集群
    3. 复制你想要访问的代理的数字 ID。
  2. 前往下面的其中一个 URL,将 <agent_id> 替换为你的代理 ID:

    资源类型 URL
    Pods https://myinstance.gitlab.com/-/kubernetes/<agent_id>/pods
    Services https://myinstance.gitlab.com/-/kubernetes/<agent_id>/services
    Deployments https://myinstance.gitlab.com/-/kubernetes/<agent_id>/deployments
    ReplicaSets https://myinstance.gitlab.com/-/kubernetes/<agent_id>/replicaSets
    StatefulSets https://myinstance.gitlab.com/-/kubernetes/<agent_id>/statefulSets
    DaemonSets https://myinstance.gitlab.com/-/kubernetes/<agent_id>/daemonSets
    Jobs https://myinstance.gitlab.com/-/kubernetes/<agent_id>/jobs
    CronJobs https://myinstance.gitlab.com/-/kubernetes/<agent_id>/cronJobs

故障排除

使用 Kubernetes 仪表盘时,您可能会遇到以下问题。

用户无法列出 API 组中的资源

您可能会收到一条错误,Error: services is forbidden: User "gitlab:user:<user-name>" cannot list resource "<resource-name>" in API group "" at the cluster scope

当不允许用户在 Kubernetes RBAC 中执行指定操作时,会发生此错误。

要解决此问题,请检查您的 RBAC 配置。如果 RBAC 配置正确,请联系 Kubernetes 管理员。

极狐GitLab 代理下拉菜单为空

当你配置新环境时,极狐GitLab 代理下拉菜单可能为空,即使你已经配置了 Kubernetes 集群。

要填充 GitLab 代理 下拉菜单,使用 user_access 关键字授予代理 Kubernetes 访问权限。