【问题标题】:Unable to access app running on pod inside cluster using nginx Ingress controller无法使用 nginx 入口控制器访问在集群内 pod 上运行的应用程序
【发布时间】:2021-09-23 12:40:37
【问题描述】:

我在 Hetzner 服务器上使用this nginx 入口控制器。安装入口控制器后,我可以通过其 IP 访问工作节点,但无法访问集群内 pod 上运行的应用程序。我错过了什么吗? Ingress 和 Traefik 是不是不同,在术语上有点混淆。

服务文件-

apiVersion: v1
kind: Service
metadata:
  name: service-name-xxx
spec:
  selector:
    app: app-name
  ports:
    - protocol: 'TCP'
      port: 80
      targetPort: 4200
  type: LoadBalancer

部署文件-

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-name
  labels:
    app: app-name
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app-name
  template:
    metadata:
      labels:
        app: app-name
    spec:
      imagePullSecrets:
      - name: my-registry-key
      containers:
      - name: container-name
        image: my-private-docker-img
        imagePullPolicy: Always
        ports:
        - containerPort: 4200

入口文件-

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-name
spec:
  rules:
  - host:
    http:
      paths:
      - pathType: Prefix
        path: "/app"
        backend:
          service:
            name: service-name-xxx
            port:
              number: 4200

【问题讨论】:

  • 你的应用暴露了吗?你能分享任何配置文件吗?回答你的最后一个问题 Traefik 是一个 Ingress 控制器,例如 nginx 和官方文档中的其他控制器。
  • @JakubSiemaszko 我在上面添加了文件并尝试了命令kubectl expose deployment deployment-name --type=LoadBalancer --name=service-name-xxx,即Error from server (AlreadyExists): services "service-name-xxx" already exists

标签: kubernetes traefik nginx-ingress kubernetes-cluster bare-metal-server


【解决方案1】:

您已在服务中将 port 设置为 80 并将 targetPort 设置为 4200。应该在您的入口 yaml 中提及端口 80。

backend:
    service:
      name: service-name-xxx
      port: 80
      targetPort: 4200

【讨论】:

    【解决方案2】:

    我认为您必须将kubernetes.io/ingress.class: "nginx" 添加到您的Ingress

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-name
        spec:
          name: hsts-ingress-backend1-minion
          annotations:
            kubernetes.io/ingress.class: "nginx"
    

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 2018-07-23
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 2021-09-27
      • 2021-10-19
      • 1970-01-01
      • 2018-05-14
      相关资源
      最近更新 更多