2.2. 环境要求
以下部分定义包含 OpenShift Container Platform 配置的环境要求。这包括网络注意事项,以及对外部服务的访问,如 Git 存储库访问、存储和云基础架构供应商。
2.2.1. DNS 要求
OpenShift Container Platform 需要环境中具有一个可以全面正常工作的 DNS 服务器。理想的情况是,在一个单独的主机上运行 DNS 软件,为平台上运行的主机和容器提供名称解析服务。
只在每个主机的 /etc/hosts 文件中添加条目并不够。此文件不会被复制到平台上运行的容器中。
OpenShift Container Platform 的主要组件在容器内运行,并使用以下流程进行名称解析:
- 默认情况下,容器从它们的主机中接收 DNS 配置文件(/etc/resolv.conf)。
- 然后,OpenShift Container Platform 将 pod 的第一个名称服务器设置为节点的 IP 地址。
从 OpenShift Container Platform 3.2 开始,在所有 master 和节点上自动配置 dnsmasq。pod 使用节点作为其 DNS,节点会转发请求。默认情况下,dnsmasq 被配置为侦听节点上的端口 53,因此节点无法运行任何其他类型的 DNS 应用程序。
NetworkManager 是提供自动连接到网络的系统的检测和配置程序。节点上需要它以便使用 DNS IP 地址填充 dnsmasq。
默认将 NM_CONTROLLED
设置为 yes
。如果 NM_CONTROLLED
被设置为 no
,则 NetworkManager 分配脚本不会创建相关的 origin-upstream-dns.conf dnsmasq 文件,您必须手动配置 dnsmasq。
同样,如果在网络脚本中将 PEERDNS
参数设置为 no
,例如 /etc/sysconfig/network-scripts/ifcfg-em1,则 dnsmasq 文件不会被生成,Ansible 安装将失败。确定将 PEERDNS
设置设定为 yes
。
以下是 DNS 记录示例:
master1 A 10.64.33.100 master2 A 10.64.33.103 node1 A 10.64.33.101 node2 A 10.64.33.102
如果没有可以正常工作的 DNS 环境,则可能会遇到以下问题:
- 通过引用基于 Ansible 的脚本进行产品安装
- 部署基础架构容器(registry、路由器)
- 访问 OpenShift Container Platform Web 控制台,因为它只能通过 IP 地址访问
2.2.1.1. 配置主机使用 DNS
确保将环境中的每个主机配置为从 DNS 服务器解析主机名。主机 DNS 解析的配置取决于是否启用了 DHCP。如果 DHCP 是:
- 禁用,将网络接口配置为静态,并在 NetworkManager 中添加 DNS 名称服务器。
- 启用,NetworkManager 分配脚本根据 DHCP 配置自动配置 DNS。
验证您的 DNS 服务器可以解析主机:
检查 /etc/resolv.conf 文件的内容:
$ cat /etc/resolv.conf # Generated by NetworkManager search example.com nameserver 10.64.33.1 # nameserver updated by /etc/NetworkManager/dispatcher.d/99-origin-dns.sh
在这个示例中,10.64.33.1 是 DNS 服务器的地址。
测试 /etc/resolv.conf 中列出的 DNS 服务器是否可以解析到 OpenShift Container Platform 环境中所有 master 和节点的 IP 地址:
$ dig <node_hostname> @<IP_address> +short
例如:
$ dig master.example.com @10.64.33.1 +short 10.64.33.100 $ dig node1.example.com @10.64.33.1 +short 10.64.33.101
2.2.1.2. 配置 DNS 通配符
另外,还可为路由器配置通配符,以便在添加新路由时无需更新 DNS 配置。如果您为路由器配置通配符,请在配置 Ansible 清单文件 时将 openshift_master_default_subdomain
参数设置为这个值。
DNS 区的通配符最终必须解析为 OpenShift Container Platform router 的 IP 地址。
例如,为 cloudapp 创建通配符 DNS 条目,该条目的 Time-to-live 值较低(TTL),并指向要部署路由器的主机的公共 IP 地址:
*.cloudapps.example.com. 300 IN A 192.168.133.2
在每个节点主机上的 /etc/resolv.conf 文件中,确保具有通配符条目的 DNS 服务器没有列为名称服务器,或者通配符域不在搜索列表中列出。否则,由 OpenShift Container Platform 管理的容器可能无法正确解析主机名。
2.2.1.3. 配置节点主机名
在设置不使用云供应商环境的集群时,您必须正确设置节点的主机名。每个节点的主机名必须可以被解析,每个节点必须能够访问其他节点。
确认节点可以访问另一个节点:
在一个节点上,获取主机名:
$ hostname master-1.example.com
在同一节点上,获取主机的完全限定域名:
$ hostname -f master-1.example.com
在另外一个节点中,确认您可以访问到第一个节点:
$ ping master-1.example.com -c 1 PING master-1.example.com (172.16.122.9) 56(84) bytes of data. 64 bytes from master-1.example.com (172.16.122.9): icmp_seq=1 ttl=64 time=0.319 ms --- master-1.example.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.319/0.319/0.319/0.000 ms