3.10. 引导新存储集群


cephadm 实用程序在 bootstrap 过程中执行以下任务:

  • 为本地节点上的新 Red Hat Ceph Storage 集群安装并启动 Ceph 监控守护进程和 Ceph 管理器守护进程,作为容器。
  • 创建 /etc/ceph 目录。
  • 将公钥的副本写入 Red Hat Ceph Storage 集群的 /etc/ceph/ceph.pub,并将 SSH 密钥添加到 root 用户的 /root/.ssh/authorized_keys 文件中。
  • _admin 标签应用到 bootstrap 节点。
  • 编写与新集群通信所需的最小配置文件到 /etc/ceph/ceph.conf
  • client.admin 管理 secret 密钥的副本写入 /etc/ceph/ceph.client.admin.keyring
  • 使用 prometheus、grafana 和其他工具(如 node-exporteralert-manager)部署基本的监控堆栈。
重要

如果要执行断开连接的安装,请参阅 执行断开连接的安装

注意

如果您要使用新存储集群运行 prometheus 服务,或者您使用 Rook 运行 Ceph,请将 --skip-monitoring-stack 选项与 cephadm bootstrap 命令搭配使用。这个选项绕过基本的监控堆栈,以便稍后手动配置。

重要

如果要部署监控堆栈,请参阅 Red Hat Ceph Storage Operations Guide 中的使用 Ceph Orchestrator 部署监控堆栈

重要

bootstrapping 提供初始登录控制面板的默认用户名和密码。Bootstrap 要求在登录后更改密码。

重要

在开始 bootstrap 过程前,请确保要使用的容器镜像与 cephadm 具有相同的 Red Hat Ceph Storage 版本。如果两个版本不匹配,bootstrapping 会在创建初始 admin 用户阶段失败。

注意

在开始 bootstrap 过程前,您必须为 registry.redhat.io 容器 registry 创建用户名和密码。有关红帽容器 registry 身份验证的更多信息,请参阅知识库文章 Red Hat Container Registry 身份验证

先决条件

  • 第一个 Ceph 监控容器的 IP 地址,也是存储集群中第一个节点的 IP 地址。
  • 登录到 registry.redhat.io
  • 至少 10 GB 的可用空间用于 /var/lib/containers/
  • 所有节点的根级别访问权限。
注意

如果存储集群包含多个网络和接口,请确定选择一个可供使用存储集群的任何节点访问的网络。

注意

如果本地节点使用完全限定域名 (FQDN),则将 --allow-fqdn-hostname 选项添加到命令行上的 cephadm bootstrap

重要

在您要作为集群中初始监控节点的节点上运行 cephadm bootstrapIP_ADDRESS 选项应该是您用于运行 cephadm bootstrap 的节点的 IP 地址。

注意

如果要使用 IPV6 地址部署存储集群,则使用 --mon-ip IP_ADDRESS 选项的 IPV6 地址格式。例如:cephadm bootstrap --mon-ip 2620:52:0:880:225:90ff:fefc:2536 --registry-json /etc/mylogin.json

流程

  1. 引导一个存储集群:

    语法

    cephadm bootstrap --cluster-network NETWORK_CIDR --mon-ip IP_ADDRESS --registry-url registry.redhat.io --registry-username USER_NAME --registry-password PASSWORD --yes-i-know

    示例

    [root@host01 ~]# cephadm bootstrap --cluster-network 10.10.128.0/24 --mon-ip 10.10.128.68 --registry-url registry.redhat.io --registry-username myuser1 --registry-password mypassword1 --yes-i-know

    注意

    如果要通过公共网络路由的内部集群流量,可以省略 --cluster-network NETWORK_CIDR 选项。

    完成该脚本需要几分钟时间。脚本完成后,会提供 Red Hat Ceph Storage Dashboard URL 提供凭据、用于访问 Ceph 命令行界面 (CLI) 的命令,以及启用遥测的请求。

    Ceph Dashboard is now available at:
    
                 URL: https://host01:8443/
                User: admin
            Password: i8nhu7zham
    
    Enabling client.admin keyring and conf on hosts with "admin" label
    You can access the Ceph CLI with:
    
            sudo /usr/sbin/cephadm shell --fsid 266ee7a8-2a05-11eb-b846-5254002d4916 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
    
    Please consider enabling telemetry to help improve Ceph:
    
            ceph telemetry on
    
    For more information see:
    
            https://docs.ceph.com/docs/master/mgr/telemetry/
    
    Bootstrap complete.

其它资源

3.10.2. 使用 JSON 文件保护登录信息

作为存储管理员,您可以选择添加登录和密码信息到 JSON 文件,然后引用 JSON 文件以进行引导。这样可防止登录凭据被暴露。

注意

您还可以将 JSON 文件与 cephadm --registry-login 命令搭配使用。

先决条件

  • 第一个 Ceph 监控容器的 IP 地址,也是存储集群中第一个节点的 IP 地址。
  • 登录到 registry.redhat.io
  • 至少 10 GB 的可用空间用于 /var/lib/containers/
  • 所有节点的根级别访问权限。

流程

  1. 创建 JSON 文件。在本例中,该文件名为 mylogin.json

    语法

    {
     "url":"REGISTRY_URL",
     "username":"USER_NAME",
     "password":"PASSWORD"
    }

    示例

    {
     "url":"registry.redhat.io",
     "username":"myuser1",
     "password":"mypassword1"
    }

  2. 引导一个存储集群:

    语法

    cephadm bootstrap --mon-ip IP_ADDRESS --registry-json /etc/mylogin.json

    示例

    [root@host01 ~]# cephadm bootstrap --mon-ip 10.10.128.68 --registry-json /etc/mylogin.json

3.10.3. 使用服务配置文件引导存储集群

要引导存储集群并使用服务配置文件配置额外的主机和守护进程,请使用 cephadm bootstrap 命令的 --apply-spec 选项。配置文件是一个 .yaml 文件,其中包含您要部署的服务类型、放置和指定节点。

注意

如果要为多站点等应用使用非默认域或区域,请在引导存储集群后配置 Ceph 对象网关守护进程,而不是使用 --apply-spec 选项。这可让您在部署 Ceph Object Gateway 前创建 Ceph 对象网关守护进程所需的 realm 或 zone。如需更多信息,请参阅 Red Hat Ceph Storage 操作指南

注意

如果部署 NFS-Ganesha 网关或元数据服务器(MDS)服务,请在引导存储集群后配置它们。

  • 若要部署 Ceph NFS-Ganesha 网关,您必须首先创建一个 RADOS 池。
  • 要部署 MDS 服务,您必须首先创建一个 CephFS 卷。

如需更多信息,请参阅 Red Hat Ceph Storage 操作指南

先决条件

  • 至少一个正在运行的虚拟机 (VM) 或服务器。
  • Red Hat Enterprise Linux 8.10 或 9.4,将 ansible-core 捆绑到 AppStream 中。
  • 所有节点的根级别访问权限。
  • 登录到 registry.redhat.io
  • 在存储集群的所有主机上设置免密码 ssh
  • cephadm 安装在您要作为存储集群中初始监控节点的节点上。

流程

  1. 登录到 bootstrap 主机。
  2. 为您的存储集群创建服务配置 .yaml 文件。示例 文件指示 cephadm bootstrap 配置初始主机和两个额外的主机,并且它指定将在所有可用的磁盘上创建 OSD。

    示例

    service_type: host
    addr: host01
    hostname: host01
    ---
    service_type: host
    addr: host02
    hostname: host02
    ---
    service_type: host
    addr: host03
    hostname: host03
    ---
    service_type: host
    addr: host04
    hostname: host04
    ---
    service_type: mon
    placement:
      host_pattern: "host[0-2]"
    ---
    service_type: osd
    service_id: my_osds
    placement:
      host_pattern: "host[1-3]"
    data_devices:
      all: true

  3. 使用 --apply-spec 选项引导存储集群:

    语法

    cephadm bootstrap --apply-spec CONFIGURATION_FILE_NAME --mon-ip MONITOR_IP_ADDRESS --registry-url registry.redhat.io --registry-username USER_NAME --registry-password PASSWORD

    示例

    [root@host01 ~]# cephadm bootstrap --apply-spec initial-config.yaml --mon-ip 10.10.128.68 --registry-url registry.redhat.io --registry-username myuser1 --registry-password mypassword1

    完成该脚本需要几分钟时间。脚本完成后,会提供 Red Hat Ceph Storage Dashboard URL 提供凭据、用于访问 Ceph 命令行界面 (CLI) 的命令,以及启用遥测的请求。

  4. 在您的存储集群启动并运行后,请参阅 Red Hat Ceph Storage Operations Guide 以了解有关配置其他守护进程和服务的更多信息。

其它资源

3.10.4. 以非 root 用户身份引导存储集群

如果您有免密码 sudo 权限,则可以以非 root 用户身份引导存储集群。

要在 bootstrap 节点上以非 root 用户身份引导 Red Hat Ceph Storage 集群,在 cephadm bootstrap 命令中使用 --ssh-user 选项。--ssh-user 指定 SSH 连接到集群节点的用户。

非 root 用户必须具有免密码 sudo 访问权限。

先决条件

  • 第一个 Ceph Monitor 容器的 IP 地址,这也是存储集群中初始 monitor 节点的 IP 地址。
  • 登录到 registry.redhat.io
  • 至少 10 GB 的可用空间用于 /var/lib/containers/
  • 可选:SSH 公钥和私钥。
  • 对 bootstrap 节点进行免密码 sudo 访问。
  • 非 root 用户在所有旨在作为集群一部分的节点上具有免密码 sudo 访问权限。
  • cephadm 安装在您要作为存储集群中初始监控节点的节点上。

流程

  1. 更改为 bootstrap 节点上的 sudo

    语法

    su - SSH_USER_NAME

    示例

    [root@host01 ~]# su - ceph
    Last login: Tue Sep 14 12:00:29 EST 2021 on pts/0

  2. 检查到 bootstrap 节点的 SSH 连接:

    示例

    [ceph@host01 ~]$ ssh host01
    Last login: Tue Sep 14 12:03:29 EST 2021 on pts/0

  3. 可选: 指示 cephadm bootstrap 命令。

    注意

    使用私钥和公钥是可选的。如果之前尚未创建 SSH 密钥,则可以在此步骤中创建这些密钥。

    包含 --ssh-private-key--ssh-public-key 选项:

    语法

    sudo cephadm bootstrap --ssh-user USER_NAME --mon-ip IP_ADDRESS --ssh-private-key PRIVATE_KEY --ssh-public-key PUBLIC_KEY --registry-url registry.redhat.io --registry-username USER_NAME --registry-password PASSWORD

    示例

    sudo cephadm bootstrap --ssh-user ceph --mon-ip 10.10.128.68 --ssh-private-key /home/ceph/.ssh/id_rsa --ssh-public-key /home/ceph/.ssh/id_rsa.pub --registry-url registry.redhat.io --registry-username myuser1 --registry-password mypassword1

其它资源

3.10.5. bootstrap 命令选项

cephadm bootstrap 命令在本地主机上引导 Ceph 存储集群。它在本地主机上部署 MON 守护进程和 MGR 守护进程,自动在本地主机上部署监控堆栈,并调用 ceph orch host add HOSTNAME

下表列出了 cephadm bootstrap 的可用选项。

cephadm bootstrap 选项描述

--config CONFIG_FILE, -c CONFIG_FILE

CONFIG_FILE 是要与 bootstrap 命令一起使用的 ceph.conf 文件

--cluster-network NETWORK_CIDR

NETWORK_CIDR 定义的子网用于内部集群流量。以 CIDR 表示法指定。例如:10.10.128.0/24.

--mon-id MON_ID

在名为 MON_ID 的主机上引导。默认值为本地主机。

--mon-addrv MON_ADDRV

mon IPs (例如 [v2:localipaddr:3300,v1:localipaddr:6789])

--mon-ip IP_ADDRESS

用于运行 cephadm bootstrap 的节点的 IP 地址。

--mgr-id MGR_ID

安装 MGR 节点的主机 ID。默认:随机生成。

--fsid FSID

集群 FSID。

--output-dir OUTPUT_DIR

使用此目录编写配置、密钥环和公钥文件。

--output-keyring OUTPUT_KEYRING

使用新的集群管理员和 mon 密钥生成的密钥环文件要写入的位置。

--output-config OUTPUT_CONFIG

写入用于连接到新集群的配置文件的位置。

--output-pub-ssh-key OUTPUT_PUB_SSH_KEY

用于集群的公共 SSH 公钥的写入位置。

--skip-ssh

跳过本地主机上 ssh 密钥的设置。

--initial-dashboard-user INITIAL_DASHBOARD_USER

仪表板的初始用户.

--initial-dashboard-password INITIAL_DASHBOARD_PASSWORD

仪表板初始用户的初始密码.

--ssl-dashboard-port SSL_DASHBOARD_PORT

用于使用 SSL 与仪表板连接的端口号.

--dashboard-key DASHBOARD_KEY

仪表板密钥。

--dashboard-crt DASHBOARD_CRT

仪表板证书。

--ssh-config SSH_CONFIG

SSH 配置。

--ssh-private-key SSH_PRIVATE_KEY

SSH 私钥。

--ssh-public-key SSH_PUBLIC_KEY

SSH 公钥。

--ssh-user SSH_USER

设置用于到集群主机的 SSH 连接的用户。非 root 用户需要免密码 sudo。

--skip-mon-network

根据 bootstrap mon ip 设置 mon public_network。

--skip-dashboard

不要启用 Ceph 仪表板。

--dashboard-password-noupdate

禁用强制仪表板密码更改。

--no-minimize-config

不要模拟和最小化配置文件。

--skip-ping-check

不验证 mon IP 是否可 ping 通。

--skip-pull

在 bootstrapping 前不要拉取最新的镜像。

--skip-firewalld

不配置 firewalld。

--allow-overwrite

允许覆盖现有的 -output-* config/keyring/ssh 文件。

--allow-fqdn-hostname

允许完全限定主机名。

--skip-prepare-host

不准备主机。

--orphan-initial-daemons

不创建初始 mon、mgr 和崩溃服务规格。

--skip-monitoring-stack

不自动置备监控堆栈](prometheus、grafana、alertmanager、node-exporter)。

--apply-spec APPLY_SPEC

在 bootstrap 后应用集群 spec 文件(复制 ssh 密钥、添加主机和应用服务)。

--registry-url REGISTRY_URL

指定要登录的自定义 registry 的 URL。例如: registry.redhat.io

--registry-username REGISTRY_USERNAME

到自定义 registry 的登录帐户的用户名。

--registry-password REGISTRY_PASSWORD

到自定义 registry 的登录帐户的密码。

--registry-json REGISTRY_JSON

包含 registry 登录信息的 JSON 文件。

其它资源

  • 有关 --skip-monitoring-stack 选项的更多信息,请参阅 添加主机
  • 有关使用 registry-json 选项登录 registry 的更多信息,请参阅 registry-login 命令的帮助信息。
  • 如需有关 cephadm 选项的更多信息,请参阅 cephadm 的帮助。

3.10.6. 为断开连接的安装配置私有 registry

您可以使用断开连接的安装过程在专用网络上安装 cephadm 和 bootstrap 您的存储集群。断开连接的安装使用私有 registry 进行安装。在部署过程中,Red Hat Ceph Storage 节点无法访问互联网时,请使用这个步骤。

按照以下步骤,使用身份验证和自签名证书设置安全私有 registry。在可以访问互联网以及可以访问本地集群的节点上执行这些步骤。

注意

不建议将不安全的 registry 用于生产环境。

先决条件

  • 至少一个正在运行的虚拟机(VM)或带有活跃互联网连接的服务器。
  • Red Hat Enterprise Linux 8.10 或 9.4,将 ansible-core 捆绑到 AppStream 中。
  • 登录到 registry.redhat.io
  • 所有节点的根级别访问权限。

流程

  1. 登录到可访问公共网络和集群节点的节点。
  2. 注册该节点,并在提示时输入适当的红帽客户门户网站凭证:

    示例

    [root@admin ~]# subscription-manager register

  3. 获取最新的订阅数据:

    示例

    [root@admin ~]# subscription-manager refresh

  4. 列出 Red Hat Ceph Storage 的所有可用订阅:

    示例

    [root@admin ~]# subscription-manager list --available --all --matches="*Ceph*"

    从 Red Hat Ceph Storage 可用订阅列表中复制池 ID。

  5. 附加订阅以获取软件权利:

    语法

    subscription-manager attach --pool=POOL_ID

    POOL_ID 替换为上一步中标识的池 ID。

  6. 禁用默认软件存储库,并启用服务器以及额外的存储库:

    Red Hat Enterprise Linux 9

    [root@admin ~]# subscription-manager repos --disable=*
    [root@admin ~]# subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms
    [root@admin ~]# subscription-manager repos --enable=rhel-9-for-x86_64-appstream-rpms

  7. 安装 podmanhttpd-tools 软件包:

    示例

    [root@admin ~]# dnf install -y podman httpd-tools

  8. 为私有 registry 创建文件夹:

    示例

    [root@admin ~]# mkdir -p /opt/registry/{auth,certs,data}

    registry 将存储在 /opt/registry 中,目录会挂载到运行 registry 的容器中。

    • auth 目录存储 registry 用于身份验证的 htpasswd 文件。
    • certs 目录存储 registry 的证书用于身份验证。
    • data 目录存储 registry 镜像。
  9. 创建用于访问私有 registry 的凭证:

    语法

    htpasswd -bBc /opt/registry/auth/htpasswd PRIVATE_REGISTRY_USERNAME PRIVATE_REGISTRY_PASSWORD

    • b 选项提供从命令行的密码。
    • B 选项使用 Bcrypt 加密存储密码。
    • c 选项创建 htpasswd 文件。
    • PRIVATE_REGISTRY_USERNAME 替换为要用于私有 registry 的用户名。
    • PRIVATE_REGISTRY_PASSWORD 替换为要用于私有 registry 用户名的密码。

      示例

      [root@admin ~]# htpasswd -bBc /opt/registry/auth/htpasswd myregistryusername myregistrypassword1

  10. 创建自签名证书:

    语法

    openssl req -newkey rsa:4096 -nodes -sha256 -keyout /opt/registry/certs/domain.key -x509 -days 365 -out /opt/registry/certs/domain.crt -addext "subjectAltName = DNS:LOCAL_NODE_FQDN"

    • LOCAL_NODE_FQDN 替换为私有 registry 节点的完全限定域名。

      注意

      系统将提示您输入证书的相应选项。CN= 值是节点的主机名,它应可由 DNS 或 /etc/hosts 文件解析。

      示例

      [root@admin ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout /opt/registry/certs/domain.key -x509 -days 365 -out /opt/registry/certs/domain.crt -addext "subjectAltName = DNS:admin.lab.redhat.com"

      注意

      在创建自签名证书时,请务必使用适当的 Subject Alternative Name(SAN)创建证书。如果 Podman 命令需要对没有包括适当 SAN 的证书的 TLS 验证,则会返回错误:x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0

  11. 创建指向 domain.cert 的符号链接,以允许 skopeo 使用文件扩展名 .cert 查找证书:

    示例

    [root@admin ~]# ln -s /opt/registry/certs/domain.crt /opt/registry/certs/domain.cert

  12. 将证书添加到私有 registry 节点上的可信列表中:

    语法

    cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/
    update-ca-trust
    trust list | grep -i "LOCAL_NODE_FQDN"

    LOCAL_NODE_FQDN 替换为私有 registry 节点的 FQDN。

    示例

    [root@admin ~]# cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/
    [root@admin ~]# update-ca-trust
    [root@admin ~]# trust list | grep -i "admin.lab.redhat.com"
    
        label: admin.lab.redhat.com

  13. 将证书复制到将用于访问私有 registry 的任何节点中,并更新可信列表:

    示例

    [root@admin ~]# scp /opt/registry/certs/domain.crt root@host01:/etc/pki/ca-trust/source/anchors/
    [root@admin ~]# ssh root@host01
    [root@host01 ~]# update-ca-trust
    [root@host01 ~]# trust list | grep -i "admin.lab.redhat.com"
    
        label: admin.lab.redhat.com

  14. 启动本地安全私有 registry:

    语法

    podman run --restart=always --name NAME_OF_CONTAINER \
    -p 5000:5000 -v /opt/registry/data:/var/lib/registry:z \
    -v /opt/registry/auth:/auth:z \
    -v /opt/registry/certs:/certs:z \
    -e "REGISTRY_AUTH=htpasswd" \
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
    -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
    -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \
    -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \
    -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true \
    -d registry:2

    NAME_OF_CONTAINER 替换为分配给容器的名称。

    示例

    [root@admin ~]# podman run --restart=always --name myprivateregistry \
    -p 5000:5000 -v /opt/registry/data:/var/lib/registry:z \
    -v /opt/registry/auth:/auth:z \
    -v /opt/registry/certs:/certs:z \
    -e "REGISTRY_AUTH=htpasswd" \
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
    -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
    -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \
    -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \
    -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true \
    -d registry:2

    这会在端口 5000 上启动私有 registry,并在运行 registry 的容器中挂载 registry 目录的卷。

  15. 在本地 registry 节点上,验证 registry.redhat.io 是否在容器 registry 搜索路径中。

    1. 打开并编辑 /etc/containers/registries.conf 文件,如果不存在,请将 registry.redhat.io 添加到 unqualified-search-registries 列表中:

      示例

      unqualified-search-registries = ["registry.redhat.io", "registry.access.redhat.com", "registry.fedoraproject.org", "registry.centos.org", "docker.io"]

  16. 使用您的红帽客户门户网站凭证登录到 registry.redhat.io

    语法

    podman login registry.redhat.io

  17. 将以下 Red Hat Ceph Storage 7 镜像、Prometheus 镜像和 Dashboard 镜像从红帽客户门户网站复制到私有 registry:

    注意

    Red Hat Ecosystem Catalog 上查找最新可用支持的容器镜像。

    表 3.1. 监控堆栈的自定义镜像详情
    监控堆栈组件Red Hat Ceph Storage 7.0 的镜像详情Red Hat Ceph Storage 7.1 的镜像详情

    Prometheus

    registry.redhat.io/openshift4/ose-prometheus:v4.12

    registry.redhat.io/openshift4/ose-prometheus:v4.15

    Grafana

    registry.redhat.io/rhceph/grafana-rhel9:latest

    registry.redhat.io/rhceph/grafana-rhel9:latest

    Node-exporter

    registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.12

    registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.15

    AlertManager

    registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.12

    registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.15

    HAProxy

    registry.redhat.io/rhceph/rhceph-haproxy-rhel9:latest

    registry.redhat.io/rhceph/rhceph-haproxy-rhel9:latest

    Keepalived

    registry.redhat.io/rhceph/keepalived-rhel9:latest

    registry.redhat.io/rhceph/keepalived-rhel9:latest

    SNMP Gateway

    registry.redhat.io/rhceph/snmp-notifier-rhel9:latest

    registry.redhat.io/rhceph/snmp-notifier-rhel9:latest

    Loki

    registry.redhat.io/openshift-logging/logging-loki-rhel8:v2.6.1

    registry.redhat.io/openshift-logging/logging-loki-rhel8:v2.6.1

    Promtail

    registry.redhat.io/rhceph/rhceph-promtail-rhel9:v2.4.0

    registry.redhat.io/rhceph/rhceph-promtail-rhel9:v2.4.0

    语法

    podman run -v /CERTIFICATE_DIRECTORY_PATH:/certs:Z -v /CERTIFICATE_DIRECTORY_PATH/domain.cert:/certs/domain.cert:Z  --rm registry.redhat.io/rhel9/skopeo:8.5-8 skopeo copy  --remove-signatures --src-creds RED_HAT_CUSTOMER_PORTAL_LOGIN:RED_HAT_CUSTOMER_PORTAL_PASSWORD --dest-cert-dir=./certs/ --dest-creds PRIVATE_REGISTRY_USERNAME:PRIVATE_REGISTRY_PASSWORD docker://registry.redhat.io/SRC_IMAGE:SRC_TAG docker://LOCAL_NODE_FQDN:5000/DST_IMAGE:DST_TAG

    • CERTIFICATE_DIRECTORY_PATH 替换为自签名证书的目录路径。
    • RED_HAT_CUSTOMER_PORTAL_LOGINRED_HAT_CUSTOMER_PORTAL_PASSWORD 替换为您的红帽客户门户网站凭证。
    • PRIVATE_REGISTRY_USERNAMEPRIVATE_REGISTRY_PASSWORD 替换为私有 registry 凭证。
    • SRC_IMAGESRC_TAG 替换为要从 registry.redhat.io 中复制的镜像的名称和标签。
    • DST_IMAGEDST_TAG 替换为要复制到私有 registry 的镜像的名称和标签。
    • LOCAL_NODE_FQDN 替换为私有 registry 的 FQDN。

      示例

      [root@admin ~]#  podman run -v /opt/registry/certs:/certs:Z -v /opt/registry/certs/domain.cert:/certs/domain.cert:Z --rm registry.redhat.io/rhel9/skopeo skopeo copy --remove-signatures --src-creds myusername:mypassword1 --dest-cert-dir=./certs/ --dest-creds myregistryusername:myregistrypassword1 docker://registry.redhat.io/rhceph/rhceph-7-rhel9:latest docker://admin.lab.redhat.com:5000/rhceph/rhceph-7-rhel9:latest
      
      [root@admin ~]# podman run -v /opt/registry/certs:/certs:Z -v /opt/registry/certs/domain.cert:/certs/domain.cert:Z --rm registry.redhat.io/rhel9/skopeo skopeo copy --remove-signatures --src-creds myusername:mypassword1 --dest-cert-dir=./certs/ --dest-creds myregistryusername:myregistrypassword1 docker://registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.12 docker://admin.lab.redhat.com:5000/openshift4/ose-prometheus-node-exporter:v4.12
      
      [root@admin ~]# podman run -v /opt/registry/certs:/certs:Z -v /opt/registry/certs/domain.cert:/certs/domain.cert:Z --rm registry.redhat.io/rhel9/skopeo skopeo copy --remove-signatures --src-creds myusername:mypassword1 --dest-cert-dir=./certs/ --dest-creds myregistryusername:myregistrypassword1 docker://registry.redhat.io/rhceph/grafana-rhel9:latest docker://admin.lab.redhat.com:5000/rhceph/grafana-rhel9:latest
      
      [root@admin ~]# podman run -v /opt/registry/certs:/certs:Z -v /opt/registry/certs/domain.cert:/certs/domain.cert:Z --rm registry.redhat.io/rhel9/skopeo skopeo copy --remove-signatures --src-creds myusername:mypassword1 --dest-cert-dir=./certs/ --dest-creds myregistryusername:myregistrypassword1 docker://registry.redhat.io/openshift4/ose-prometheus:v4.12 docker://admin.lab.redhat.com:5000/openshift4/ose-prometheus:v4.12
      
      [root@admin ~]# podman run -v /opt/registry/certs:/certs:Z -v /opt/registry/certs/domain.cert:/certs/domain.cert:Z --rm registry.redhat.io/rhel9/skopeo skopeo copy --remove-signatures --src-creds myusername:mypassword1 --dest-cert-dir=./certs/ --dest-creds myregistryusername:myregistrypassword1 docker://registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.12 docker://admin.lab.redhat.com:5000/openshift4/ose-prometheus-alertmanager:v4.12

  18. 使用 curl 命令,验证镜像是否驻留在本地 registry 中:

    语法

    curl -u PRIVATE_REGISTRY_USERNAME:PRIVATE_REGISTRY_PASSWORD https://LOCAL_NODE_FQDN:5000/v2/_catalog

    示例

    [root@admin ~]# curl -u myregistryusername:myregistrypassword1 https://admin.lab.redhat.com:5000/v2/_catalog
    
    {"repositories":["openshift4/ose-prometheus","openshift4/ose-prometheus-alertmanager","openshift4/ose-prometheus-node-exporter","rhceph/rhceph-7-dashboard-rhel9","rhceph/rhceph-7-rhel9"]}

其它资源

3.10.7. 为断开连接的安装运行 preflight playbook

您可以使用 cephadm-preflight.yml Ansible playbook 来配置 Ceph 存储库并准备存储集群以进行引导。它还安装一些先决条件,如 podmanlvm2chronycephadm

preflight playbook 使用 cephadm-ansible 清单 hosts 文件来识别存储集群中所有节点。cephadm-ansible, cephadm-preflight.yml, 和清单 hosts 文件的默认位置是 /usr/share/cephadm-ansible/

以下示例显示了典型的清单文件的结构:

示例

host02
host03
host04

[admin]
host01

清单文件中的 [admin] 组包含存储了 admin 密钥环的节点的名称。

注意

在引导初始主机前运行 preflight playbook。

先决条件

  • cephadm-ansible 软件包安装在 Ansible 管理节点上。
  • 对存储集群中所有节点的根级别访问权限。
  • 在存储集群的所有主机上设置免密码 ssh
  • 配置为访问启用了以下软件仓库的本地 YUM 存储库服务器:

    • rhel-9-for-x86_64-baseos-rpms
    • rhel-9-for-x86_64-appstream-rpms
    • rhceph-7-tools-for-rhel-9-x86_64-rpms
注意

有关设置本地 YUM 存储库的更多信息,请参阅创建本地仓库并与 Disconnected/Offline/Air-gapped 系统共享

流程

  1. 进入 Ansible 管理节点上的 /usr/share/cephadm-ansible 目录。
  2. 打开并编辑 hosts 文件并添加节点。
  3. 在运行 preflight playbook 时使用设置为 customceph_origin 参数,以使用本地 YUM 存储库:

    语法

    ansible-playbook -i INVENTORY_FILE cephadm-preflight.yml --extra-vars "ceph_origin=custom" -e "custom_repo_url=CUSTOM_REPO_URL"

    示例

    [ceph-admin@admin cephadm-ansible]$ ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=custom" -e "custom_repo_url=http://mycustomrepo.lab.redhat.com/x86_64/os/"

    安装完成后,cephadm 驻留在 /usr/sbin/ 目录中。

    注意

    使用 Ansible playbook 填充 registry.conf 文件的内容:

    语法

    ansible-playbook -vvv -i INVENTORY_HOST_FILE_ cephadm-set-container-insecure-registries.yml -e insecure_registry=REGISTRY_URL

    示例

    [root@admin ~]# ansible-playbook -vvv -i hosts cephadm-set-container-insecure-registries.yml -e insecure_registry=host01:5050

  4. 另外,您可以使用 --limit 选项在存储集群中选定的一组主机上运行 preflight playbook:

    语法

    ansible-playbook -i INVENTORY_FILE cephadm-preflight.yml --extra-vars "ceph_origin=custom" -e "custom_repo_url=CUSTOM_REPO_URL" --limit GROUP_NAME|NODE_NAME

    GROUP_NAME 替换为清单文件中的组名称。将 NODE_NAME 替换为清单文件中的特定节点名称。

    示例

    [ceph-admin@admin cephadm-ansible]$ ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=custom" -e "custom_repo_url=http://mycustomrepo.lab.redhat.com/x86_64/os/" --limit clients
    [ceph-admin@admin cephadm-ansible]$ ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=custom" -e "custom_repo_url=http://mycustomrepo.lab.redhat.com/x86_64/os/" --limit host02

    注意

    运行 preflight playbook 时,cephadm-ansible 会在客户端节点上自动安装 chronyceph-common

3.10.8. 执行断开连接的安装

在执行安装前,您必须先从可以访问红帽 registry 的代理主机获取 Red Hat Ceph Storage 容器镜像,或将该镜像复制到本地 registry。

注意

如果您的本地 registry 使用带有本地 registry 的自签名证书,请确保将可信 root 证书添加到 bootstrap 主机。如需更多信息,请参阅为断开连接的安装配置私有 registry

重要

在开始 bootstrap 过程前,请确保要使用的容器镜像与 cephadm 具有相同的 Red Hat Ceph Storage 版本。如果两个版本不匹配,bootstrapping 会在创建初始 admin 用户阶段失败。

先决条件

流程

  1. 登录到 bootstrap 主机。
  2. 引导存储集群:

    语法

    cephadm --image PRIVATE_REGISTRY_NODE_FQDN:5000/CUSTOM_IMAGE_NAME:IMAGE_TAG bootstrap --mon-ip IP_ADDRESS --registry-url PRIVATE_REGISTRY_NODE_FQDN:5000 --registry-username PRIVATE_REGISTRY_USERNAME --registry-password PRIVATE_REGISTRY_PASSWORD

    • PRIVATE_REGISTRY_NODE_FQDN 替换为私有 registry 的完全限定域名。
    • CUSTOM_IMAGE_NAMEIMAGE_TAG 替换为位于私有 registry 中的 Red Hat Ceph Storage 容器镜像的名称和标签。
    • IP_ADDRESS 替换为您要用来运行 cephadm bootstrap 的节点的 IP 地址。
    • PRIVATE_REGISTRY_USERNAME 替换为要用于私有 registry 的用户名。
    • PRIVATE_REGISTRY_PASSWORD 替换为要用于私有 registry 用户名的密码。

      示例

      [root@host01 ~]# cephadm --image admin.lab.redhat.com:5000/rhceph-7-rhel9:latest bootstrap --mon-ip 10.10.128.68 --registry-url admin.lab.redhat.com:5000 --registry-username myregistryusername --registry-password myregistrypassword1

      完成该脚本需要几分钟时间。脚本完成后,会提供 Red Hat Ceph Storage Dashboard URL 提供凭据、用于访问 Ceph 命令行界面 (CLI) 的命令,以及启用遥测的请求。

      Ceph Dashboard is now available at:
      
                   URL: https://host01:8443/
                  User: admin
              Password: i8nhu7zham
      
      Enabling client.admin keyring and conf on hosts with "admin" label
      You can access the Ceph CLI with:
      
              sudo /usr/sbin/cephadm shell --fsid 266ee7a8-2a05-11eb-b846-5254002d4916 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
      
      Please consider enabling telemetry to help improve Ceph:
      
              ceph telemetry on
      
      For more information see:
      
              https://docs.ceph.com/docs/master/mgr/telemetry/
      
      Bootstrap complete.

bootstrap 过程完成后,请参阅为断开连接的安装更改自定义容器镜像的配置 来配置容器镜像。

其它资源

3.10.9. 为断开连接的安装更改自定义容器镜像配置

为断开连接的节点执行初始 bootstrap 后,您必须为监控堆栈守护进程指定自定义容器镜像。您可以覆盖用于监控堆栈守护进程的默认容器镜像,因为节点无法访问默认的容器 Registry。

注意

在进行任何配置更改前,请确保初始主机上的 bootstrap 过程已完成。

默认情况下,监控堆栈组件根据主 Ceph 镜像进行部署。对于存储集群的断开连接的环境,您可以使用最新的监控堆栈组件镜像。

注意

使用自定义 registry 时,请务必在添加任何 Ceph 守护进程前登录到新添加的节点上的自定义 registry。

语法

# ceph cephadm registry-login --registry-url CUSTOM_REGISTRY_NAME  --registry_username REGISTRY_USERNAME --registry_password REGISTRY_PASSWORD

示例

# ceph cephadm registry-login --registry-url myregistry --registry_username myregistryusername --registry_password myregistrypassword1

先决条件

  • 至少一个正在运行的虚拟机 (VM) 或服务器。
  • Red Hat Enterprise Linux 8.10 或 9.4,将 ansible-core 捆绑到 AppStream 中。
  • 所有节点的根级别访问权限。
  • 在存储集群的所有主机上设置免密码 ssh

流程

  1. 使用 ceph config 命令设置自定义容器镜像:

    语法

    ceph config set mgr mgr/cephadm/OPTION_NAME CUSTOM_REGISTRY_NAME/CONTAINER_NAME

    OPTION_NAME 中使用以下选项:

    container_image_prometheus
    container_image_grafana
    container_image_alertmanager
    container_image_node_exporter

    示例

    [root@host01 ~]# ceph config set mgr mgr/cephadm/container_image_prometheus myregistry/mycontainer
    [root@host01 ~]# ceph config set mgr mgr/cephadm/container_image_grafana myregistry/mycontainer
    [root@host01 ~]# ceph config set mgr mgr/cephadm/container_image_alertmanager myregistry/mycontainer
    [root@host01 ~]# ceph config set mgr mgr/cephadm/container_image_node_exporter myregistry/mycontainer

  2. 重新部署 node-exporter

    语法

    ceph orch redeploy node-exporter

注意

如果有任何服务没有部署,您可以使用 ceph orch redeploy 命令重新部署这些服务。

注意

通过设置自定义镜像,配置镜像名称和标签的默认值将被覆盖,但不能覆盖。当更新可用时,默认值会改变。通过设置自定义镜像,您将无法配置已为其设置自定义镜像以进行自动更新的组件。您需要手动更新配置镜像名称和标签,以便能安装更新。

  • 如果选择恢复为使用默认配置,可以重置自定义容器镜像。使用 ceph config rm 重置配置选项:

    语法

    ceph config rm mgr mgr/cephadm/OPTION_NAME

    示例

    ceph config rm mgr mgr/cephadm/container_image_prometheus

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.