繁体   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