OpenShif Route路由实现机制探究(1)

003.OpenShift网络 目录 一 OpenShift网络实现 1.1 软件定义网络(SDN) 1.2 Kubernetes SDN Pod 1.3 Kubernetes SDN Service 1.4 service对外暴露 1.5 pod访问外部网络 二 OpenShift SDN练习 2.1 前置准备 2.2 本练习准备 2.3 创建应用 2.4 扩展应用 2.5 测试访问 2.6 检查服务 2.7 检查pod 2.8 设置 阅读详情

OpenShif Route路由实现机制探究(1)

在前面一篇译文《蓝绿、A/B和金丝雀部署 —— 《DevOps with OpenShif》第3章 节选》中,利用OpenShift Route路由配置实现了蓝绿、A/B部署,在整个过程完成后通过界面或命令行可以看到有3个Route路由配置。

1526170421331
1526170569925

一直想了解OpenShif是如何实现服务路由,以及如何在创建/更新路由规则后动态更新配置动态生效,所以打算粗略翻翻OpenShif的源码,探究其Route路由实现机制。所谓“好奇害死猫”,不知道能否坚持做下来。 才学浅薄,一点点来吧……

先来瞧瞧OpenShift安装完毕后,默认的Router路由器是哪一个,上面这些Route路由规则配置转换成路由器的配置又是个什么样子。

(本系列博客使用minishift单机环境完成)

默认Router路由器使用的是哪一个?

让我们通过查看OpenShift Router对应Pod所使用的Docker镜像名称来初步判断其使用的是什么软件。

先look下Router Pod的名称,下面的命令在所有namespace命名空间以router关键字搜索对象:

$ oc get pods --all-namespaces | grep router
default                 router-1-xhc4f                  1/1       Running     2          12d

看到有一个名称为router-1-xhc4f的Pod,位于default命名空间,应该对应的就是默认Router。

再让我们从正向路径来确认,按照OpenShift文档说明,查看默认Router的信息:

$ oc adm router --dry-run -o yaml --service-account=router

命令输出内容中有关于DeploymentConfig的配置,可以确定默认Router部署配置的名称是router

- apiVersion: v1
  kind: DeploymentConfig
  metadata:
    creationTimestamp: null
    labels:
      router: router
    name: router
  template:
      ...
      spec:
        containers:
        ...
        image: openshift/origin-haproxy-router:v3.9.0
        ...
...

再以router为名称,查看DeploymentConfig配置内容,关注其对应的Deployment名称:

$ oc describe dc router -n default
Deployment #1 (latest):
    Name:       router-1
...

默认Router的Deployment名称是router-1, 与上面查到Pod名称router-1-xhc4f前缀相符,以OpenShift对象命名规则(也是Kubernetes命名规则),可以确定此Pod就是默认Router运行时。

确定Pod名称后,我们再来查下Pod对应的Docker镜像名称是什么:

$ oc get pods router-1-xhc4f -n default -o yaml | grep image
image: openshift/origin-haproxy-router:v3.9.0

镜像名称与上面DepoymentConfig配置内容中image配置项一致,都是openshift/origin-haproxy-router:v3.9.0

从默认Router镜像名称上,得出其使用的是Haproxy负载均衡软件。

其实这么做有脱裤子放屁之嫌,默认Router是使用Haproxy的事实,在OpenShift文档中都有提及,比如:

这里,and 这里等等,哈哈哈哈….

获取Router配置文件

确认了默认Router的Pod名称,那就连接进去蹓跶蹓跶。

连接进入容器
$ oc -n default exec -ti router-1-xhc4f bash 

上面的命令指定在命名空间default中Podrouter-1-xhc4f容器上执行bash 进入Shell,并以-ti声明终端交互方式。

Router运行环境目录结构

连接进入Router Pod容器后,使用命令tree查看Haproxy工作目录结构:

[inside pod]$ tree 
.
├── bin
├── conf
│   ├── cert_config.map
│   ├── default_pub_keys.pem
│   ├── error-page-503.http
│   ├── haproxy.config
│   ├── haproxy-config.template
│   ├── os_edge_http_be.map
│   ├── os_http_be.map
│   ├── os_reencrypt.map
│   ├── os_route_http_expose.map
│   ├── os_route_http_redirect.map
│   ├── os_sni_passthrough.map
│   ├── os_tcp_be.map
│   └── os_wildcard_domain.map
├── Dockerfile
├── log
├── reload-haproxy
├── router
│   ├── cacerts
│   ├── certs
│   └── routes.json
└── run
    ├── haproxy.pid
    └── haproxy.sock

从目录中的配置文件名称中,可再次确认OpenShift默认Router采用的是Haproxy。

让我们来看看它的配置文件,是如何实现前一篇译文《

【SAP-MDG】工作流任务配置实战:从基础配置到代理分配详解 本文详细解析了SAP MDG工作流任务配置的全流程,从基础配置到代理分配的关键操作。通过实战案例和最佳实践,帮助用户掌握Configure Workflow Tasks的核心技巧,包括环境检查、代理分配、SWDD事务码使用及常见问题排查,提升主数据管理效率。 阅读详情

相关推荐

输入过欠压保护电路分析

输入过欠压保护电路仿真分析

HW-BASE的博客 6670

route命令_深入学习OpenShift系列1/7 : 网络之 RouterRoute

1. OpenShift 为什么需要 RouterRoute?顾名思义,Router路由器,Route路由器中配置的路由OpenShift 中的这两个概念是为了解决从集群外部(就是从除了集群节点以外的其它地方)访问服务的需求。不晓得为什么OpenShift 要将Kubernetes 中的 Ingress 改为 Router,我倒是觉得 Ingress 名字更贴切。从外部通...

weixin_39622891的博客 2162

B站2025年每周必看视频数据集(61列,2389条记录)XLSX

第303期-354期的数据。后面俩期的数据是跨年时候的,所以前面那十来期的数据,视频播放量啥的会比现在所看到的播放量少。

OpenShift 4 之让Route只运行在集群中Infra节点

很多OpenShift的用户都非常喜欢其自带的Route功能,Route为外部用户提供了访问Pod的负载均衡功能,它要比Kubernetes缺省提供的Ingress功能强大很多。有关介绍可参见《OpenShift 4之Route与Ingress》。 OpenShiftRoute是通过Pod运行的,因此如果不指定运行环境,Route的Pod可能会运行在Worker甚至Masrer类型的节点上。 首...

多恩斯基的博客 1650

DO280OpenShift网络--创建router

第三章 OpenShift网络--创建router

IT民工金鱼哥,专注运维技术。 1171

OpenShift Route实现原理

完整的 OpenShift 高可用集群架构如上图,所有集群上的业务(集群中运行的业务 Pod)流量会通过 DNS 指向右边的负载均衡 IP,然后通过集群前置的负载均衡器分片至集群的 Ingra 节点。而我们创建/删除 Route API 资源的本质就是修改 HAProxy 的配置来控制流量的走向,OpenShift Router 的七层负载均衡能力也正是 Infra 节点上的 haproxy 提供的。当 haproxy 接收到 HTTPS (443 端口)请求,会检查 HTTPS 请求支持 sni (

RayPick的博客 1974

Openshift的网络之六:Router和ipfailover

一、前言在文章《Kubernetes如何利用iptables对外暴露service》中提到了部署在Kubernetes上的服务对外暴露的方法,比如通过host port、cluster service、node external IP、external load balancer、node port等,这都是借助于iptables的功能在三层和四层进行的。在Openshift中,提供了另外一种基于...

cloudvtech的博客 2319

开源容器openshift学习笔记(1):添加Router组件

开篇之前如果没有安装openshift环境可以参考我的博文:centos7下安装openshift 本系列博客学习笔记参考《开源容器云openshift》一书:下载连接:https://download.csdn.net/download/u012371097/10745382   Routeropenshift集群中的一个重要组件,它是外部访问集群内容器应用的入口。 集群外部的请求都会到...

liuchuanliang的博客 1079

OpenShift 4 - Ingress、Route与Shard

OpenShift 4中通过Ingress Operator(名为ingress的clusteroperator)供应了Kubernetes的Ingress Controller对象(缺省名为default的ingresscontroller)。Ingress Operator可以供应一个或多个基于HAProxy的Ingress Controller来实现外部入栈请求的流量路由。如果该defa...

多恩斯基的博客 5439

关于 OpenShift(OKD) 网络 Service、Routes的一些笔记

参加考试,分享一些学习OpenShift的笔记博文内容为OpenShift网络相关组件很浅的一些认识学习环境为 openshift v3 的版本,有些旧这里如果专门学习 openshift ,建议学习 v4 版本理解不足小伙伴帮忙指正傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波。

山河已无恙 1806

kuberntes ingress 和 openshift router 异同

kuberntes ingress 和 openshift router 异同

qq_41303761的博客 423

关于OKD(OpenShift)中组件资源介绍和命令行操作的一些笔记

参加考试,会陆续分享一些OpenShift的笔记博文内容为 openshift 常见 API 资源对象介绍,包括所特有的 Route,IS,DC,BC 等。学习环境为 openshift v3 的版本,有些旧这里如果专门学习 openshift ,建议学习 v4 版本理解不足小伙伴帮忙指正傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波。

山河已无恙 1701

openshift简介

openshift 简介 架构 简介 Openshift是一个开源容器云平台,是一个基于主流的容器技术Docker和K8s构建的云平台。Openshift底层以Docker作为容器引擎驱动,以K8s作为容器编排引擎组件,并提供了开发语言,中间件,DevOps自动化流程工具和web console用户界面等元素,提供了一套完整的基于容器的应用云平台 架构 自底而上包括几个层次:基础架构层,容器引擎层...

qq_34123420的博客 3730

容器化应用: Openshift 路由拆分实现蓝绿部署

路由拆分就是把一个路由的流量按比例, 权重分发到不同的后端服务. 原理和带权重的负载均衡相同. 如果你使用过阿里云的SLB, 应该很熟悉了. while true; do curl http://hello-microservice-blue-reactive-microservices.192.168.99.100.nip.io 2&...

weixin_33788244的博客 311

【亲测免费】 探索nip.io:一个简单强大的动态DNS解决方案

是一个开源项目,提供了一种独特的方式,帮助你通过单一域名快速访问你的任何IP地址。它基于Python构建,利用了URL路由规则,将`.nip.io`后缀的任意子域名直接解析到你指定的IP上。这使得开发者和IT专业人士能够轻松地管理远程服务、测试环境或者家庭服务器。 ## 技术分析 该项目的核心在于其DNS(Domain Name System)配置。nip.io 使用一种称为“泛解析”(wil...

gitblog_00024的博客 2740

NIP.IO:简单易用的通配符DNS服务

NIP.IO 是一个简单易用的通配符DNS服务,旨在为任何IP地址提供便捷的域名解析。通过NIP.IO,用户可以轻松地将自定义域名映射到任意IP地址,无需复杂的DNS配置。NIP.IO 由 [Exentrique Solutions](http://exentriquesolutions.com) 提供,基于 [PowerDNS](https://powerdns.com) 构建,并使用自定义的 ...

gitblog_01009的博客 1160

OpenShift 4 - 容器访问限速和Route访问限制流

创建项目 oc new-project limited-bandwidth oc adm policy add-scc-to-user anyuid -z default 创建DeploymentConfig,其中对Pod的进出访问都限制了0.5M网络带宽。 apiVersion: apps.openshift.io/v1 kind: DeploymentConfig metadata: labels: app: nginx name: nginx namespace: lim.

多恩斯基的博客 1886

免费的dns解析服务 nio.io sslip.io,避免修改hosts文件

HTTP http://127.0.0.1.nip.io HTTPS https://127.0.0.1.sslip.io/

hknaruto的专栏 1901

理解OpenShift1):网络之 RouterRoute

理解OpenShift1):网络之 RouterRoute 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4):用户及权限管理 理解OpenShift(5):从 Docker Volume 到 OpenShift Persistent Volume   ** 本文基于 OpenShift 3.11...

weixin_34007879的博客 1561

开源项目推荐:NIP.IO

NIP.IO 是一个由 Exentrique Solutions 开发和维护的开源项目,该项目主要使用 Python 编程语言实现了一个非常简单的通配符 DNS 服务。它的核心是利用 PowerDNS 和一个自定义的 PipeBackend 来提供灵活的 DNS 解析服务。 ## 1. 项目基础介绍与主要编程语言 NIP.IO 是一个基于 PowerDNS 的通配符 DNS 解析服务。它允许用...

gitblog_01155的博客 693

OCP集群内的AKO功能测试

OCP集群内的AKO功能测试

Frank Fan 2143
上一篇: Keepalived+Haproxy负载均衡Codis之安装步骤流水帐
下一篇: OpenShift Route路由实现机制探究(2)
jj_tyro
博客等级 码龄15年 23粉丝 12原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值