如何使用GlusterFS在一个节点上部署OpenShift Origin 10(OKD)

时间:2018-09-27 12:18:08

标签: openshift openshift-origin

我可以在一个节点上安装OKD,并可以在多个节点上按比例放大。 但是现在我想在一个节点上安装带有GlusterFS的OKD,然后在多个节点上扩展它。 目前,我收到至少需要三个节点的错误。我如何绕过ansible的这项检查?

根据github文档,我有三个选择

  1. 配置一个新的本地托管的GlusterFS集群。在这种情况下,GlusterFS容器部署在OpenShift集群中配置为提供存储的节点上。
  2. 配置新的外部GlusterFS集群。在这种情况下,群集节点已预先安装了GlusterFS软件,但尚未进行配置。安装程序将负责配置群集以供OpenShift应用程序使用。
  3. 使用现有的GlusterFS群集。在这种情况下,假定已经设置了一个或多个GlusterFS群集。这些群集可以是本地托管的,也可以是外部的,但必须由heketi服务进行管理。

选项2或3可以用于从一个节点开始并相应地扩展吗?我已经在一个节点上安装了glusterfs集群,并将其扩展到第二个节点,但是如何在openshift中引入?

https://imranrazakh.blogspot.com/2018/08/

1 个答案:

答案 0 :(得分:0)

我找到了一种在一个节点上安装glusterfs的方法,使用glusterfs在一次安装中查找所有内容

更改了库存文件,如下所示

    [OSEv3:children]
    masters
    nodes
    etcd
    glusterfs

    [OSEv3:vars]
    ansible_ssh_common_args='-o StrictHostKeyChecking=no'
    ansible_ssh_user=root
    openshift_deployment_type=origin
    openshift_enable_origin_repo=false
    openshift_disable_check=disk_availability,memory_availability

    os_firewall_use_firewalld=true

    openshift_public_hostname=console.1.1.0.1.nip.io
    openshift_master_default_subdomain=apps.1.1.0.1.nip.io

    openshift_storage_glusterfs_is_native=false
    openshift_storage_glusterfs_storageclass=true
    openshift_storage_glusterfs_heketi_is_native=true
    openshift_storage_glusterfs_heketi_executor=ssh
    openshift_storage_glusterfs_heketi_ssh_port=22
    openshift_storage_glusterfs_heketi_ssh_user=root
    openshift_storage_glusterfs_heketi_ssh_sudo=false
    openshift_storage_glusterfs_heketi_ssh_keyfile="/root/.ssh/id_rsa

    [masters]
    1.1.0.1 openshift_ip=1.1.0.1 openshift_schedulable=true

    [etcd]
    1.1.0.1  openshift_ip=1.1.0.1    

    [nodes]
    1.1.0.1  openshift_ip=1.1.0.1  openshift_node_group_name="node-config-all-in-one"  openshift_schedulable=true

    [glusterfs]
    1.1.0.1  glusterfs_devices='[ "/dev/vdb" ]'

现在我们必须破解ansible脚本,因为它期望通过在跟随ansible脚本的后面添加-无持久性来期望三个节点

openshift-ansible/roles/openshift_storage_glusterfs/tasks/heketi_init_db.yml

以下是更新的代码段

- name: Create heketi DB volume
  command: "{{ glusterfs_heketi_client }} setup-openshift-heketi-storage --image {{ glusterfs_heketi_image }} --listfile /tmp/heketi-storage.json --durability none"
  register: setup_storage

默认情况下,它会创建需要复制环境的StorageClass,因此我们必须使用“ volumetype:none”创建如下所示的自定义存储类

oc create -f - <<EOT
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: glusterfs-nr-storage
  annotations:
    storageclass.beta.kubernetes.io/is-default-class: "true"
parameters:
  resturl: http://heketi-storage.glusterfs.svc:8080
  restuser: admin
  secretName: heketi-storage-admin-secret
  secretNamespace: glusterfs
  volumetype: none
provisioner: kubernetes.io/glusterfs
volumeBindingMode: Immediate
EOT

现在您可以从webconsole动态创建存储:)欢迎提出任何改进建议。

接下来,我将检查如何扩展它?