Denis
Для nginx-ingress-controller: + https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx ports: - containerPort: 80 - containerPort: 443 # we expose 8080 to access nginx stats in url /nginx-status # this is optional - containerPort: 8080 volumeMounts: - mountPath: /etc/nginx-ssl/dhparam name: dhparam-secret args: - /nginx-ingress-controller - --default-backend-service=ingress-controller/default-http-backend
Denis
а не, это фрагмент из RC nginx-ingress-lb
Denis
apiVersion: v1 kind: Service metadata: name: nginx-controller namespace: ingress-controller labels: k8s-app: nginx-ingress-lb spec: selector: k8s-app: nginx-ingress-lb ports: - name: http port: 80 targetPort: 80 nodePort: 80 protocol: TCP - name: https port: 443 targetPort: 443 nodePort: 443 protocol: TCP type: NodePort
Denis
Вот это сам конфиг сервиса
Denis
Который уже переадресует на RC nginx-ingress-lb
Denis
А есть ещё альтернативы, как обеспечить HTTPS + dhparam, форвард HTTP->HTTPS, роут разных URI на отдельный поды (/assets/*, /api/search/* и т.д.)?
Maxim
если у тебя bare metal и ты хочешь экспозиться наружу, то это боль
Maxim
я это решил "железным" nginx'ом, смотрящим в kube-dns
Maxim
upstream kube-preview-app { server preview.apps.svc.kubernetes.local:8081; } server { server_name preview.amplifr.com; ... location / { ... proxy_pass http://kube-preview-app; } }
Maxim
preview.apps.svc.kubernetes.local:8081 - это обычный сервис
Maxim
всмысле ClusterIP
Denis
а вот так
Denis
у нас через ingress прописано
Denis
но nginx тоже неплохой вариант
Denis
надо будет подумать на него переехать ли
Maxim
я только не знаю, как ты его будешь ставить на кореос
Maxim
хотяяя
Maxim
можно же просто в контейнере
Maxim
не внутре кластера
Maxim
-p 80:80 -p 443:443 и поехали
Denis
да да да
Denis
именно
Denis
вопрос только - какого фига в K8s это не предусмотрели нормально?
Maxim
там ваще всем насрать на bare metal
Maxim
и в общем-то это понятно
Maxim
у них есть GCE для этого
Denis
оно как раз и выполняет роль этого nginx, грубо говоря?)
Denis
30m 9s 129 {kubelet 10.91.119.197} spec.containers{nginxfindx} Normal BackOff Back-off pulling image "10.91.87.27:5000/nginxfindx:latest" 30m 9s 129 {kubelet 10.91.119.197} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "nginxfindx" with ImagePullBackOff: "Back-off pulling image \"10.91.87.27:5000/nginxfindx:latest\""
Denis
секрет прописал до Private Docker Registry, но чё-то хватает
Maxim
как ты его прописал?
Denis
По мануалу :) Добавил секрет, добавил Pod: spec: replicas: 1 template: metadata: name: nginxapp labels: app: nginxapp role: frontend env: master spec: containers: - name: nginxapp image: xyz:5000/nginxapp:latest imagePullPolicy: Always ports: - containerPort: 80 restartPolicy: Always imagePullSecrets: - name: privateregistry
Maxim
покажи пуллсикрет
Denis
да с ним всё ок )
Denis
он сделан правильно
Denis
пять сек ещё раз проверю
Denis
а блин
Denis
я чё-то не тот хост указал
Denis
сейчас запустилось
Denis
а как-то прописывать отдельно надо DNS, чтобы был доступ preview.apps.svc.kubernetes.local?
Maxim
ну в /etc/resolv.conf добавь его первой строчкой да и все
Denis
а блин
Denis
я же его даже не запустил
Denis
о жесть
Denis
короче не запускался DNS, доходил до 2/3 и прекращался в течении 40 секунд. нашёл этот issue: https://github.com/kubernetes/kubernetes/issues/19332 решение простое - удалить default-token: kubectl delete secrets/default-token-<что-то здесь> --namespace=kube-system #solved
Denis
хм
Denis
покрутился немного и опять отвалился
Maxim
ну под не может умереть бесследно
Maxim
евенты должны быть
Maxim
и логи в мертвом контейнере
Denis
Denis
Я тоже так думал, но может похоже
Denis
Мертвые контейнеры подчищаются
Denis
docker ps -a|grep dns пустой
Maxim
ну ты же сам присылал ссылку на http://kubernetes.io/docs/user-guide/application-troubleshooting
Maxim
там есть If your container has previously crashed, you can access the previous container’s crash log with: $ kubectl logs --previous ${POD_NAME} ${CONTAINER_NAME}
Denis
)
Denis
эта штука не работает
Denis
kubectl logs --previous kube-dns-v19-c7jjc kubedns --namespace=kube-system Error from server: pods "kube-dns-v19-c7jjc" not found
Maxim
запусти его еще раз
Maxim
в одной консольки смотри евенты
Maxim
в другой - логи контейнера
Maxim
kubectl logs -f --namespace=kube-system kube-dns-v19-<ololo> -c kubedns
Denis
пять сек
Denis
Maxim
--kube-master-url=ебаное_ничего
Denis
)))
Maxim
может он как кьюблет, не может взять из kubeconfig'a
Maxim
и еще мне нравится последняя строчка
Maxim
он received signal: terminated
Maxim
именно received
Maxim
это важно
Denis
типа он из внешнего источника?
Denis
да
Maxim
то есть он не от скуки сдох
Maxim
его убили
Maxim
смотри логи healthz-контейнера
Maxim
kubectl logs -f --namespace=kube-system kube-dns-v19-<ololo> -c healthz
Denis
там пустота
Denis
и в dnsmasq
Denis
ща ещё раз гляну