概述

使用Ansible playbook是安装OpenShift容器平台集群的高级安方法。在你熟悉Ansible的前提下,可以使用此配置作为参考,实现自定义化的配置。

准备开始

在安装OpenShift Container Platform之前,您必须首先确保已经完成配置的第二章的先决条件主机准备主题。这包括对每个组件类型的系统和环境要求进行验证,并正确安装和配置Docker。它还包括安装可执行版本2.2.0或更高版本,因为高级安装方法基于Ansible playbooks。

如果您有兴趣使用容器化方法安装OpenShift容器平台,请参阅在容器化主机安装,以确保您了解这些方法之间的差异,然后返回到此主题继续。

对于大规模安装,包括优化安装时间的建议,请参阅“扩展和性能指南”

配置Ansible Inventory Files

/ etc / ansible /hosts文件是Ansible的库存文件,用来安装OpenShift Container Platform。库存文件描述了OpenShift Container Platform集群的配置。根据需求重新设置,替换默认内容。以下部分描述了高级安装在库存文件中设置的常用变量,库存文件示例

多数Ansible参量是可选的,默认值应足以满足开发环境,但对于生产环境,建议您阅读并熟悉各种可用选项。

库存文件实例描述了各种环境的拓扑状态,包括使用多个master实现高可用性。您可以选择符合您的要求的示例,修改它以匹配您自己的环境,并在运行高级安装时使用。

配置集群变量

安装环境变量使得能在Openshift Container Platform中全局使用,可在[OSEv3:vars]段中的/ etc / ansible / hosts文件中指定所需的变量:

[OSEv3:vars]
openshift_master_identity_providers=[{'name': 'htpasswd_auth',
'login': 'true', 'challenge': 'true',
'kind': 'HTPasswdPasswordIdentityProvider',
'filename': '/etc/origin/master/htpasswd'}]

openshift_master_default_subdomain=apps.test.example.com

下表描述了可以分配到群集范围的安装变量:

变量 目的
ansible_ssh_user 此变量设置默认的SSH用户为root。该用户应该允许基于SSH的身份验证,而不需要使用密码。如果使用基于SSH密钥的身份验证,则密钥应由SSH代理管理。
ansible_become 如果ansible_ssh_user不是root,则必须将此变量设置为true,并且用户必须配置为无密码sudo
debug_level 该变量设置哪些INFO消息被记录到systemd-journald.service。设置成以下之一:0仅记录错误和警告2记录正常信息(这是默认级别。)4记录调试级信息6记录API级调试信息(请求/响应)8记录身体级API调试信息有关调试日志级别的更多信息,请参阅配置日志记录级别
containerized 如果设置true,集装箱化的OpenShift容器平台服务在群集中的所有目标主节点和节点主机上运行,​​而不是使用RPM包安装。如果设置为false或未设置,则使用默认RPM方法。RHEL Atomic Host需要容器化方法,并根据检测到/ run / ostree启动的文件自动为您选择。有关详细信息,请参阅在集装箱主机上安装。从OpenShift Container Platform 3.1.1开始支持集装箱化的安装。
openshift_master_cluster_hostname 此变量覆盖集群的主机名,默认为master的主机名。
openshift_master_cluster_public_hostname 该变量覆盖集群的公共主机名,默认为master的主机名。
openshift_master_cluster_method 可选。此变量定义部署多个主节点时的HA方法。支持该native方法。有关详细信息,请参阅多大师
openshift_rolling_restart_mode 当直接运行升级playbook时,该变量可以重新启动HA主机(即masters被一次取消)。它默认为services允许在主机上回滚重新启动服务。它可以被设置为system,其允许回滚,完全系统重新启动,并且也适用于单个主群集。
os_sdn_network_plugin_name 此变量配置用于pod网络的OpenShift SDN插件,默认redhat/openshift-ovs-subnet为标准SDN插件。将变量设置redhat/openshift-ovs-multitenant为使用多租户插件。
openshift_master_identity_providers 此变量覆盖身份提供者,默认为“拒绝全部”
openshift_master_named_certificates /openshift_master_overwrite_named_certificates 这些变量用于配置作为安装一部分部署的自定义证书。有关详细信息请参阅配置自定义证书
openshift_hosted_registry_cert_expire_days 自动生成的注册表证书的有效期。默认为730(2年)。
openshift_ca_cert_expire_days 自动生成CA证书的有效期。默认为1825(5年)。
openshift_node_cert_expire_days 自动生成节点证书的有效期。默认为730(2年)。
openshift_master_cert_expire_days 自动生成的主证书的有效期为天。默认为730(2年)。
etcd_ca_default_days 自动生成的外部etcd证书的有效期。控制etc,CA,对等体,服务器和客户端证书的有效性。默认为1825(5年)。
os_firewall_use_firewalld 设置为true使用firewalld而不是默认的iptables。RHEL原子主机不可用。有关详细信息,请参阅配置防火墙部分。
openshift_master_session_name /openshift_master_session_max_seconds /openshift_master_session_auth_secrets / openshift_master_session_encryption_secrets 这些变量会覆盖OAuth配置中会话选项的默认值。有关详细信息,请参阅配置会话选项
openshift_portal_net 此变量配置在OpenShift容器平台SDN中将创建服务的子网。该网络块应该是私有的,并且不得与您的基础设施中任何现有的网络块(pod,node,master)冲突,否则安装将失败。默认为172.30.0.0/16,并且不能在部署后重新配置。如果需要改动默认值,避免使用172.17.0.0/16,因为该网段为docker0的默认网桥。
openshift_master_default_subdomain 此变量覆盖用于暴露路由的默认子域。
openshift_node_proxy_mode 此变量指定要使用的服务代理模式iptables默认,纯iptables实现或userspace用户空间代理。
osm_default_node_selector 此变量将覆盖项目在放置pod时默认使用的节点选择器。
osm_cluster_network_cidr 该变量覆盖SDN群集网络CIDR块。该网络是私有网络,用于分配Pod的IP,且不得与您的基础设施中存在的网络块冲突(pod、node、master)。默认的网络为10.128.0.0/14,虽然在SDN主配置中可以进行某些更改,但不能在部署后任意重新配置。
osm_host_subnet_length 此变量指定OpenShift Container Platform SDN为pod IP分配的每个主机子网的大小。默认值是9指每个主机分配大小为/23的子网;例如,给定默认的10.128.0.0/14集群网络,这将分配10.128.0.0/23,10.128.2.0/23,10.128.4.0/23等。该变量部署后无法重新配置。
openshift_use_flannel 该变量使flannel作为替代网络层而不是默认SDN。如果启用flannel,请关闭SDN中openshift_use_openshift_sdn变量。有关详细信息,请参见Using Flannel
openshift_docker_insecure_registries OpenShift Container Platform将指定的额外的注册表添加到docker配置。
openshift_docker_blocked_registries OpenShift Container Platform将指定的阻止注册表添加到docker配置。
openshift_hosted_metrics_public_url 此变量通过覆盖metricsPublicURL的master来配置集群度量值。如果您更改此变量,请确保主机名可通过路由器访问。有关详细信息,请参阅配置集群度量

配置部署类型

整个安装程序使用的各种默认设置都是基于部署类型配置(通常在可选清单文件中定义)。

确保deployment_type在inventory文件[OSEv3:vars]中设置为openshift-enterprise

[OSEv3:vars]

deployment_type = openshift-enterprise

配置主机变量

要在Ansible安装环境下将环境变量分配给主机,请在主机输入[masters][nodes]部分后的/ etc / ansible / hosts文件中指定所需的变量。例如:

[masters]
ec2-52-6-179-239.compute-1.amazonaws.com openshift_public_hostname=ose3-master.public.example.com

下表描述了可以分配给各个主机条目的可配置安装程序使用的变量:

变量 目的
openshift_hostname 此变量将覆盖系统的内部集群主机名。当系统的默认IP地址无法解析为系统主机名时,请使用此选项。
openshift_public_hostname 该变量覆盖系统的公共主机名。将其用于云安装,或使用网络地址转换(NAT)的网络上的主机。
openshift_ip 该变量覆盖系统的集群内部IP地址。使用未配置默认路由的接口时使用。
openshift_public_ip 该变量覆盖系统的公共IP地址。将其用于云安装,或使用网络地址转换(NAT)的网络上的主机。
containerized 如果设置为true,则集装式OpenShift Container Platform服务将在目标主节点和节点主机上运行,​​而不是使用RPM软件包进行安装。如果设置为false或未设置,则使用默认的RPM方法。RHEL Atomic Host需要容器化方法,并根据检测到/ run / ostree启动的文件自动为您选择。有关详细信息,请参阅在集装箱主机上安装。从OpenShift Container Platform 3.1.1开始支持集装箱化的安装。
openshift_node_labels 此变量在安装期间向节点添加标签。有关详细信息,请参阅配置节点主机标签
openshift_node_kubelet_args 此变量用于kubeletArguments在节点上配置,例如在容器和映像垃圾回收中使用的参数,并指定每个节点的资源kubeletArguments是直接传递到与Kubelet的命令行参数匹配的Kubelet的键值对kubeletArguments没有迁移或验证,如果使用可能会变得无效。这些值将覆盖节点配置中可能导致无效配置的其他设置。示例用法:{'image-gc-high-threshold':['90'],'image-gc-low-threshold':['80']}
openshift_hosted_router_selector 用于自动部署路由器端口的默认节点选择器。请参阅配置节点主机标签的详细信息。
openshift_registry_selector 用于自动部署注册表窗格的默认节点选择器。请参阅配置节点主机标签的详细信息。
openshift_docker_options 此变量配置/ etc / sysconfig / docker中的其他Docker选项,例如管理容器日志中使用的选项。示例用法:“--log-driver json-file --log-opt max-size = 1M --log-opt max-file = 3”
openshift_schedulable 该变量配置主机是否被标记为可调度节点,这意味着它可用于放置新的pod。请参阅在主节点上配置计划

配置注册表位置

如果您使用默认情况下的映像注册表registry.access.redhat.com,请在/ etc / ansible / hosts文件中指定所需的注册表。

oreg_url=example.com/openshift3/ose-${component}:${version}
openshift_examples_modify_imagestreams=true
变量 目的
oreg_url 设置为备用图像位置。如果您没有使用默认注册表,则必需registry.access.redhat.com
openshift_examples_modify_imagestreams 设置为true如果指向注册表以外的默认值。将图像流位置修改为值oreg_url

配置全局代理选项

如果您的主机需要使用HTTP或HTTPS代理才能连接到外部主机,则必须配置许多组件以使用代理,包括主机,Docker和构建。节点服务仅连接到不需要外部访问的主API,因此不需要配置为使用代理。

为了简化此配置,可以在集群或主机级别指定以下可复制的变量,以便在整个环境中统一应用这些设置。

@提示:有关如何为构建定义代理环境的更多信息,请参阅配置全局构建默认值和覆盖。

变量 目的
openshift_http_proxy 此变量指定HTTP_PROXY主器件和Docker守护程序的环境变量。
openshift_https_proxy 该变量指定HTTPS_PROXY了主器件和Docker守护程序的环境变量。
openshift_no_proxy 该变量用于为主设备NO_PROXY和Docker守护程序设置环境变量。该值应设置为不应使用定义的代理的主机名或通配符主机名的逗号分隔列表。默认情况下,此列表将扩展为所有定义的OpenShift Container Platform主机名称列表。
openshift_generate_no_proxy_hosts 该布尔变量指定所有定义的OpenShift主机的名称是否*.cluster.local应自动附加到NO_PROXY列表中。默认为true;将其设置为false可覆盖此选项。
openshift_builddefaults_http_proxy 该变量HTTP_PROXY使用BuildDefaults入站控制器定义插入到构建中的环境变量。如果openshift_http_proxy设置,该变量将继承该值;你只需要设置这个,如果你希望你的构建使用不同的值。
openshift_builddefaults_https_proxy 该变量HTTPS_PROXY使用BuildDefaults入站控制器定义插入到构建中的环境变量。如果openshift_https_proxy设置,该变量将继承该值;你只需要设置这个,如果你希望你的构建使用不同的值。
openshift_builddefaults_no_proxy 该变量NO_PROXY使用BuildDefaults入站控制器定义插入到构建中的环境变量。如果openshift_no_proxy设置,该变量将继承该值;你只需要设置这个,如果你希望你的构建使用不同的值。
openshift_builddefaults_git_http_proxy 此变量定义了git clone在构建过程中使用的代理使用的HTTP代理,使用BuildDefaults入站控制器进行定义。如果openshift_builddefaults_http_proxy设置,该变量将继承该值;如果您希望您的git clone操作使用不同的值,则只需要设置此项。
openshift_builddefaults_git_https_proxy 此变量定义git clone了构建过程中使用的HTTPS代理,该代理使用BuildDefaults接纳控制器进行定义。如果openshift_builddefaults_https_proxy设置,该变量将继承该值;如果您希望您的git clone操作使用不同的值,则只需要设置此项。

配置防火墙

!警告:如果要更改默认防火墙,请确保集群中的每个主机都使用相同的防火墙类型来防止不一致。

@提示:OpenShift容器平台使用iptables作为默认防火墙,但您可以在安装过

OpenShift容器平台使用iptables作为默认防火墙,但您可以在安装过程中将集群配置为使用firewalld。

因为iptables是默认防火墙,所以OpenShift Container Platform会自动配置它。但是如果配置不正确,iptables规则可能会破坏OpenShift Container Platform。防火墙的优点:允许许多个对象安全地共享防火墙规则。

要使用firewalld作为OpenShift Container Platform安装的防火墙,请将该os_firewall_use_firewalld变量添加到可安装主机文件中的配置变量列表中:

[OSEv3:vars]
os_firewall_use_firewalld=True

配置主机的可调度性

任何master设备都应具有node的属性,以便将mster设备配置为OpenShift SDN的一部分。您必须通过将master的条目添加到[nodes]部分:

[nodes]
master.example.com

为了确保主机可以在多个pod下顺利运行,默认情况下,安装程序会自动标记为不可调度,这意味着新的pod不能安装在原有运行的主机上。这与设置openshift_schedulable=false主机变量相同。

您可以使用openshift_schedulable=true主机变量在安装期间手动将主机设置为可调度,尽管在生产环境中不建议这样做:

[nodes]
master.example.com openshift_schedulable=true

如果要更改主机安装后的可调度性,请参阅将节点标记为不可计划或可计划

配置节点主机标签

您可以通过配置/ etc / ansible / hosts文件在Ansible安装期间为节点主机分配标签。标签可用于使用调度程序确定pod在节点上的位置。除了region=infra(在配置专用基础设施节介绍)以外,实际的标签名称和值是任意可以分配,您可以根据集群的要求进行分配。

要在可安装期间为节点主机分配标签,请在该部分中使用openshift_node_labels添加到所需节点主机条目的所需标签的变量[nodes]。在以下示例中,为所称的区域primary和称为“区域”设置标签east

[nodes]
node1.example.com openshift_node_labels="{'region': 'primary', 'zone': 'east'}"

配置专用基础设施节点

openshift_router_selectoropenshift_registry_selector为标签选择器,设置注册表和路由端口时使用。region=infra为默认设置:

#路由器和注册表服务的默认选择器

#openshift_router_selector ='region = infra'

#openshift_registry_selector ='region = infra'

当需要的node节点设置在[nodes]中时,会自动部署默认路由器和注册表。例如:

[nodes]
infra-node1.example.com openshift_node_labels="{'region': 'infra','zone': 'default'}"

!警告:注册表和路由器只能在具有region=infra标签的节点主机上运行。确保OpenShift Container Platform环境中至少有一个节点主机具有region=infra标签。

建议用于维护专用基础设施节点的生产环境中,注册表和路由器端口在不同的pod上分开运行。

如在“主机配置计划”中所述,默认情况下被标记为master的设备是不可扩展的。如果您标记 了master主机为region=infra且没有其他专用基础架构的节点,否则,注册表和路由器端口不能被添加:

[nodes]
master.example.com openshift_node_labels="{'region': 'infra','zone': 'default'}" openshift_schedulable=true

配置会话选项

OAuth配置中的会话选项可在inventory file库存文件中进行配置。默认情况下,Ansible会sessionSecretsFile使用生成的身份验证和加密密码填充,以便一个主服务器生成的会话可以被其他主机解码。默认位置为/etc/origin/master/session-secrets.yaml,只有在所有主设备上删除时,才会重新创建此文件。

您可以设置会话名称以及与最大秒数openshift_master_session_nameopenshift_master_session_max_seconds

openshift_master_session_name = SSN

openshift_master_session_max_seconds = 3600

如果提供,openshift_master_session_auth_secrets并且openshift_master_encryption_secrets长度必须相等。

对于openshift_master_session_auth_secrets,用于使用HMAC认证会话,建议使用32或64字节的秘密:

openshift_master_session_auth_secrets = [ 'DONT + USE + THIS + SECRET + b4NV + pmZNSO']

Foropenshift_master_encryption_secrets,用于加密会话,秘密长度必须为16,24或32个字符,以选择AES-128,AES-192或AES-256:

openshift_master_session_encryption_secrets = [ 'DONT + USE + THIS + SECRET + b4NV + pmZNSO']

配置自定义证书

可以在高级安装期间部署OpenShift Container Platform API和Web控制台的公共主机名的自定义服务证书,并可在库存文件中进行配置。

@提示:只能为与publicMasterURL可以设置的主机名相关联的主机名配置自定义证书openshift_master_cluster_public_hostname。与masterURL(openshift_master_cluster_hostname)相关联的主机名使用自定义的服务证书将导致TLS错误,因为基础架构组件将尝试使用内部masterURL主机联系主API。

证书和密钥文件路径可以使用openshift_master_named_certificates集群变量进行配置:

openshift_master_named_certificates = [{“certfile”:“/path/to/custom1.crt”,“keyfile”:“/path/to/custom1.key”}]

文件路径必须位于可运行Ansible的系统的本地。证书被复制到主主机,并部署在/ etc / origin / master / named_certificates /目录中。

可以检测证书Common NameSubject Alternative Names。检测到的名称可以"names"在设置时提供密钥来覆盖openshift_master_named_certificates

openshift_master_named_certificates = [{“certfile”:“/path/to/custom1.crt”,“keyfile”:“/path/to/custom1.key”,“names”:[“public-master-host.com”]} ]

使用配置的证书openshift_master_named_certificates被缓存在主设备上,这意味着使用不同的一组证书的每个附加的“可执行”运行都会导致主主机和主配置文件中剩余的所有以前部署的证书。

如果openshift_master_named_certificates要使用提供的值(或无值)覆盖,请指定openshift_master_overwrite_named_certificates集群变量:

openshift_master_overwrite_named_certificates =true

有关更完整的示例,请考虑清单文件中的以下集群变量:

openshift_master_cluster_method = native

openshift_master_cluster_hostname = lb.openshift.com

openshift_master_cluster_public_hostname = custom.openshift.com

要在随后的“可执行”运行中覆盖证书,可以设置以下内容:

openshift_master_named_certificates = [{“certfile”:“/root/STAR.openshift.com.crt”,“keyfile”:“/root/STAR.openshift.com.key”,“names”:[“custom.openshift.com” ]}]

openshift_master_overwrite_named_certificates =true

配置证书有效性

默认情况下,用于管理etcd,master和kubelet的证书在两到五年后过期。可以使用以下变量(默认值显示)在安装过程中配置自动生成的注册表,CA,节点和主证书的有效期(以天为单位)。

[OSEv3:vars]

openshift_hosted_registry_cert_expire_days = 730

openshift_ca_cert_expire_days = 1825

openshift_node_cert_expire_days = 730

openshift_master_cert_expire_days = 730

etcd_ca_default_days = 1825

当通过可安装的安装重新部署证书时,也会使用这些值。

配置集群度量

默认情况下,集群度量未设置为自动部署。设置以下内容以在使用高级安装时启用集群度量标准:

[OSEv3:瓦尔]


openshift_hosted_metrics_deploy=true

OpenShift Container Platform Web控制台使用来自Hawkular Metrics服务的数据显示其图形。可以使用“openshift_hosted_metrics_public_url可选”变量在群集安装期间设置度量标准公用URL,默认值为:

https://hawkular-metrics.{{openshift_master_default_subdomain}}/hawkular/metrics

如果您更改此变量,请确保主机名可通过路由器访问。

配置度量存储

openshift_metrics_cassandra_storage_type变量必须以使用持久性存储的指标来设定。如果openshift_metrics_cassandra_storage_type未设置,则集群度量数据存储在EmptyDir卷中,当Cassandra pod终止时,该数据将被删除。

使用高级安装时,有三个选项用于启用集群度量标准存储:

选项A:NFS主机组

设置以下变量时,将在主机组内的主机上使用路径<nfs_directory> / <volume_name>进行高级安装时创建NFS卷[nfs]。例如,使用这些选项的卷路径将是/ exports / metrics

[OSEv3:vars]

openshift_hosted_metrics_storage_kind=nfs
openshift_hosted_metrics_storage_access_modes=['ReadWriteOnce']
openshift_hosted_metrics_storage_nfs_directory=/exports
openshift_hosted_metrics_storage_nfs_options='*(rw,root_squash)'
openshift_hosted_metrics_storage_volume_name=metrics
openshift_hosted_metrics_storage_volume_size=10Gi
选项B:外部NFS主机

要使用外部NFS卷,存储主机上必须存在路径为<nfs_directory> / <volume_name>的外部NFS卷。

[OSEv3:vars]

openshift_hosted_metrics_storage_kind=nfs
openshift_hosted_metrics_storage_access_modes=['ReadWriteOnce']
openshift_hosted_metrics_storage_host=nfs.example.com
openshift_hosted_metrics_storage_nfs_directory=/exports
openshift_hosted_metrics_storage_volume_name=metrics
openshift_hosted_metrics_storage_volume_size=10Gii

使用以下选项的远程卷路径将为nfs.example.com:/exports/metrics

选项C:动态

如果您的OpenShift容器平台环境支持云提供商的动态卷配置,请使用以下变量:

[OSEv3:vars]

openshift_metrics_cassandra_storage_type=dynamic

库存文件示例

单master示例

您可以使用单个master和多个node,以及单个嵌入式etcd或多个外置式的etcd主机来配置环境。

@提示:不支持在安装后从单个master集群迁移到多个master集群。

单master和多node

下表描述了单个主控(具有嵌入式等级)和两个节点的示例环境:

主机名 要安装的基础设施组件
master.example.com 主节点
node1.example.com 节点
node2.example.com 节点

您可以在以下示例清单文件的[masters][nodes]部分中看到这些示例主机:

单个主节点和多节点库存文件

#创建一个包含主节点和组节点的OSEv3组

[OSEv3:儿童]

主人

节点

#设置所有OSEv3主机通用的变量

[OSEv3:瓦尔]

#SSH用户,该用户应该允许基于ssh的auth而不需要密码

ansible_ssh_user =根

#如果ansible_ssh_user不是root,那么ansible_become必须设置为true

#ansible_become = TRUE

deployment_type = openshift企业

#取消注释以下内容以启用htpasswd身份验证; 
默认为DenyAllPasswordIdentityProvider

#penshift_master_identity_providers = [{'name':'htpasswd_auth','login':'true','challenge':'true','kind':'HTPasswdPasswordIdentityProvider','filename':'/ etc / origin / master / htpasswd “}]

#主机组主机

[主人]

master.example.com

#主机组的节点,包括区域信息

[节点]

master.example.com

node1.example.com openshift_node_labels =“{'region':'primary','zone':'east'}”

node2.example.com openshift_node_labels =“{'region':'primary','zone':'west'}”

infra-node1.example.com openshift_node_labels =“{'region':'infra','zone':'default'}”

infra-node2.example.com openshift_node_labels =“{'region':'infra','zone':'default'}”

要使用此示例,请修改文件以符合您的环境和规范,并将其另存为/ etc / ansible / hosts

单主,多等,多节点

下表描述了用于单个的示例环境,三台ETCD主机,以及两个节点

主机名 要安装的基础设施组件
master.example.com 主节点
etcd1.example.com ETCD
etcd2.example.com
etcd3.example.com
node1.example.com 节点
node2.example.com
指定多个etcd主机时,安装并配置externaletcd。不支持OpenShift Container Platform的嵌入式集群

您可以在以下示例清单文件的[masters][nodes][etcd]部分中看到这些示例主机:

单个主,多个等等和多个节点库存文件

#创建一个包含主节点,节点和etcd组的OSEv3组

[OSEv3:儿童]

主人

节点

ETCD

#设置所有OSEv3主机通用的变量

[OSEv3:瓦尔]

ansible_ssh_user =根

deployment_type = openshift企业

#取消注释以下内容以启用htpasswd身份验证; 
默认为DenyAllPasswordIdentityProvider

#penshift_master_identity_providers = [{'name':'htpasswd_auth','login':'true','challenge':'true','kind':'HTPasswdPasswordIdentityProvider','filename':'/ etc / origin / master / htpasswd “}]

#主机组主机

[主人]

master.example.com

#主机组等

[ETCD]

etcd1.example.com

etcd2.example.com

etcd3.example.com

#主机组的节点,包括区域信息

[节点]

master.example.com

node1.example.com openshift_node_labels =“{'region':'primary','zone':'east'}”

node2.example.com openshift_node_labels =“{'region':'primary','zone':'west'}”

infra-node1.example.com openshift_node_labels =“{'region':'infra','zone':'default'}”

infra-node2.example.com openshift_node_labels =“{'region':'infra','zone':'default'}”

要使用此示例,请修改文件以符合您的环境和规范,并将其另存为/ etc / ansible / hosts

多个硕士的例子

你可以配置多个主机,多个环境ETCD主机和多个节点。配置多个主站以实现高可用性(HA),确保集群没有单点故障。

不支持在安装后从单个主群集迁移到多个主群。

配置多个主控器时,高级安装支持以下高可用性(HA)方法:

native 利用OpenShift容器平台内置的本机HA主控功能,并可与任何负载平衡解决方案相结合。如果在清单文件的[lb]部分定义了主机,则Ansible将自动安装并配置HAProxy作为负载平衡解决方案。如果没有定义主机,则假定您已经预先配置了您选择的负载平衡解决方案,以平衡所有主主机上的主API(端口8443)。

对于您预先配置的负载平衡解决方案,您必须具有:

  • 为SSL通过配置的预先创建的负载平衡器VIP。

  • 在DNS中注册的VIP的域名。

    • 该域名将成为两者的价值openshift_master_cluster_public_hostname,并openshift_master_cluster_hostname在OpenShift平台的容器安装。

有关详细信息,请参阅外部负载平衡器集成

有关高可用性主机架构的更多信息,请参阅Kubernetes基础设施

使用nativeHA方法时请注意以下事项:

  • 高级安装方法当前不支持主动 - 被动设置中的多个HAProxy负载平衡器。有关安装后的修订,请参阅负载均衡器管理文档

  • 在HAProxy设置中,控制器管理器服务器作为独立进程运行。他们选择他们的积极的领导者存储在etcd的租约。默认情况下,租约将在30秒后过期。如果主动控制器服务器发生故障,则需要几秒钟才能选择另一个领导者。可以使用该osm_controller_lease_ttl变量配置间隔。

要配置多个主器件,请参阅以下部分。

多等级多师

下面描述三个的示例环境的主人,一个HAProxy的负载平衡器,三台ETCD主机,以及两个节点使用nativeHA方法:

主机名 要安装的基础设施组件
master1.example.com 主(使用本机HA集群)和节点
master2.example.com
master3.example.com
lb.example.com HAProxy负载平衡API主端点
etcd1.example.com ETCD
etcd2.example.com
etcd3.example.com
node1.example.com 节点
node2.example.com
指定多个etcd主机时,安装并配置externaletcd。不支持OpenShift Container Platform的嵌入式集群

您可以在以下示例清单文件的[masters][etcd][lb][nodes]部分中看到这些示例主机:

示例1.使用HAProxy库存文件的多个大师

#创建一个包含主节点,节点,etcd和lb组的OSEv3组。

#lb组允许Ansible将HAProxy配置为负载平衡解决方案。

#注释如果您的负载平衡器是预配置的,则输出。

[OSEv3:儿童]

主人

节点

ETCD

磅

#设置所有OSEv3主机通用的变量

[OSEv3:瓦尔]

ansible_ssh_user =根

deployment_type = openshift企业

#取消注释以下内容以启用htpasswd身份验证; 
默认为

#DenyAllPasswordIdentityProvider。

#penshift_master_identity_providers = [{'name':'htpasswd_auth','login':'true','challenge':'true','kind':'HTPasswdPasswordIdentityProvider','filename':'/ etc / origin / master / htpasswd “}]

#可选负载平衡器的本机高可用性集群方法。

#如果没有定义lb组,安装程序会假定负载平衡器已经有

#已预先配置。
对于安装的价值

#openshift_master_cluster_hostname必须解析为负载平衡器

#或者如果没有负载,则在清单中定义的一个或所有主人

#平衡器存在。

openshift_master_cluster_method =本地

openshift_master_cluster_hostname = openshift-cluster.example.com

openshift_master_cluster_public_hostname = openshift-cluster.example.com

#应用更新的节点默认值

“image-gc-high-threshold”:['90'],'image-gc-high-threshold':'''低阈值':['80']}

#覆盖默认的控制器租约ttl

#osm_controller_lease_ttl = 30

#在主机上启用ntp以确保正确的故障切换

openshift_clock_enabled =真

#主机组主机

[主人]

master1.example.com

master2.example.com

master3.example.com

#主机组等

[ETCD]

etcd1.example.com

etcd2.example.com

etcd3.example.com

#指定负载平衡器主机

[磅]

lb.example.com

#主机组的节点,包括区域信息

[节点]

主[1:3] .example.com的

node1.example.com openshift_node_labels =“{'region':'primary','zone':'east'}”

node2.example.com openshift_node_labels =“{'region':'primary','zone':'west'}”

infra-node1.example.com openshift_node_labels =“{'region':'infra','zone':'default'}”

infra-node2.example.com openshift_node_labels =“{'region':'infra','zone':'default'}”

要使用此示例,请修改文件以符合您的环境和规范,并将其另存为/ etc / ansible / hosts

主人和同等主机上的多个主人

下面描述三个的示例环境的主人ETCD每个主机,一个HAProxy的负载平衡器,以及两个上的节点使用nativeHA方法:

主机名 要安装的基础设施组件
master1.example.com 主机(使用本机HA集群)和每个主机上具有etcd的节点
master2.example.com
master3.example.com
lb.example.com HAProxy负载平衡API主端点
node1.example.com 节点
node2.example.com

您可以在以下示例清单文件的[masters][etcd][lb][nodes]部分中看到这些示例主机:

#创建一个包含主节点,节点,etcd和lb组的OSEv3组。

#lb组允许Ansible将HAProxy配置为负载平衡解决方案。

#注释如果您的负载平衡器是预配置的,则输出。

[OSEv3:儿童]

主人

节点

ETCD

磅

#设置所有OSEv3主机通用的变量

[OSEv3:瓦尔]

ansible_ssh_user =根

deployment_type = openshift企业

#取消注释以下内容以启用htpasswd身份验证; 
默认为

#DenyAllPasswordIdentityProvider。

#penshift_master_identity_providers = [{'name':'htpasswd_auth','login':'true','challenge':'true','kind':'HTPasswdPasswordIdentityProvider','filename':'/ etc / origin / master / htpasswd “}]

#可选负载平衡器的本机高可用性集群方法。

#如果没有定义lb组,安装程序会假定负载平衡器已经有

#已预先配置。
对于安装的价值

#openshift_master_cluster_hostname必须解析为负载平衡器

#或者如果没有负载,则在清单中定义的一个或所有主人

#平衡器存在。

openshift_master_cluster_method =本地

openshift_master_cluster_hostname = openshift-cluster.example.com

openshift_master_cluster_public_hostname = openshift-cluster.example.com

#覆盖默认的控制器租约ttl

#osm_controller_lease_ttl = 30

#主机组主机

[主人]

master1.example.com

master2.example.com

master3.example.com

#主机组等

[ETCD]

master1.example.com

master2.example.com

master3.example.com

#指定负载平衡器主机

[磅]

lb.example.com

#主机组的节点,包括区域信息

[节点]

主[1:3] .example.com的

node1.example.com openshift_node_labels =“{'region':'primary','zone':'east'}”

node2.example.com openshift_node_labels =“{'region':'primary','zone':'west'}”

infra-node1.example.com openshift_node_labels =“{'region':'infra','zone':'default'}”

infra-node2.example.com openshift_node_labels =“{'region':'infra','zone':'default'}”

要使用此示例,请修改文件以符合您的环境和规范,并将其另存为/ etc / ansible / hosts

运行高级安装

通过在/ etc / ansible / hosts中定义自己的库存文件或修改其中一个示例清单,完成了“可配置”配置后,请按照以下步骤运行高级安装:

  1. 如果您正在使用代理服务器,则必须将该etcd端点的IP地址添加到openshift_no_proxy清单文件中的集群变量中。

    | | 如果您不使用代理,可以跳过此步骤。 | | :--- | :--- |

在OpenShift Container Platform 3.4中,主机使用etcd端点的主机名连接到etcd集群。在OpenShift Container Platform 3.5中,主机现在通过IP地址连接到etcd。

在配置使用代理服务器设置集群(参见配置全局代理选项),这种变化会导致主机到ETCD连接到被代理为好,而不是在每个主机的被排除通过主机名NO_PROXY设置(见与HTTP代理工作的更多关于NO_PROXY)。

要解决此问题,请设置以下内容:

   openshift_no_proxy = HTTPS:// 
   <
   IP地址
   >
   :
   <
   端口
   >

使用主机将使用的IP来联系etcd集群<ip_address>。的<port>应该是2379如果使用的是独立ETCD(群集)或4001嵌入式ETCD(单主,非群集ETCD)。安装程序将在以后的版本中更新,以便在安装和升级过程中自动处理此场景(BZ#1466783)。

  1. 使用以下播放列表运行高级安装:

    #ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml
    

    如果由于任何原因安装失败,请在重新运行安装程序之前,请参阅已知问题以检查任何特定说明或解决方法。

  2. 安装成功后,继续验证安装

验证安装

安装完成后:

  1. 验证主机是否已启动,节点已注册,并且报告处于就绪状态。在主主机上,以root身份运行以下命令:

    #oc获取节点
    
    名称状态年龄
    
    master.example.com Ready,SchedulingDisabled 165d
    
    node1.example.com Ready 165d
    
    node2.example.com Ready 165d
    
  2. 要验证Web控制台是否正确安装,请使用主主机名和Web控制台端口号通过Web浏览器访问Web控制台。

    例如,对于主机名称为主机master.openshift.com并使用默认端口的主控主机,8443可以在其中找到Web控制台https://master.openshift.com:8443/console

  3. 现在,安装已经过验证,请在每个主节点和节点主机上运行以下命令,将原子开启复制到主机上的yumexclude列表中:

    #atomic-openshift-excluder exclude
    
控制台的默认端口是8443。如果在安装过程中发生更改,可以在/ etc / ansible / hosts文件中的openshift_master_console_port中找到该端口。

验证多个ETCD主机

如果您安装了多个etcd主机:

  1. 首先,验证安装了提供命令的etcdetcdctl

    #yum install etcd
    
  2. 在主主机上,验证etcd群集的健康状况,替换您的etcd主机的FQDN:

    #etcdctl -C \
    
        https://etcd1.example.com:2379,https://etcd2.example.com:2379,https://etcd3.example.com:2379 \
    
        --ca-file = / etc / origin / master / master.etcd-ca.crt \
    
        --cert-file = / etc / origin / master / master.etcd-client.crt \
    
        --key-file = / etc / origin / master / master.etcd-client.key cluster-health
    
  3. 还要验证会员列表是否正确:

    #etcdctl -C \
    
        https://etcd1.example.com:2379,https://etcd2.example.com:2379,https://etcd3.example.com:2379 \
    
        --ca-file = / etc / origin / master / master.etcd-ca.crt \
    
        --cert-file = / etc / origin / master / master.etcd-client.crt \
    
        --key-file = / etc / origin / master / master.etcd-client.key成员列表
    

使用HAPROXY验证多个主机

如果您使用HAProxy作为负载平衡器安装了多个主站,请根据[lb]部分定义浏览以下URL,并检查HAProxy的状态:

HTTP:// 
<
lb_hostname
>
:9000

您可以通过HAProxy配置文档来验证您的安装。

卸载OpenShift容器平台

您可以通过运行uninstall.yml_playbook来卸载_集群中的OpenShift Container Platform主机。本剧本删除了由Ansible安装的OpenShift Container Platform内容,包括:

  • 组态

  • 集装箱

  • 默认模板和图像流

  • 图片

  • RPM包

播放本将删除在运行播放时指定的清单文件中定义的任何主机的内容。如果您要在集群中的所有主机上卸载OpenShift Container Platform,请使用您最初安装OpenShift Container Platform时使用的库存文件运行该Playbook,或者运行最近:

#ansible-playbook [-i / path / to / file] \

    /usr/share/ansible/openshift-ansible/playbooks/adhoc/uninstall.yml

卸载节点

您还可以使用uninstall.yml播放器从特定主机卸载节点组件,同时保留剩余的主机和集群:

该方法只能在尝试卸载特定节点主机时使用,而不能用于特定的主节点或etcd主机,这将需要群集中的进一步配置更改。
  1. 首先按照删除节点中的步骤从集群中删除节点对象,然后继续执行此过程中的其余步骤。

  2. 创建仅引用这些主机的其他库存文件。例如,只能从一个节点删除内容:

    [OSEv3:儿童]
    
    节点 
    
    [OSEv3:瓦尔]
    
    ansible_ssh_user =根
    
    deployment_type = openshift企业
    
    [节点]
    
    node3.example.com openshift_node_labels =“{'region':'primary','zone':'west'}”
    

    | | 只包括与您有意卸载的主机相关的部分。 | | :--- | :--- | | | 只包括要卸载的主机。 |

  3. -i在运行_uninstall.yml_playbook时,使用该选项指定新的库存文件:

    #ansible-playbook -i / path / to / new / file \
    
        /usr/share/ansible/openshift-ansible/playbooks/adhoc/uninstall.yml
    

当Playbook完成时,所有OpenShift Container Platform内容都应该从任何指定的主机中删除。

已知的问题

  • 在多个主群集中进行故障转移时,控制器管理器可能会过度校正,这会导致系统运行比预期更多的pod。但是,这是一个暂时的事件,系统会随着时间的推移自行修正。有关详细信息,请参阅https://github.com/kubernetes/kubernetes/issues/10030

  • 在可安装的安装程序发生故障时,必须从干净的操作系统安装开始。如果您正在使用虚拟机,请从新鲜的图像开始。如果您使用裸机,请参阅卸载OpenShift容器平台以获取说明

results matching ""

    No results matching ""