NetBackup™ Web UI Kubernetes 管理指南

Last Published:
Product(s): NetBackup & Alta Data Protection (10.3)
Platform: Linux,UNIX,Windows
  1. 适用于 Kubernetes 的 NetBackup 概述
    1.  
      概述
    2.  
      Kubernetes 支持的 NetBackup 功能
  2. 部署和配置 NetBackup Kubernetes Operator
    1.  
      NetBackup Kubernetes Operator 部署的前提条件
    2.  
      在 NetBackup Kubernetes Operator 上部署服务软件包
    3.  
      Kubernetes Operator 部署的端口要求
    4.  
      升级 NetBackup Kubernetes Operator
    5.  
      删除 NetBackup Kubernetes Operator
    6.  
      配置 NetBackup Kubernetes 数据移动器
    7.  
      自动为 Kubernetes 配置 NetBackup 保护
    8. 配置 NetBackup 快照操作的设置
      1.  
        受 Kubernetes Operator 支持的配置参数
      2.  
        从快照备份和从备份还原操作的前提条件
      3.  
        Kubernetes 中支持的 DTE 客户端设置
      4.  
        自定义 datamover 属性
    9.  
      对具有短名称的 NetBackup 服务器进行故障排除
    10.  
      datamover pod 调度机制支持
  3. 在 NetBackup Kubernetes Operator 上部署证书
    1.  
      在 Kubernetes Operator 上部署证书
    2.  
      执行基于主机 ID 的证书操作
    3.  
      执行 ECA 证书操作
    4.  
      标识证书类型
  4. 管理 Kubernetes 资产
    1.  
      添加 Kubernetes 群集
    2. 配置设置
      1.  
        更改 Kuberentes 资源类型的资源限制
      2.  
        配置自动发现频率
      3.  
        配置权限
    3.  
      为资产添加保护
  5. 管理 Kubernetes 智能组
    1.  
      关于智能组
    2.  
      创建智能组
    3.  
      删除智能组
    4.  
      编辑智能组
  6. 保护 Kubernetes 资产
    1.  
      保护智能组
    2.  
      从智能组中删除保护
    3.  
      配置备份计划
    4.  
      配置备份选项
    5.  
      配置备份
    6.  
      配置自动映像复制 (AIR) 和复制
    7.  
      配置存储单元
    8.  
      卷模式支持
    9.  
      配置应用程序一致性备份
  7. 管理映像组
    1. 关于映像组
      1.  
        映像失效
      2.  
        映像副本
  8. 在 NetBackup 中保护 Rancher 管理的群集
    1.  
      使用自动配置在 NetBackup 中添加 Rancher 管理的 RKE 群集
    2.  
      在 NetBackup 中手动添加 Rancher 管理的 RKE 群集
  9. 恢复 Kubernetes 资产
    1.  
      浏览并验证恢复点
    2.  
      从快照还原
    3.  
      从备份副本还原
  10. 在 Kubernetes 中启用 FIPS 模式
    1.  
      在 Kubernetes 中启用联邦信息处理标准 (FIPS) 模式
  11. 对 Kubernetes 问题进行故障排除
    1.  
      主服务器升级期间出错:NBCheck 失败
    2.  
      旧映像还原期间出错:操作失败
    3.  
      永久卷恢复 API 期间出错
    4.  
      还原期间出错:最终作业状态显示部分失败
    5.  
      在同一命名空间上进行还原时出错
    6.  
      datamover pod 超过 Kubernetes 资源限制
    7.  
      还原期间出错:高负载群集上的作业失败
    8.  
      为特定群集创建的自定义 Kubernetes 角色无法查看作业
    9.  
      从 OperatorHub 还原安装的应用程序时,Openshift 会创建空白非选定的 PVC
    10.  
      如果超过 Kubernetes 节点上的 PID 限制,NetBackup Kubernetes Operator 将变得无响应
    11.  
      在 NetBackup Kubernetes 10.1 中编辑群集时失败
    12.  
      对于大型 PVC,从快照还原失败
    13.  
      将命名空间文件模式 PVC 还原到不同文件系统时部分失败
    14.  
      从备份副本还原失败并显示映像不一致错误
    15.  
      NetBackup 主服务器、介质服务器和 Kubernetes 服务器之间的连接检查。

配置应用程序一致性备份

正在运行应用程序(如数据库)的一些 pod 需要其他过程才能获取应用程序一致性备份。

应用程序一致性备份需要一种机制,来了解应用程序元数据、其内存状态以及驻留在永久性存储上的永久性数据。为了在还原期间获得正常运行状态,在所有这些 Kubernetes 资源之间进行应用程序一致性备份有助于简化恢复过程。如果仅需要崩溃一致性备份,则不需要执行这些过程。

供应商文档中记录了暂停应用程序输入和输出 (I/O) 操作的步骤,以执行应用程序一致性快照。不同应用程序有不同的步骤,因此这类过程的自定义性质非常重要。这类过程的内容由客户决定。

为使用 NetBackup 保护 Kubernetes 工作负载,方法是对备份挂钩应用应用程序 Pod 注释,以获得应用程序一致性快照。Kubernetes 注释只是元数据,可以应用于任何 Kubernetes 资源。Kubernetes 中的挂钩是用户定义的操作,可以是任何命令或多个命令。在 Kubernetes 基础架构中,将这些注释和挂钩应用于需要静默状态的任何应用程序 Pod。

在处理前(快照之前)和处理后(快照之后)使用备份挂钩。在数据保护上下文中,这通常意味着 netbackup-pre-backup 挂钩调用静默过程或命令,netbackup-post-backup 挂钩调用取消静默过程或命令。每组挂钩会指定命令以及应用该命令的容器。请注意,这些命令不在容器上的 shell 内执行。因此,在给定示例中使用带有目录的完整命令字符串。

标识需要应用程序一致性备份的应用程序,并对一组备份挂钩应用注释,作为 Kubernetes 数据保护配置的一部分。

使用 Kubernetes 用户界面 (UI) 向 Pod 添加注释。或者,对于特定 Pod 或标签,在 Kubernetes 群集控制台上使用 kubectl 注释函数。应用注释的方法可能因发行版而异,基于 kubectl 命令在大多数发行版中的广泛应用,以下示例重点介绍该命令。

此外,可以将注释添加到基本 Kubernetes 对象(如部署资源或副本集资源)中,以确保注释包含在任何新部署的 Pod 中。Kubernetes 管理员可以动态更新注释。

标签是附加到 Kubernetes 对象(如 Pod 或服务)的键值对。标签用作具有意义且与用户相关的对象的属性。标签可以在创建时附加到对象,随后可以随时添加和修改。Kubernetes 提供集成支持,支持使用这些标签查询对象和对选定子集执行批量操作。每个对象都可以定义一组键值标签。每个密钥对于给定对象必须是唯一的。

标签元数据格式和语法的示例:

"metadata": {"labels": {"key1":"value1","key2":"value2"}}

可以指定专门的 Pod 名称,也可以指定应用于所需 Pod 组的标签。如果使用了多个注释参数,则指定正确的 JSON 格式,例如 JSON 阵列:'["item1","item2","itemn"]'# kubectl annotate pod [ {pod_name} | -l {label=value}] -n {the-pods-namespace_name} [annotation syntax - see following]

如果某些应用程序需要多个命令来获得所需结果,则可以将此方法与 && 结合使用来联接多个命令。指定的命令不是由 Veritas 提供的,用户必须手动自定义应用程序 Pod。将 {values} 替换为环境中使用的实际名称。

注意:

所有 kubectl 命令都必须在一行中定义。复制或粘贴以下示例时要小心。

升级到 NetBackup 10.2 后,请更新这些新的 netbackup-pre-backup 和 netbackup-post-backup 挂钩的注释,其现在包括 netbackup 前缀:

netbackup-pre.hook.back.velero.io/command
netbackup-pre.hook.backup.velero.io/container
netbackup-post.hook.back.velero.io/command
netbackup-post.hook.backup.velero.io/container
使用 Pod 名称的 MongoDB 示例

以下是用于锁定和解锁 MongoDB 4.2.23 数据库的命令:

# mongo --eval "db. fsyncLock ()"

# mongo --eval "db.fsyncUnlock()"

这可转换为以下单个命令,用于为 MongoDB 设置备份前挂钩和备份后挂钩。请注意用于转义特殊字符的特殊语法,以及用作 JSON 格式一部分的方括号 ([])、单引号、双引号和逗号 (,):

# kubectl annotate pod {mongodb-pod-name} -n {mongodb namespace} netbackup-pre.hook.back.velero.io/command='["/bin/bash", "-c", "mongo --eval \"db.fsyncLock()\""]' netbackup-pre.hook.backup.velero.io/container={mongodb-pod-name} netbackup-post.hook.backup.velero.io/command='["/bin/bash","-c","mongo --eval \"db.fsyncUnlock()\""]' netbackup-post.hook.backup.velero.io/container={mongodb-pod-name}

使用标签的 MySQL 示例

以下是用于静默和取消静默 MySQL 数据库的命令:

# mysql -uroot -ppassword -e "flush tables with read lock"

# mysql -uroot -ppassword -e "unlock tables"

这可转换为以下单个命令,用于为 MySQL 设置备份前挂钩和备份后挂钩。在此示例中,我们使用标签而不是 Pod 名称,因此该标签可以一次为多个 Pod 添加注释。请注意用于转义特殊字符的特殊语法,以及用作 JSON 格式一部分的方括号 ([])、单引号、双引号和逗号 (,):

# kubectl annotate pod -l label=value -n {mysql namespace} netbackup-pre.hook.backup.velero.io/command='["/bin/bash", "-c", "mysql -uroot -ppassword -e \"flush tables with read lock\""]' netbackup-pre.hook.backup.velero.io/container={mysql container name} netbackup-post.hook.backup.velero.io/command='["/bin/bash", "-c", "mysql -uroot -ppassword -e \"unlock tables\""]' netbackup-post.hook.backup.velero.io/container={mysql container name}

使用标签的 Postgres 示例

以下是用于静默和取消静默 PostgreSQL 数据库的命令:

# Psql -U postgres -c "SELECT pg_start_backup('tagvalue');"

# psql -U postgres -c \"SELECT pg_stop_backup();"

这可转换为以下单个命令,用于为 Postgres 设置备份前挂钩和备份后挂钩。在此示例中,我们使用标签而不是 Pod 名称,因此该标签可以一次为多个匹配的 Pod 添加注释。标签可以应用于任何 Kubernetes 对象,在这种情况下,我们使用标签提供另一种方法来修改特定容器并仅选择某些 Pod。请注意用于转义特殊字符的特殊语法,以及用作 JSON 格式一部分的方括号 ([])、单引号、双引号和逗号 (,):

# kubectl annotate pod -l app=app-postgresql -n {postgres namespace} netbackup-pre.hook.backup.velero.io/command='["/bin/bash", "-c", "psql -U postgres -c \"SELECT pg_start_backup(quote_literal($EPOCHSECONDS));\""]' netbackup-pre.hook.backup.velero.io/container={postgres container name} netbackup-post.hook.backup.velero.io/command='["/bin/bash", "-c", "psql -U postgres -c \"SELECT pg_stop_backup();\""]' netbackup-post.hook.backup.velero.io/container={postgres container name}

不带容器挂钩的 NGINX 应用程序示例

以下是用于静默和取消静默 Nginx 应用程序的命令:

# /sbin/fsfreeze --freeze /var/log/nginx

# /sbin/fsfreeze --unfreeze /var/log/nginx

这可转换为以下单个命令,用于为 NGINX 设置备份前挂钩和备份后挂钩。在此示例中,我们将忽略容器挂钩,这将修改默认情况下与 Pod 名称匹配的第一个容器。请注意用于转义特殊字符的特殊语法,以及用作 JSON 格式一部分的方括号 ([])、单引号、双引号和逗号 (,):

# kubectl annotate pod {nginx-pod-name} -n {nginx namespace} netbackup-pre.hook.backup.velero.io/command='["/sbin/fsfreeze", "--freeze", "/var/log/nginx"]' netbackup-post.hook.backup.velero.io/command='["/sbin/fsfreeze", "--unfreeze", "/var/log/nginx"]'

Cassandra 示例

以下是用于静默和取消静默 Cassandra 数据库的命令:

# nodetool flush

# nodetool verify

这可转换为以下单个命令,用于为 Cassandra 设置备份前挂钩和备份后挂钩。请注意用于转义特殊字符的特殊语法,以及用作 JSON 格式一部分的方括号 ([])、单引号 (‘’)、双引号 (“”) 和逗号 (,):

# kubectl annotate pod {cassandra-pod} -n {Cassandra namespace} netbackup-pre.hook.backup.velero.io/command='["/bin/bash", "-c", "nodetool flush"]' netbackup-pre.hook.backup.velero.io/container={cassandra-pod} netbackup-post.hook.backup.velero.io/command='["/bin/bash", "-c", "nodetool verify"]' netbackup-post.hook.backup.velero.io/container={cassandra-pod}

注意:

提供的示例仅用作初始指南,每个工作负载的具体要求必须包括备份、工作负载和 Kubernetes 管理员之间的协作。

目前,Kubernetes 不支持在出错时使用挂钩。如果用户指定的命令失败,则备份快照不会继续。

用于返回退出状态的命令的默认超时值为 30 秒。但是,可以使用具有 Pod 注释的以下挂钩来更改此值:

netbackup-pre.hook.backup.velero.io/timeout=#in-seconds#

netbackup-post.hook.backup.velero.io/timeout=#in-seconds#