首页 / 平台管理 / 集群管理 / 集群 / 接入 OpenShift 集群

接入 OpenShift 集群

支持将已部署的 OpenShift 集群接入平台统一管理。

前提条件

操作步骤 1 - 为集群配置 DNS

通过修改 global 集群上的 coredns 配置字典,为集群配置 DNS。

  1. 登录可以访问 OCP 集群的跳板机,并执行以下命令,获得 OCP 集群的 base domain。

    oc get dns cluster -o jsonpath='{.spec.baseDomain}'

    得到的标准输出示例如下:

    ocp.example.com
  2. 登录容器平台的平台管理页面。在左侧导航栏中,通过顶部导航栏的集群切换入口,切换至 global 集群。

  3. 在左侧导航栏中单击 集群管理 > 资源管理

  4. 查找并更新 kube-system 命名空间下名为 cpaas-corednsConfigMap 资源,操作步骤如下图所示。

    • 在弹框中搜索 .:1053 { 所在行。

    • 复制这一行,将小数点改成第一步获取的 OpenShift 集群的 base domain。

    • 最后加上 log 和 forward 插件的配置,补上 } 使配置文件合法。全部修改后示例如下:

    Corefile: |
    # 这一段是需要手动添加的部分
    ocp.example.com:1053 {
        log
        forward . 192.168.31.220
    }
    # 以下是 coredns 配置文件中原本就有的内容,无需修改
    .:1053 {

    参数说明

    • ocp.example.com:OpenShift 集群的 base domain,是第一步执行的命令的返回结果。

    • 192.168.31.220:OpenShift 集群的 DNS。
      该值可从集群的控制节点或计算节点的 /etc/resolv.conf 文件中获取。

    全部修改内容如下图所示:

操作步骤 2 - 获取集群信息

提示:以下两种方式选择其一即可。

方法一(推荐):获取集群的 KubeConfig 文件

集群的 KubeConfig 文件中包含了访问集群所需的配置信息,例如:集群地址、CA 证书、认证信息等。

  1. 登录可以访问 OCP 集群的跳板机。

    • 执行以下命令,在全盘搜索 kubeconfig 文件的位置(如果已经知道文件位置,可以跳过这一步)。

      find / -type f -name 'kubeconfig'
      
      # 如果上面的命令没有输出,则尝试下面这个命令
      find / -type f -iregex '.*kube.*config.*'
      
      
      # 在以上命令的输出中找出应当是 kubeconfig 的文件路径,将之存在环境变量中
      path_to_ocp_kubeconfig=/root/ocp4/auth/kubeconfig  # 请根据实际路径调整这里的命令
      
      
      # 检查搜索到的 kubeconfig 文件是否能提供足够权限的 token
      grep -qF 'current-context: admin' "$path_to_ocp_kubeconfig" \
          && echo '所检查的 kubeconfig 文件合法,能继续下面的操作!' \
          || echo '所检查的 kubeconfig 文件非法,请停下操作并排除故障!'
  2. 退出跳板机的 shell。回到本机操作,将跳板机上的 kubeconfig 文件拷贝到本地。需要在本地终端上执行的命令如下:

    # 请根据上一步找到的 kubeconfig 文件实际位置调整这里的路径
    scp root@<OCP 集群跳板机 IP>:</root/ocp4/auth/kubeconfig> <本地存放文件的位置>

方法二:获取集群令牌、访问地址、CA 证书

  1. 登录可以访问集群的跳板机。

    • 执行以下命令行生成并获取具有管理员权限的令牌。

      echo "
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        namespace: default
        name: cls-access
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: cls-access
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: cluster-admin
      subjects:
        - kind: ServiceAccount
          namespace: default
          name: cls-access
      " | kubectl apply -f -  && \
       kubectl describe secret \
       -n default $(kubectl describe sa cls-access -n default \
       |grep  Tokens: |awk '{print $2}') |grep token:

      示例如下图所示。

    • 执行以下命令行,获取集群的访问地址。

      # 获取集群访问地址(server)
      ssh core@<集群中任意控制节点的 ip> sudo grep -F server /etc/kubernetes/kubeconfig | sed 's/ *server: *//'
    • 执行以下命令行,获取集群的 CA 证书。

      # 获取经过 Base64 解码后 CA 证书(certificate-authority-data)
      ssh core@<集群中任意控制节点的 ip> sudo grep -F certificate-authority-data /etc/kubernetes/kubeconfig | sed 's/ *certificate-authority-data: *//' | base64 -d

操作步骤 3 - 修改集群的镜像仓库配置

为确保集群能够拉取到平台提供的组件镜像,请参照本节修改待接入平台的集群的私有镜像仓库配置,将拉取镜像的仓库地址修改为存储平台组件镜像的仓库地址。

注意事项

注意:所有需要使用镜像的主机节点都需要修改。根据镜像仓库的提供方式不同,镜像仓库的地址略有不同:

操作步骤

  1. 登录 OCP 集群中的所有节点

  2. 依次在每个节点上执行以下命令行,修改节点的镜像仓库配置。

    # 切换 root 权限
    sudo -i
    
    # 配置节点,使其支持根目录读写操作
    sudo chattr -i /
    
    # 创建 drop-in 配置文件。如果需要配置多个镜像地址,只需要重复 `--insecure-registry=` 参数,并用空格分隔开即可
    # 配置示例如下,请先将示例中 `--insecure-registry=` 参数后跟的地址改为实际镜像仓库地址,再把全部命令一起复制到节点上执行:
    sudo mkdir -p /etc/systemd/system/crio.service.d/
    cat | sudo tee /etc/systemd/system/crio.service.d/99-registry-cpaas-system.conf << 'EOF'
    [Service]
    ExecStart=
    ExecStart=/usr/bin/crio \
              --insecure-registry='<根据 注意事项 的说明确定的镜像仓库地址>' \
              $CRIO_CONFIG_OPTIONS \
              $CRIO_RUNTIME_OPTIONS \
              $CRIO_STORAGE_OPTIONS \
              $CRIO_NETWORK_OPTIONS \
              $CRIO_METRICS_OPTIONS
    EOF
  3. 执行以下命令行,重启 crio。

    sudo systemctl daemon-reload && sudo systemctl restart crio

操作步骤 4 - 接入集群

  1. 在左侧导航栏中,单击 集群管理 > 集群

  2. 单击 接入集群

  3. 参照以下说明,配置相关参数。

    参数 说明
    镜像仓库 存储集群所需平台组件镜像的仓库。
    在「操作步骤 3 - 修改集群的镜像仓库配置」时如果选择了「使用平台内置的镜像仓库」,请在这里选择「平台默认」
    否则选择「外部」

    - 平台默认:部署 global 时配置的 平台部署 镜像仓库。
    - 外部:提前搭建的外部镜像仓库。需输入访问镜像仓库的 私有镜像仓库地址端口用户名密码
    集群信息 提示:可手动填写或上传 KubeConfig 文件由平台自动解析并填写。

    解析 KubeConfig 文件:上传已获取的 KubeConfig 文件后,平台会自动解析并填写 集群信息,您可修改自动填写的信息。

    集群地址:集群对外暴露 API Server 的访问地址,用于平台访问集群的 API Server。

    CA 证书:集群的 CA 证书。
    注意:手动输入时,需输入经过 Base64 解码的证书。

    认证方式:访问集群的认证方式,需要使用具备 集群管理权限令牌(Token)或 证书认证(客户端证书及秘钥) 进行认证。
  4. 单击 检查连通性 以检查与接入集群的网络连通性并自动识别接入集群的类型,集群类型将以表单右上角角标的形式展现。

  5. 连通性检查通过后,单击 接入,并确认。

    提示

    • 单击处于 接入中 状态的集群右侧的 图标,可在弹出的 执行进度 对话框中,查看集群的执行进度(status.conditions)。
    • 集群接入成功后,在集群列表可查看集群的关键信息,集群的状态显示为正常,并可执行集群相关操作。

后续操作

部署日志采集组件前操作

当 nevermore 在收集日志、事件和审计的过程中,会将一些数据 (例如:position file、buffer、backup) 存储在宿主机上(默认在 nevermore 的 /scan_dir/cpaas 目录)。如果不做处理,对接 OpenShift 集群并部署日志采集组件后,会存在 operation not permitted 情况。部署日志采集组件之前,请参照本节内容配置。

操作步骤

  1. 在 OpenShift 集群的每一个节点上执行以下命令行,创建所有平台必须的目录。

    sudo mkdir -p /cpaas/ && sudo chattr -i /cpaas/
    
    # 为 nevermore 创建其他的使用目录,例如:`/mnt/data/`
    sudo mkdir -p /mnt/data/ && sudo chattr -i /mnt/data/
  2. 为 OpenShift 集群部署日志采集组件。

  3. 登录容器平台的平台管理页面。在左侧导航栏中,通过顶部导航栏的集群切换入口,切换至 global 集群。

  4. 在左侧导航栏中单击 集群管理 > 资源管理

  5. 查找并更新 集群相关 栏目下的 ClusterModule 资源。请选择显示为 OpenShift 集群名称的资源进行更新,操作步骤如下图所示。

    • 在打开的编辑界面上,寻找以 spec: 开头的行 (该行开头不应该有任何空格)
    • 在这一行下面粘贴如下显示的内容,请注意将 </data/cpaas> 改为上一步创建的目录,如 /mnt/data
      valuesOverride:
          ait/chart-alauda-log-agent:
            nevermore:
              dataDirName: </data/cpaas>   # 将尖括号去掉,改成上一步创建的目录,例如:/mnt/data

    全部修改内容如下图所示:

部署插件

集群接入成功后,您可前往 插件管理 选择为集群部署必须的插件,包括监控组件、日志采集组件、日志存储组件等。

更新审计策略

集群接入成功后,可修改集群上的审计策略。

审计策略(spec.audit.profile)支持以下三种类型:

注意

操作步骤

  1. 登录可以访问集群的跳板机。

  2. 执行 oc edit apiserver cluster 令行,修改 APIServer 资源的 spec.audit.profile 字段的值(Default、WriteRequestBodies 或 AllRequestBodies),配置集群的审计策略。

    oc edit apiserver cluster

    APIServer 资源的 YAML 文件示例如下:

    apiVersion: config.openshift.io/v1
    kind: APIServer
    metadata:
      annotations:
        oauth-apiserver.openshift.io/secure-token-storage: "true"
        release.openshift.io/create-only: "true"
      creationTimestamp: "2021-09-22T09:35:02Z"
      generation: 1
      name: cluster
      resourceVersion: "944"
      selfLink: /apis/config.openshift.io/v1/apiservers/cluster
      uid: ea77d173-cbb6-4410-920f-b830a0b8537b
    spec:
      audit:
        profile: Default

启用 Pod Debug 功能

集群接入成功后,如需使用 Pod Debug 功能,请参考 如何在接入集群中启用 Pod Debug 功能?

纳管集群下命名空间

集群接入成功后,您可通过基于集群 创建项目 ,或通过 添加项目关联集群 的方式将集群添加至已有项目,可将新接入的集群关联至项目。

进而,通过 导入命名空间 操作,将集群下已有的 Kubernetes 命名空间纳入到平台的项目下进行管理。

常见问题

接入集群后添加节点按钮置灰,如何添加节点?

不支持在平台界面添加节点,请于联系集群供应商添加。

接入集群的证书管理功能支持哪些证书?

  1. Kubernetes 证书:所有接入集群仅支持在平台证书管理界面查看 APIServer 证书信息,不支持查看其他 Kubernetes 证书且不支持自动轮换。

  2. 平台组件证书:所有接入集群可在平台证书管理界面查看平台组件证书信息且支持自动轮换。

还有哪些功能不支持接入的 OpenShift 集群