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
ща ещё раз гляну