簡體   English   中英

我可以在沒有“船長”入口的情況下使用“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船長 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

對於船長 ingress ,腳本是這樣的:

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 之前構建的。 但它們有以下缺點:

  • 依賴靜態配置文件,該文件來自路由及其配置的時代
  • 相對靜態,實現基本功能的注釋列表對於用戶來說已經是一個相當大的列表

船長旨在:

  • 支持動態更改路由配置,這在 Kubernetes 中經常發生
  • 能夠輕松實現自動化金絲雀部署、自動化藍綠部署或影子流量

但是,有些功能在 aws-alb-ingress-controller、HAproxy 和 nginx 中得到了更好的支持。 例如 sendfile() 操作。 如果您需要流式傳輸一個大文件或大量文件,那么您可能需要選擇這些選項之一。

Aws-alb-ingress-controller 將流量直接路由到您的 Kubernetes 服務,這有好處也有壞處,因為它可以減少延遲,但存在依賴 kube-proxy 路由的風險。 kube-proxy 路由最多需要 30 秒,ETCD ttl,用於從死節點中查找 pod。 Skipper 啟用:被動觀察端點的錯誤,並能夠從負載均衡器成員中刪除這些錯誤。 主動檢查成員池,如果從船長的角度來看它們再次健康,這將啟用端點。

此外,aws-alb-ingress-controller 不支持可降低成本的 ALB 共享或服務器名稱指示等功能。 目前也不支持路徑重寫等功能。

Traefik擁有良好的社區和對 Kubernetes 的支持。 Skipper 起源於 2015 年啟動的 Project Mosaic。 當時 Traefik 還不是一個成熟的項目,距離 v1.0.0 發布還有時間。 Traefik 目前也不支持我們的 Opentracing 提供商。 當我們啟動 stackset-controller 進行自動流量切換時,它也不支持流量拆分。 我們最近還在將 Skipper 作為 Kubernetes 中的 API 網關運行方面做了大量工作,這可能會幫助許多在 Kubernetes 上運行許多小型服務的團隊。 Skipper 謂詞和過濾器是一種強大的抽象,可以輕松增強系統。

因此,如您所見,與其他類似解決方案相比,帶有船長入口的kube-ingress-aws-controller具有更多的優勢和可能性。

您可以在此處找到更多信息: skipper-ingress-controller

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM