OpenShift容器平台提供了多种方法将外部流量导入集群,使用路由是最常用方法。如果通信协议是HTTP / HTTPS或者TLS加密协议,则可以使用路由来实现从集群外部与集群中运行的服务进行通信。
路由器基于配置路径配置接受和代理外部请求。具体操作是通过一系列外部IP地址为该服务分配唯一的外部IP地址,每个IP地址应仅分配给一个服务,使用这些IP来公开外部流量可以到达的唯一的服务端点。使用 无类别域际路由(CIDR)选择表示法指定地址范围,该范围允许应用程序用户针对群集向外部IP地址发出请求。
前置条件
设置群集网络环境的外部端口,以便请求可以到达群集。例如,可以将名称配置到DNS中以指向群集中的特定节点或其他IP地址。该DNS通配符功能可用于人名的一个子集配置到集群中的一个IP地址。这使用户可以在群集内设置路由,而无需管理员进一步注意。
确保每个节点上的本地防火墙都允许请求到达IP地址。
配置OpenShift Container Platform集群以使用允许适当用户访问的身份提供程序。
确保至少有一个具有群集管理员角色的用户。要将此角色添加到用户,请运行以下命令:
oc adm policy add-cluster-role-to-user cluster-admin username
拥有一个具有至少一个主节点和至少一个节点的OpenShift容器平台集群,并且该集群外部的系统具有对集群的网络访问权限。此过程假定外部系统与群集位于同一子网中。在不同子网上的外部系统所需的其他联网不在范围之内。
定义公共IP范围
允许访问服务的第一步是在主配置文件中定义一个外部IP地址范围:
以具有群集管理员角色的用户身份登录OpenShift Container Platform。
$ oc login
Authentication required (openshift)
Username: admin
Password:
Login successful.
You have access to the following projects and can switch between them with 'oc project <projectname>':
* default
Using project "default".
重新启动OpenShift Container Platform主服务以应用更改。
# master-restart api
# master-restart controllers
IP地址池必须终止于群集中的一个或多个节点。
创建一个项目和服务
如果要公开的项目和服务不存在,请先创建项目,然后再创建服务。
如果项目和服务已经存在,请转到下一步:公开服务以创建路线。
登录到OpenShift容器平台。
为您的服务创建一个新项目:
$ oc new-project <project_name>
使用oc new-app命令创建服务:
$ oc new-app \
-e MYSQL_USER=admin \
-e MYSQL_PASSWORD=redhat \
-e MYSQL_DATABASE=mysqldb \
registry.redhat.io/openshift3/mysql-55-rhel7
例如:
运行以下命令以查看新服务已创建:
oc get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mysql-55-rhel7 172.30.131.89 <none> 3306/TCP 13m
默认情况下,新服务没有外部IP地址。
暴露服务来创建路由
您必须使用命令将服务公开为路由oc expose。
暴露服务:
登录到OpenShift容器平台。
登录到要公开的服务所在的项目。
$ oc project project1
运行以下命令以公开路由:
oc expose service <service-name>
在主服务器上,使用诸如cURL之类的工具来确保您可以使用服务的群集IP地址访问该服务:
curl <pod-ip>:<port>
以使用MySQL服务为例,该服务需要客户端应用程序。如果Got packets out of order消息中包含字符串,则说明您已连接到该服务。
如果您有MySQL客户端,请使用标准的CLI命令登录:
$ mysql -h 172.30.131.89 -u admin -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
配置路由器
与管理员合作,将路由器配置为接受外部请求并根据配置的路由代理它们。
管理员可以创建 通配符DNS 条目,然后设置路由器。然后,您可以自助服务边缘路由器,而无需联系管理员。
路由器具有允许管理员指定用户可以自行设置主机名还是主机名需要特定模式的控件。
在各个项目中创建一组路由时,整个路由集可用于该组路由器。每个路由器都从路由集中承认(或选择)路由。默认情况下,所有路由器都接受所有路由。
有权查看所有项目中所有标签的路由器可以基于标签选择要接受的路由。这称为路由器分片。在平衡一组路由器之间的传入流量负载以及将流量隔离到特定路由器时,这很有用。例如,公司A去一个路由器,公司B去另一个路由器。
由于路由器在特定节点上运行,因此当路由器或节点出现故障时,流量入口将停止。通过在不同的节点上创建冗余路由器并在节点发生故障时使用高可用性来切换路由器IP地址,可以减少这种影响。
使用VIP配置IP故障转移
管理员可以选择配置IP故障转移。
IP故障转移管理一组节点上的虚拟IP(VIP)地址池。集合中的每个VIP都由从集合中选择的节点提供服务。只要单个节点可用,将为VIP提供服务。无法在节点上显式分配VIP。这样,可能存在不具有VIP的节点以及具有多个VIP的其他节点。如果只有一个节点,则所有VIP都将位于该节点上。
VIP必须可以从群集外部路由。
要配置IP故障转移:
在主服务器上,确保ipfailover服务帐户具有足够的安全特权:
oc adm policy add-scc-to-user privileged -z ipfailover
运行以下命令以创建IP故障转移:
oc adm ipfailover --virtual-ips=<exposed-ip-address> --watch-port=<exposed-port> --replicas=<number-of-pods> --create
更多推荐
使用路由将流量导入群集
发布评论