Как добавить вход в службу и трафик в кластер EKS? - PullRequest
0 голосов
/ 14 ноября 2018

Примечания

Я пытаюсь развернуть службу и вход для демонстрационной службы (от «Kubernetes in Action») в кластере AWS EKS, в котором установлен входной контроллер traefik от Helm.

Я могу получить доступ к панели мониторинга traefik с traefik.example.com имени хоста после того, как вручную добавлю IP-адрес AWS ELB, предоставленный traefik, к этому имени хоста в моем локальном /etc/hosts файле.

Если я опишу службу и вход traefik-dashboard:

$ 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-575cc584fb-v4mfn в пространстве имен kube-system.

Учитывая эту информацию и просматривая документы traefik, я пытаюсь открыть демонстрационный сервис через его вход со следующим YAML:

apiVersion: apps/v1beta2
kind: ReplicaSet
metadata:
name: kubia
spec:
replicas: 3
selector:
    matchLabels:
    app: kubia
template:
    metadata:
    labels:
        app: kubia
    spec:
    containers:
    - name: kubia
        image: luksa/kubia

---

apiVersion: v1
kind: Service
metadata:
name: kubia
namespace: default
spec:
selector:
    app: traefik
    release: traefik
ports:
- name: web
    port: 80
    targetPort: 8080

---

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

После применения этого я не могу получить доступ к сервису kubia изkubia.int имя хоста после добавления IP-адреса AWS ELB, предоставленного traefik, к этому имени хоста в моем локальном /etc/hosts файле.Вместо этого я получаю Service Unavailable в ответе.Описание созданных ресурсов показывает некоторую различную информацию.

$ 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>

Я также заметил, что у сервиса demo kubia нет конечных точек, и соответствующий вход не показывает доступных бэкэндов.

Еще одна вещь, которую яобратите внимание, что служба и вход демо kubia находятся в пространстве имен default, а служба и вход traefik-dashboard находятся в пространстве имен kube-system.

Есть ли что-нибудь у кого-нибудь?Какие-нибудь предложения относительно лучшего способа диагностировать это?

Большое спасибо заранее!

1 Ответ

0 голосов
/ 14 ноября 2018

Может показаться, что вам не хватает kubernetes.io/ingress.class: traefik, который говорит вашему входному контроллеру Traefik служить для этого определения Ingress.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...