学习资料来源于官方英文文档与《开源容器云OpenShift》一书,因为刚开始学习,不确定博客的正确性,以下内容仅供参考。
本部分是在openshift/origin学习记录(1)——基于二进制文件的安装(单机版)的基础上进行。
Router是openshift集群中的一个重要组件,它是外部访问集群内容器应用的入口。
集群外部的请求都会到达Router,由Router分发到具体的容器中。
Router组件需要读取集群的信息,所以它需要关联一个系统账号Service Account,并为这个账号授权。
以下操作基于oc(命令行客户端)指令实现。
# oc login -u system:admin
# oc project default
# oadm policy add-scc-to-user privileged system:serviceaccount:default:router
# oadm router router --replicas=1 --service-account=router
在实际生产时,为了达到高可用的效果,可以通过设置--replicas
创建夺个Router实例实现负载均衡并防止单点失效。
# oc get pod -n default
# ss -ltn|egrep -w "80|443"
通过检查实验主机上的端口监听状态,可以发现主机的端口80、443正在被Haproxy监听。
从技术上来说,Router就是一个运行在容器里的Haproxy
至此,Router组件部署已经完成。
之后,用户可以创建route对象,称为route规则,一个route规则会与一个service相关联,并且绑定一个域名。
route规则会被Router加载。当用户通过指定的域名访问应用时,域名会被解析并指向Router所在的计算节点上。Router获取这个请求后,会根据route规则定义转发给与这个域名对应的service后端相关联的Pod容器实例。
Router负责将集群外的请求转发到集群的容器。 Service负责将集群内的请求转发到指定的容器。 一个对外,一个对内。