Балансировщик нагрузки не создан и статический ip назначен для входа в traefik на GKE - PullRequest
0 голосов
/ 19 февраля 2019

Когда я настраиваю входной контроллер для указания на службу traefik, я ожидаю, что балансировщики нагрузки будут созданы для этого входного контроллера на GKE таким же образом, как и служба LoadBalancer.Затем я могу указать на созданный статический ip.

Однако, когда я получаю свои входы, статический IP не назначается.

$ kubectl get ingresses -n kube-system
NAME              HOSTS                 ADDRESS   PORTS     AGE
traefik-ingress   traefik-ui.minikube             80        4m

traefik-ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-ingress
  namespace: kube-system
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
    - host: traefik-ui.minikube
      http:
        paths:
          - path: "/"
            backend:
              serviceName: traefik-ingress-service
              servicePort: 80

traefik-deploy.yml

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: traefik-ingress-controller
  namespace: kube-system
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: traefik-ingress-controller
  namespace: kube-system
  labels:
    k8s-app: traefik-ingress-lb
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: traefik-ingress-lb
  template:
    metadata:
      labels:
        k8s-app: traefik-ingress-lb
        name: traefik-ingress-lb
    spec:
      serviceAccountName: traefik-ingress-controller
      terminationGracePeriodSeconds: 60
      containers:
        - image: traefik
          name: traefik-ingress-lb
          ports:
            - name: http
              containerPort: 80
            - name: admin
              containerPort: 8080
          args:
            - --api
            - --kubernetes
            - --logLevel=INFO
---
kind: Service
apiVersion: v1
metadata:
  name: traefik-ingress-service
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
    - protocol: TCP
      port: 80
      name: web
    - protocol: TCP
      port: 8080
      name: admin
  type: NodePort

1 Ответ

0 голосов
/ 19 февраля 2019

Вы создаете объект Service для развертывания traefik, но вы использовали тип NodePort, который доступен только внутри кластера.Если вы хотите, чтобы Kubernetes создал LoadBalancer для Service, вам необходимо указать тип LoadBalancer в вашем сервисе, чтобы ваш трафик Service выглядел как

kind: Service
apiVersion: v1
metadata:
  name: traefik-ingress-service
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
    - protocol: TCP
      port: 80
      name: web
    - protocol: TCP
      port: 8080
      name: admin
  type: LoadBalancer

.GKE API и создайте LoadBalancer с IP для вас.

...