OpenNJet KIC v1.0 发布!K8s Ingress Controller
NGINX 向云原生演进,All in OpenNJet 概述
-
支持Ingress API、支持path/host路由
-
支持自定义资源VirtualServer,支持path/host、高级(header、请求方法等)路由
-
支持动态Upstream
-
支持Upstream 负载均衡, 支持round-robin 及 consitent hash 算法
-
支持Upstream 主动健康检查
-
支持 TLS SNI
-
支持Prometheus 指标采集
新特性概览
Ingress API
资源变化
|
OpenNJet配置信息变化方式
|
||
Ingress资源变化
|
删除新建
|
Ingress
|
动态location API
动态Upstream API
|
内容
|
host
|
动态location API
|
|
path
|
动态location API
|
||
service
|
动态Upstream API
|
||
pod动态扩缩容
|
|
endpoint
|
动态Upstream API
|
VirtualServer CR API
header
、 cookie
、 argument
、 variable
。
以下是一个VS的示例:
apiVersion: k8s.njet.org/v1
kind: VirtualServer
metadata:
name: cafe
namespace: default
spec:
host: cafe.example.com.vs
routes:
- action:
pass: details
matches:
- action:
pass: tea-post
conditions:
- value: POST
variable: $request_method
path: ~* \.html$
- action:
pass: ratings
matches:
- action:
pass: productpage
conditions:
- cookie: version
value: v2
- value: GET
variable: $request_method
path: /productpage
upstreams:
- name: ratings
port: 9080
service: ratings
- name: productpage
port: 9080
service: productpage
- name: tea-post
port: 80
service: tea-post-svc
- name: details
port: 9080
service: details
上图VS中,配置了两个路由:
-
path为\.html$ 的正则匹配,匹配以.html结尾的请求,实现高级路由(请求方法为POST的请求被路由到
tea-post
upstream,其他请求被路由到details
upstream(默认处理)) -
path为/productpage的前缀匹配,实现高级路由(请求方法为GET且cookie 为version=v2的请求被路由到
productpage
upstream,其他请求被路由到ratings
upstream(默认处理))
动态Upstream
OpenNJet KIC配置当中会生成一个默认的被称为"upstream_balancer"的upstream,此upstream会处理所有路由。当真实流量到来时,会交由内部lua上下文处理。"upstream_balancer"配置如下:
upstream upstream_balancer {
### Attention!!!
#
# We no longer create "upstream" section for every backend.
# Backends are handled dynamically using Lua.
#
###
server 0.0.0.1; # placeholder
balancer_by_lua_block {
balancer.balance()
}
keepalive 320;
keepalive_time 1h;
keepalive_timeout 120s;
keepalive_requests 10000;
}
lua上下文怎么区分不同流量该由谁处理呢?
Upstream的更新流程
Upstream 负载均衡
hash key
|
描述
|
$arg_{VAR}
|
根据url 传递的参数 VAR 做一致性hash
|
$http_{NAME}
|
根据HEADER 传递的参数 NAME 做一致性hash
|
$cookie_{NAME}
|
根据 Cookie 传递的参数 NAME 做一致性hash
|
$remote_addr
|
根据客户端的IP做一致性hash
|
Upstream 主动健康检查
-
更新 Upstream 数据时,生成一份 "raw hc backends" 的副本, 定时器中的健康检查使用此副本中的数据进行。 当健康检查结果需要触发peers 变更时,更新共享内存中的 upstream backends。
-
目前健康检查模块的定时器时间间隔是 5秒。策略中的健康检查间隔需>=5s 。
TLS Termination/SNI
vstest.example.com
与 a.test.com
对应的证书进行关联。
Prometheus 指标采集
KIC 服务中通过注解Annotations 声明Prometheus 指标的采集端口及路径。配置如下:
apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/port: "12001"
prometheus.io/scheme: http
prometheus.io/scrape: "true"
prometheus.io/path: "/stats"
name: njet-ingress
namespace: njet-ingress
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
- port: 443
targetPort: 443
protocol: TCP
name: https
selector:
app: njet-ingress
参考链接
OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Jeepay v2.2.2 正式发布:计全支付-让支付接入更简单
Jeepay 是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付。 v2.2.2 版本升级内容: 优化微信V3接口APP支付返回参数 优化PayPal支付接口参数名、关单方法名大小写 优化Docker部署 优化分账页面描述 更多升级日志:https://www.jeequan.com/dev/update/category_1016.html 项目特点 支持多渠道对接,支付网关自动路由 已对接微信服务商和普通商户接口,支持V2和V3接口 已对接支付宝服务商和普通商户接口,支持 RSA 和 RSA2 签名 已对接云闪付服务商接口,可选择多家支付机构 提供 http 形式接口,提供各语言的sdk实现,方便对接 接口请求和响应数据采用签名机制,保证交易安全可靠 系统安全,支持分布式部署,高并发 管理端包括运营平台和商户系统 管理平台操作界面简洁、易用 支付平台到商户系统的订单通知使用 MQ 实现,保证了高可用,消息可达 支付渠道的接口参数配置界面自动化生成 使用spring security实现权限管理 前后端分离架...
-
下一篇
天工 Skywork-13B 开源模型的炼成和思考
前言 笔者6月下旬加入到昆仑万维天工大模型团队负责大模型预训练,第一个参与的项目就是13B模型的预训练。在此期间社区不断开源了很多优秀的大模型,如Llama-2系列,ChatGLM系列,Baichuan系列,Qwen系列。但这些模型大多是在Benchmark上跑跑分,秀一下肌肉,而对技术细节如:数据处理,数据配比,模型调优,评估方案则透露较少。社区正在从开放走向封闭,就Llama-1和Llama-2的tech report对比,Llama-2是更加封闭的,甚至连数据配比也没有透露。在笔者团队训练出一个还不错(可能是目前中文能力最强)的13B模型后,决定对我们的经验进行总结。一来希望启发社区,提升中文社区对预训练的认识,推动AGI在中国早日的实现。二来也是对我们自己的审视,通过开源收集反馈,帮助我们更好的完成之后的工作。三来我们认为目前的中文大模型社区可能在走一个弯路,就是太注重开源榜单的评分,这个弯路社区在BERT时代也走过,BERT时代过分看中CLUE,GLUE,SuperGLUE等榜单,正如目前过分看中MMLU,C-EVAL等榜单,而忽略对模型真实能力的测量。作为Skywork-1...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程