我可以在没有 "skipper" 入口的情况下使用 "kube-ingress-aws-controller" 吗?
Can I use "kube-ingress-aws-controller" without "skipper" ingress?
我正在尝试在使用 Kops 构建的 AWS 集群上使用 kubernetes 的入口。
我正在关注此文档:https://github.com/kubernetes/kops/tree/master/addons/kube-ingress-aws-controller。
如您所见,我正在使用 kube-ingress-aws-controller 和 skipper ingress.
对于 kube-ingress-aws-controller 我有以下脚本:
apiVersion: apps/v1
kind: Deployment
metadata:
name: kube-ingress-aws-controller
namespace: kube-system
labels:
application: kube-ingress-aws-controller
component: ingress
spec:
replicas: 1
selector:
matchLabels:
application: kube-ingress-aws-controller
component: ingress
template:
metadata:
labels:
application: kube-ingress-aws-controller
component: ingress
spec:
serviceAccountName: kube-ingress-aws
containers:
- name: controller
image: registry.opensource.zalan.do/teapot/kube-ingress-aws-controller:latest
env:
- name: AWS_REGION
value: eu-central-1
对于船长入口,脚本是这个:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: skipper-ingress
namespace: kube-system
labels:
component: ingress
spec:
selector:
matchLabels:
component: ingress
updateStrategy:
type: RollingUpdate
template:
metadata:
name: skipper-ingress
labels:
component: ingress
application: skipper
spec:
hostNetwork: true
serviceAccountName: skipper-ingress
containers:
- name: skipper-ingress
image: registry.opensource.zalan.do/pathfinder/skipper:latest
ports:
- name: ingress-port
containerPort: 9999
hostPort: 9999
- name: metrics-port
containerPort: 9911
args:
- "skipper"
- "-kubernetes"
- "-kubernetes-in-cluster"
- "-address=:9999"
- "-proxy-preserve-host"
- "-serve-host-metrics"
- "-enable-ratelimits"
- "-experimental-upgrade"
- "-metrics-exp-decay-sample"
- "-lb-healthcheck-interval=3s"
- "-metrics-flavour=codahale,prometheus"
- "-enable-connection-metrics"
resources:
requests:
cpu: 200m
memory: 200Mi
readinessProbe:
httpGet:
path: /kube-system/healthz
port: 9999
initialDelaySeconds: 5
timeoutSeconds: 5
之后我又应用了几个脚本来进行概念的功能验证,一切正常。
问题
有两个入口有什么意义? 船长在做什么?
kube-ingress-aws-controller 应该不够用吧?
普通的 AWS 负载均衡器支持 TLS 终止、自动证书轮换、可能的 WAF 和安全组,但 HTTP 路由功能非常有限。
与其他 HTTP 路由器相比,Skipper 的主要优势是:
- 匹配和更改 HTTP
- 默认使用 kube-ingress-aws-controller,就像你想的那样工作
期待。
HAproxy 和 Nginx 是很好理解的好 TCP/HTTP 代理,它们是在 Kubernetes 之前构建的。但它们有缺点,例如:
- 依赖静态配置文件的时间
路线及其配置是
- 相对静态的注释列表来实现甚至是基本的
功能对于用户来说已经是一个很大的列表
Skipper 构建为:
- 支持动态更改路由配置,这会发生
在 Kubernetes 中经常出现
- 能够轻松实现自动化金丝雀部署,
自动蓝绿部署或影子流量
不过,有些功能在 aws-alb-ingress-controller、HAproxy 和 nginx 中得到了更好的支持。例如 sendfile() 操作。如果您需要流式传输一个大文件或大量文件,那么您可能需要选择这些选项之一。
Aws-alb-ingress-controller 直接将流量路由到您的 Kubernetes 服务,这有好有坏,因为它可以减少延迟,但也有依赖 kube-proxy 路由的风险。 kube-proxy 路由最多可能需要 30 秒,ETCD ttl,用于从死节点中找到 pods。船长启用:
被动观察来自端点的错误,并能够从负载均衡器成员中删除这些错误。
主动检查成员池,如果从船长的角度来看这些端点再次健康,这将启用端点。
此外,aws-alb-ingress-controller 不支持 ALB 共享或可以降低成本的服务器名称指示等功能。目前也不支持路径重写等功能。
Traefik 拥有良好的社区和对 Kubernetes 的支持。 Skipper 起源于 2015 年启动的 Project Mosaic。当时 Traefik 还不是一个成熟的项目,在 v1.0.0 发布之前还有时间。 Traefik 目前也不支持我们的 Opentracing 提供程序。当我们启动用于自动流量切换的 stackset-controller 时,它也不支持流量拆分。我们最近还对 运行ning Skipper 作为 Kubernetes 中的 API 网关做了重要的工作,这可能会帮助许多在 Kubernetes 上 运行 许多小服务的团队。 Skipper 谓词和过滤器是一种强大的抽象,可以轻松增强系统。
因此,正如您所看到的,kube-ingress-aws-controller 与 skipper ingress 相比其他方法具有更多优势和可能性类似的解决方案。
您可以在此处找到更多信息:skipper-ingress-controller。
我正在尝试在使用 Kops 构建的 AWS 集群上使用 kubernetes 的入口。
我正在关注此文档:https://github.com/kubernetes/kops/tree/master/addons/kube-ingress-aws-controller。
如您所见,我正在使用 kube-ingress-aws-controller 和 skipper ingress.
对于 kube-ingress-aws-controller 我有以下脚本:
apiVersion: apps/v1
kind: Deployment
metadata:
name: kube-ingress-aws-controller
namespace: kube-system
labels:
application: kube-ingress-aws-controller
component: ingress
spec:
replicas: 1
selector:
matchLabels:
application: kube-ingress-aws-controller
component: ingress
template:
metadata:
labels:
application: kube-ingress-aws-controller
component: ingress
spec:
serviceAccountName: kube-ingress-aws
containers:
- name: controller
image: registry.opensource.zalan.do/teapot/kube-ingress-aws-controller:latest
env:
- name: AWS_REGION
value: eu-central-1
对于船长入口,脚本是这个:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: skipper-ingress
namespace: kube-system
labels:
component: ingress
spec:
selector:
matchLabels:
component: ingress
updateStrategy:
type: RollingUpdate
template:
metadata:
name: skipper-ingress
labels:
component: ingress
application: skipper
spec:
hostNetwork: true
serviceAccountName: skipper-ingress
containers:
- name: skipper-ingress
image: registry.opensource.zalan.do/pathfinder/skipper:latest
ports:
- name: ingress-port
containerPort: 9999
hostPort: 9999
- name: metrics-port
containerPort: 9911
args:
- "skipper"
- "-kubernetes"
- "-kubernetes-in-cluster"
- "-address=:9999"
- "-proxy-preserve-host"
- "-serve-host-metrics"
- "-enable-ratelimits"
- "-experimental-upgrade"
- "-metrics-exp-decay-sample"
- "-lb-healthcheck-interval=3s"
- "-metrics-flavour=codahale,prometheus"
- "-enable-connection-metrics"
resources:
requests:
cpu: 200m
memory: 200Mi
readinessProbe:
httpGet:
path: /kube-system/healthz
port: 9999
initialDelaySeconds: 5
timeoutSeconds: 5
之后我又应用了几个脚本来进行概念的功能验证,一切正常。
问题
有两个入口有什么意义? 船长在做什么?
kube-ingress-aws-controller 应该不够用吧?
普通的 AWS 负载均衡器支持 TLS 终止、自动证书轮换、可能的 WAF 和安全组,但 HTTP 路由功能非常有限。
与其他 HTTP 路由器相比,Skipper 的主要优势是:
- 匹配和更改 HTTP
- 默认使用 kube-ingress-aws-controller,就像你想的那样工作 期待。
HAproxy 和 Nginx 是很好理解的好 TCP/HTTP 代理,它们是在 Kubernetes 之前构建的。但它们有缺点,例如:
- 依赖静态配置文件的时间 路线及其配置是
- 相对静态的注释列表来实现甚至是基本的 功能对于用户来说已经是一个很大的列表
Skipper 构建为:
- 支持动态更改路由配置,这会发生 在 Kubernetes 中经常出现
- 能够轻松实现自动化金丝雀部署, 自动蓝绿部署或影子流量
不过,有些功能在 aws-alb-ingress-controller、HAproxy 和 nginx 中得到了更好的支持。例如 sendfile() 操作。如果您需要流式传输一个大文件或大量文件,那么您可能需要选择这些选项之一。
Aws-alb-ingress-controller 直接将流量路由到您的 Kubernetes 服务,这有好有坏,因为它可以减少延迟,但也有依赖 kube-proxy 路由的风险。 kube-proxy 路由最多可能需要 30 秒,ETCD ttl,用于从死节点中找到 pods。船长启用: 被动观察来自端点的错误,并能够从负载均衡器成员中删除这些错误。 主动检查成员池,如果从船长的角度来看这些端点再次健康,这将启用端点。
此外,aws-alb-ingress-controller 不支持 ALB 共享或可以降低成本的服务器名称指示等功能。目前也不支持路径重写等功能。
Traefik 拥有良好的社区和对 Kubernetes 的支持。 Skipper 起源于 2015 年启动的 Project Mosaic。当时 Traefik 还不是一个成熟的项目,在 v1.0.0 发布之前还有时间。 Traefik 目前也不支持我们的 Opentracing 提供程序。当我们启动用于自动流量切换的 stackset-controller 时,它也不支持流量拆分。我们最近还对 运行ning Skipper 作为 Kubernetes 中的 API 网关做了重要的工作,这可能会帮助许多在 Kubernetes 上 运行 许多小服务的团队。 Skipper 谓词和过滤器是一种强大的抽象,可以轻松增强系统。
因此,正如您所看到的,kube-ingress-aws-controller 与 skipper ingress 相比其他方法具有更多优势和可能性类似的解决方案。
您可以在此处找到更多信息:skipper-ingress-controller。