Я нашел конфигурацию, как работает вход, основанный на traefik, на моем кластере Raspberry Pi с докером 18.04CE, kubernetes 1.9.7 и 2018-06-27-raspbian-stretch-lite.img:
Используйте определение DaemonSet из https://docs.traefik.io/user-guide/kubernetes/ и, в частности, файл yaml https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-ds.yaml
но
ты должен добавить
hostNetwork: соответствует спецификации DaemonSet
а также
Тип: ClusterIP к спецификации Сервиса.
Мой рабочий ямл выглядит следующим образом:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: traefik-ingress-controller
namespace: kube-system
---
kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
name: traefik-ingress-controller
namespace: kube-system
labels:
k8s-app: traefik-ingress-lb
spec:
template:
metadata:
labels:
k8s-app: traefik-ingress-lb
name: traefik-ingress-lb
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds: 60
hostNetwork: true
containers:
- image: traefik
name: traefik-ingress-lb
ports:
- name: http
containerPort: 80
hostPort: 80
- name: admin
containerPort: 8080
hostPort: 8080
securityContext:
capabilities:
drop:
- ALL
add:
- NET_BIND_SERVICE
args:
- --api
- --kubernetes
- --logLevel=DEBUG
---
kind: Service
apiVersion: v1
metadata:
name: traefik-ingress-service
namespace: kube-system
spec:
type: ClusterIP
selector:
k8s-app: traefik-ingress-lb
ports:
- protocol: TCP
port: 80
name: web
- protocol: TCP
port: 8080
name: admin
Согласно документации kubernetes ClusterIP является значением по умолчанию для типа службы. Но мой пример работает, только если я явно добавлю тип: ClusterIP к службе, которая поддерживает входной контроллер.
Я также проверил, работает ли он, если я добавляю либо «hostNetwork: true» в spec.template.spec для DeamonSet, либо «type: ClusterIP» в спецификацию службы, но он работает только в том случае, если я добавляю оба.