Kubernetes 如何将服务和traefik入口添加到EKS群集? 笔记

Kubernetes 如何将服务和traefik入口添加到EKS群集? 笔记,kubernetes,traefik-ingress,amazon-eks,Kubernetes,Traefik Ingress,Amazon Eks,我正在尝试将演示服务(从“Kubernetes in Action”)的服务和入口部署到安装了traefikingress控制器的AWS EKS群集 在将traefik提供的AWS ELB的IP地址手动添加到本地/etc/hosts文件中的主机名后,我可以从traefik.example.com主机名访问traefik仪表板 如果我描述traefik仪表板的服务和入口: $ kubectl describe svc -n kube-system traefik-dashboard Name:

我正在尝试将演示服务(从“Kubernetes in Action”)的服务和入口部署到安装了
traefik
ingress控制器的AWS EKS群集

在将
traefik
提供的AWS ELB的IP地址手动添加到本地
/etc/hosts
文件中的主机名后,我可以从
traefik.example.com
主机名访问traefik仪表板

如果我描述
traefik仪表板的服务和入口

$ kubectl describe svc -n kube-system traefik-dashboard
Name:              traefik-dashboard
Namespace:         kube-system
Labels:            app=traefik
                   chart=traefik-1.52.6
                   heritage=Tiller
                   release=traefik
Annotations:       <none>
Selector:          app=traefik,release=traefik
Type:              ClusterIP
IP:                10.100.164.81
Port:              <unset>  80/TCP
TargetPort:        8080/TCP
Endpoints:         172.31.27.70:8080
Session Affinity:  None
Events:            <none>

$ kubectl describe ing -n kube-system traefik-dashboard
Name:             traefik-dashboard
Namespace:        kube-system
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
Host                 Path  Backends
----                 ----  --------
traefik.example.com
                        traefik-dashboard:80 (172.31.27.70:8080)
Annotations:
Events:  <none>
应用此选项后,在将
traefik
提供的AWS ELB的IP地址手动添加到本地
/etc/hosts
文件中的主机名后,我无法从
kubia.int
主机名访问
kubia
服务。相反,我在响应中得到一个
服务不可用
。描述创建的资源会显示一些不同的信息

$ kubectl describe svc kubia
Name:              kubia
Namespace:         default
Labels:            <none>
Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                    {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"kubia","namespace":"default"},"spec":{"ports":[{"name":"web","por...
Selector:          app=traefik,release=traefik
Type:              ClusterIP
IP:                10.100.142.243
Port:              web  80/TCP
TargetPort:        8080/TCP
Endpoints:         <none>
Session Affinity:  None
Events:            <none>

$ kubectl describe ing kubia
Name:             kubia
Namespace:        default
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
Host       Path  Backends
----       ----  --------
kubia.int
            /   kubia:web (<none>)
Annotations:
kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"kubia","namespace":"default"},"spec":{"rules":[{"host":"kubia.int","http":{"paths":[{"backend":{"serviceName":"kubia","servicePort":"web"},"path":"/"}]}}]}}

Events:  <none>
$kubectl描述svc kubia
姓名:库比亚
名称空间:默认值
标签:
注释:kubectl.kubernetes.io/last-applicated-configuration:
{“apiVersion”:“v1”,“种类”:“服务”,“元数据”:{“注释”:{},“名称”:“kubia”,“命名空间”:“默认”},“规范”:{“端口”:[{“名称”:“web”,“端口…”。。。
选择器:app=traefik,release=traefik
类型:集群
IP:10.100.142.243
端口:web 80/TCP
目标端口:8080/TCP
端点:
会话关联:无
活动:
$kubectl-ing kubia
姓名:库比亚
名称空间:默认值
地址:
默认后端:默认http后端:80()
规则:
主机路径后端
----       ----  --------
库比亚国际酒店
/库比亚:网络()
注释:
kubectl.kubernetes.io/last-applicated-configuration:{“apiVersion”:“extensions/v1beta1”,“kind”:“ingres”,“metadata”:{“annotations”:{},“name”:“kubia”,“namespace”:“default”},“spec”:{“rules”:[{“host”:“kubia.int”,“http”:{“path”:[{“backend”:{“serviceName”:“serviceName”:“kubia”,“servicePort”:“web”},“path”:“/“}}}}}}
活动:
我还注意到demo
kubia
服务没有端点,相应的入口显示没有可用的后端

我注意到的另一件事是,demo
kubia
服务和入口位于
default
命名空间中,而
traefik仪表板
服务和入口位于
kube系统
命名空间中

有没有人知道什么?对最好的诊断方法有什么建议吗


非常感谢!

您似乎缺少告诉traefik ingress控制器为该入口定义服务的
kubernetes.io/ingres.class:traefik

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kubia
  namespace: default
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
rules:
- host: kubia.int
    http:
    paths:
    - path: /
        backend:
        serviceName: kubia
        servicePort: web

如果您查看中的示例,您可以看到唯一没有注释的入口是指向traefik web ui的
traefik web ui

确实如此。谢谢!
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kubia
  namespace: default
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
rules:
- host: kubia.int
    http:
    paths:
    - path: /
        backend:
        serviceName: kubia
        servicePort: web