簡體   English   中英

Traefik Ingress沒有開放港口

[英]Traefik Ingress not opening port

我正在為我們銷售的應用程序設置開發環境。

由於我們使用此環境進行主動開發,因此有必要像客戶的給定環境一樣構建它。 客戶使用Kubernetes和traefik。 所以我們也在開發中做。

幸運的是,我們為客戶環境獲得了原始的YAML文件,因此我們只需稍加修改即可使用它們。

在我們設置了Ingress和Traefik Ingress控制器后,我假設kubernetes將打開系統上的給定端口,因此可以從外部訪問應用程序。 但它沒有,沒有任何東西正在偵聽端口443和80。

我仔細檢查了配置(因為我們可以訪問客戶群,我可以比較他們的env和我們的env) - 但是所有內容看起來完全相同,盡管IP地址和名稱空間的名稱。

在traefik控制器pod的日志中,我在這里看不到任何錯誤。 只有我看到一些TLS證書錯誤。 有時在我的測試中,我看到在打開端口80時拒絕“綁定”的權限,但目前沒有。

我(和客戶)將traefik toml文件定義為配置映射,並將其作為卷添加到/ pod/conf/traefik.toml上。 此路徑作為pod的參數給出,並根據日志使用該文件。

運行kubernetes的服務器是Windows Server 2016主機上的Ubuntu Server 18.04 Hyper-V計算機。 使用apt-get(非snap)部署Kubernetes,並使用kubeadm設置集群。

這是群集配置:

root@srv-app-003:~# kubeadm config view
apiServer:
  extraArgs:
    authorization-mode: Node,RBAC
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta1
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: ""
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.14.1
networking:
  dnsDomain: cluster.local
  podSubnet: 192.168.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}

這是節點配置:

root@srv-app-003:~# kubectl get nodes -o wide
NAME          STATUS   ROLES    AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
srv-app-003   Ready    master   12d   v1.14.1   192.168.6.203   <none>        Ubuntu 18.04.2 LTS   4.15.0-48-generic   docker://18.9.2

部署有4個Pod,它們都運行沒有問題(我也可以在本地直接從pod中卷曲網站)。

我在這里放了一些重要的yaml文件: https//gitlab.com/group15/my-awesome-project

告訴我你是否需要更多(服務帳戶,角色(綁定)等...)

主要目標是運行開發環境,並且可以通過192.168.6.0網絡內的HTTP訪問。 我沒有讓它運行起來。 請幫幫我,我做錯了什么?

在我看來,問題來自您的端口定義。 在您提供的部署中,僅定義了8080和9443。 另外,它們未映射到主機端口。

我建議你通過它的頭盔圖來部署Traefik。 這是確保為復雜的kubernetes應用程序提供強大而簡單的部署的一種方式。

如果您查看此圖表,您會在此處看到端口被定義為“port”和“hostPort”。 這里有一個例子,由helm為nginx控制器生成的內容(它非常接近traefik需要的內容):

      name: ingress-nginx-controller
      ports:
      - containerPort: 80
        hostPort: 80
        name: http
        protocol: TCP
      - containerPort: 443
        hostPort: 443
        name: https
        protocol: TCP

暫無
暫無

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

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