【问题标题】:multi master OKD-3.11 setup fails if master-1 nodes is down如果 master-1 节点关闭,则多主 OKD-3.11 设置失败
【发布时间】:2020-12-11 10:14:30
【问题描述】:

我正在尝试根据官方文档中的清单文件在 openstack 虚拟机中安装多主 openshift-3.11 设置。

https://docs.openshift.com/container-platform/3.11/install/example_inventories.html#multi-masters-single-etcd-using-native-ha

OKD版本
[centos@master1 ~]$ oc version
oc v3.11.0+62803d0-1
kubernetes v1.11.0+d4cacc0
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://master1.167.254.204.74.nip.io:8443
openshift v3.11.0+ff2bdbd-531
kubernetes v1.11.0+d4cacc0
复制步骤

根据此处提到的清单文件,启动 okd-3.11 多主机设置, https://docs.openshift.com/container-platform/3.11/install/example_inventories.html#multi-masters-single-etcd-using-native-ha

当前结果

设置成功,但遇到如下两个问题,

  1. 在发出“oc get nodes”命令时无法列出负载平衡器节点。
[centos@master1 ~]$ oc get nodes
NAME                            STATUS    ROLES          AGE       VERSION
master1.167.254.204.74.nip.io   Ready     infra,master   6h        v1.11.0+d4cacc0
master2.167.254.204.58.nip.io   Ready     infra,master   6h        v1.11.0+d4cacc0
master3.167.254.204.59.nip.io   Ready     infra,master   6h        v1.11.0+d4cacc0
node1.167.254.204.82.nip.io     Ready     compute        6h        v1.11.0+d4cacc0
  1. 主节点和负载均衡器完全依赖于 master-1 节点,因为如果 master-1 关闭,则其余主节点或负载均衡器无法运行任何 oc 命令,
[centos@master2 ~]$ oc get nodes
Unable to connect to the server: dial tcp 167.254.204.74:8443: connect: no route to host

如果其他主节点(master-1 除外)或负载均衡器出现故障,OKD 设置工作正常。

预期结果

尽管任何一个主节点出现故障,但 OKD 设置应该已启动并运行。

库存文件:

[OSEv3:children]
masters
nodes
etcd
lb

[masters]
master1.167.254.204.74.nip.io
master2.167.254.204.58.nip.io
master3.167.254.204.59.nip.io

[etcd]
master1.167.254.204.74.nip.io
master2.167.254.204.58.nip.io
master3.167.254.204.59.nip.io

[lb]
lb.167.254.204.111.nip.io

[nodes]
master1.167.254.204.74.nip.io openshift_ip=167.254.204.74 openshift_schedulable=true openshift_node_group_name='node-config-master'
master2.167.254.204.58.nip.io openshift_ip=167.254.204.58 openshift_schedulable=true openshift_node_group_name='node-config-master'
master3.167.254.204.59.nip.io openshift_ip=167.254.204.59 openshift_schedulable=true openshift_node_group_name='node-config-master'
node1.167.254.204.82.nip.io openshift_ip=167.254.204.82 openshift_schedulable=true openshift_node_group_name='node-config-compute'

[OSEv3:vars]
debug_level=4
ansible_ssh_user=centos
ansible_become=true
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
openshift_enable_service_catalog=true
ansible_service_broker_install=true

openshift_node_groups=[{'name': 'node-config-master', 'labels': ['node-role.kubernetes.io/master=true', 'node-role.kubernetes.io/infra=true']}, {'name': 'node-config-compute', 'labels': ['node-role.kubernetes.io/compute=true']}]

containerized=false
os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant'
openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability

deployment_type=origin
openshift_deployment_type=origin

openshift_release=v3.11.0
openshift_pkg_version=-3.11.0
openshift_image_tag=v3.11.0
openshift_service_catalog_image_version=v3.11.0
template_service_broker_image_version=v3.11
osm_use_cockpit=true

# put the router on dedicated infra1 node
openshift_master_cluster_method=native
openshift_master_default_subdomain=sub.master1.167.254.204.74.nip.io
openshift_public_hostname=master1.167.254.204.74.nip.io
openshift_master_cluster_hostname=master1.167.254.204.74.nip.io

请让我知道对 master-node-1 的整个设置依赖项以及解决此问题的任何解决方法。

【问题讨论】:

    标签: docker kubernetes openshift openshift-origin okd


    【解决方案1】:

    您应该将 LB 主机名配置为 openshift_master_cluster_hostnameopenshift_master_cluster_public_hostname,而不是主主机名。 如您的配置,如果您将其配置为 master1,那么所有 API 入口点将是 master1,因此如果 master1 停止,则所有 API 服务都将关闭。

    您应该预先配置您的 LB 以对您的主节点进行负载平衡,并将 LB IP(AKA VIP)注册到 DNS 为ocp-cluster.example.com。 此主机名将成为 OCP API 的入口点,您可以使用 openshift_master_cluster_hostnameopenshift_master_cluster_public_hostname 进行设置。

    openshift_master_cluster_method=native
    openshift_master_cluster_hostname=ocp-cluster.example.com
    openshift_master_cluster_public_hostname=ocp-cluster.example.com
    

    【讨论】:

    • 按照您的建议更新变量后,如果其中一个主节点关闭,OKD 设置工作正常。但是当两个主节点宕机时,oc 命令会抛出 ``` [centos@master2 ~]$ oc get nodes No resources found。无法连接到服务器:EOF ``` 我在库存文件中添加的变量是,``` openshift_master_cluster_method=native openshift_public_hostname=lb.167.254.204.111.nip.io openshift_master_cluster_hostname=lb.167.254.204.111.nip.io ```
    • 当我看到您的库存时,etcd 正在每个主节点上运行。因此,如果两个 master 宕机,etcd quorum 将被破坏,您的 OCP 集群将无法工作。这是预期的行为。
    • 所以要处理这种情况,我们需要使用单独的机器作为 etcd 而不是 master master。请建议是否可以用最少的 etcd 节点(可能少于 3 个)启动 3 个主节点。
    • AFAIK 安装程序不支持它,但它在技术上是可用的。但不幸的是,我没有这方面的信息。因此,您将通过Restoring etcd quorum for static pods 开发程序。例如,先安装 3 个 etcd,安装后可以移除 2 个成员,并使用ETCD_FORCE_NEW_CLUSTER=true 将仲裁恢复为一个成员集群,用于构建一个 etcd 集群。你需要这个测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多