feiskyer / kubernetes-handbook

Kubernetes Handbook (Kubernetes指南) https://kubernetes.feisky.xyz

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

再次请教Traefik ingress问题

pengyan2018 opened this issue · comments

@feiskyer 你好,再次来请教你关于Traefik ingress的问题。
我目前K8S的环境是:
master主机:10.65.93.34
node1 主机:10.65.93.56

ingress-rbac.yaml、traefik-deployment.yaml、traefik_ui.yaml脚本已经执行。Traefik ingress这个pod运行在10.65.93.56这个主机,pod的ip是172.17.70.66
svc运行情况如下:
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-system traefik-ingress-service NodePort 10.68.89.185 80:7078/TCP,8080:6857/TCP 8h
kube-system traefik-web-ui ClusterIP 10.68.119.238 80/TCP 8h

我当前主要目的是想在k8s集群外(10.65.93.34、10.65.93.56之外的主机)的主机10.65.93.88访问traefik ui。在浏览器上访问http://10.65.93.34:6857是能够正常访问出现界面的。但是用ingress的方式不行。不论我在10.65.93.88的hosts配置:10.65.93.56 traefik-ui.nginx.io还是配成10.65.93.34 traefik-ui.nginx.io,在浏览器上访问http://traefik-ui.nginx.io都不行。不知道我的配置是不是有问题?还是我对ingress的理解还是不到位?

附上我的traefik_ui.yaml

apiVersion: v1
kind: Service
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:

  • port: 80
    targetPort: 8080

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-web-ui
namespace: kube-system
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:

  • host: traefik-ui.nginx.io
    http:
    paths:
    • backend:
      serviceName: traefik-web-ui
      servicePort: 80

加上端口就可以了 traefik-ui.nginx.io:7078,一般还需要一个 LoadBalancer Service (或者做NAT转换),将这个 NodePort 转换到 80 端口方便访问。

@feiskyer 用traefik-ui.nginx.io:7078的确是OK的。 LoadBalancer Service的话,由于我不是在云服务上跑k8s,估计LoadBalancer Service用不了。能否进一步说明一下NAT转换的方式?

@pengyan2018 NAT 80端口到 nodePort,可以搜索下 iptables 的用法