bebebe
по идеи в k8spray есть LCM
Maksim
да шото не очень делает
оно это делает при создании подов
Maksim
если прописаны request в темплейтах
Andrey
да шото не очень делает
делает если заданы anti-affiniti
bebebe
что надо сделать что бы работал?
я использую вот эту https://github.com/andrewrothstein/ansible-kubernetes-helm
bebebe
рботает как часики
Vitaliy
парни, вопрос. а разве мы не можем хранить binary внутри секретов?
Vitaliy
основания?
Serega
делает если заданы anti-affiniti
даже если заданы антиафинити, то если положить одну из нод, ресурсы переедут на оставшиеся ноды. Потом по возвращении ноды в строй, обратно ресурсы на неё не возвращаются. Есть элегантное решение?
Serega
понятно.... особенно неприятно на кластерах с малым количеством нод (например 2 воркер ноды), приходится делать delete подов, или скейлом заниматься
Andrey
понятно.... особенно неприятно на кластерах с малым количеством нод (например 2 воркер ноды), приходится делать delete подов, или скейлом заниматься
да для меня это вообще порнография... мне по одному поду нужно, хотел daemon set использовать, с экспосом через ingress - но заэкспозить daemon set не получилось, типа делайте net=host и не ипите мозги
Paradigm
У кого были проблемы kube-dns-545bc4bfd4-g22cd 0/3 ContainerCreating 0 13m <none> kube поделитесь решением
Paradigm
kubectl describe kube-dns-545bc4bfd4-g22cd что говорит?
root@kube:~# kubectl -n kube-system describe pod kube-dns-545bc4bfd4-g22cd Name: kube-dns-545bc4bfd4-g22cd Namespace: kube-system Node: kube/194.87.97.96 Start Time: Wed, 29 Nov 2017 20:56:29 +0300 Labels: k8s-app=kube-dns pod-template-hash=1016706980 Annotations: kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"kube-system","name":"kube-dns-545bc4bfd4","uid":"7afb714a-d52e-11e7-900c-02515d01... Status: Pending IP: Created By: ReplicaSet/kube-dns-545bc4bfd4 Controlled By: ReplicaSet/kube-dns-545bc4bfd4 Containers: kubedns: Container ID: Image: gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5 Image ID: Ports: 10053/UDP, 10053/TCP, 10055/TCP Args: —domain=cluster.local. —dns-port=10053 —config-dir=/kube-dns-config —v=2 State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Limits: memory: 170Mi Requests: cpu: 100m memory: 70Mi Liveness: http-get http://:10054/healthcheck/kubedns delay=60s timeout=5s period=10s #success=1 #failure=5 Readiness: http-get http://:8081/readiness delay=3s timeout=5s period=10s #success=1 #failure=3 Environment: PROMETHEUS_PORT: 10055 Mounts: /kube-dns-config from kube-dns-config (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-dns-token-m644g (ro) dnsmasq: Container ID: Image: gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5 Image ID: Ports: 53/UDP, 53/TCP Args: -v=2 -logtostderr -configDir=/etc/k8s/dns/dnsmasq-nanny -restartDnsmasq=true — -k —cache-size=1000 —log-facility=- —server=/cluster.local/127.0.0.1#10053 —server=/in-addr.arpa/127.0.0.1#10053 —server=/ip6.arpa/127.0.0.1#10053 State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Requests: cpu: 150m memory: 20Mi Liveness: http-get http://:10054/healthcheck/dnsmasq delay=60s timeout=5s period=10s #success=1 #failure=5 Environment: <none> Mounts: /etc/k8s/dns/dnsmasq-nanny from kube-dns-config (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-dns-token-m644g (ro) sidecar: Container ID: Image: gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5 Image ID: Port: 10054/TCP Args: —v=2 —logtostderr —probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.cluster.local,5,A —probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.cluster.local,5,A State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Requests: cpu: 10m memory: 20Mi Liveness: http-get http://:10054/metrics delay=60s timeout=5s period=10s #success=1 #failure=5 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-dns-token-m644g (ro) Conditions: Type Status Initialized True Ready False PodScheduled True Volumes: kube-dns-config: Type: ConfigMap (a volume populated by a ConfigMap) Name: kube-dns Optional: true kube-dns-token-m644g: Type: Secret (a volume populated by a Secret) SecretName: kube-dns-token-m644g Optional: false QoS Class: Burstable Node-Selectors: <none> Tolerations: CriticalAddonsOnly node-role.kubernetes.io/master:NoSchedule node.alpha.kubernetes.io/notReady:NoExecute for 300s node.alpha.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message —— —---- —— —— —---—
Paradigm
kubectl describe kube-dns-545bc4bfd4-g22cd что говорит?
Warning FailedScheduling 21m (x7 over 22m) default-scheduler No nodes are available that match all of the predicates: NodeNotReady (1). Normal Scheduled 21m default-scheduler Successfully assigned kube-dns-545bc4bfd4-g22cd to kube Normal SuccessfulMountVolume 21m kubelet, kube MountVolume.SetUp succeeded for volume "kube-dns-config" Normal SuccessfulMountVolume 21m kubelet, kube MountVolume.SetUp succeeded for volume "kube-dns-token-m644g" Warning FailedCreatePodSandBox 21m kubelet, kube Failed create pod sandbox. Warning FailedSync 19m (x11 over 21m) kubelet, kube Error syncing pod Normal SandboxChanged 59s (x91 over 21m) kubelet, kube Pod sandbox changed, it will be killed and re-created.
Paradigm
https://pastebin.com/cjA1U5t5
Vladimir
> No nodes are available that match all of the predicates: NodeNotReady Похоже, что нет нод в статусе Ready. kubectl get nodes может показать их статус.
Paradigm
И я разрешил master ноде запуск подов
Paradigm
kubectl taint nodes —all node-role.kubernetes.io/master-
Vadim
Всем привет. А кто-то использует deis workflow ? nip.io домен для контроллера он же публичный ? ни у кого не отвалился ? У меня перестал роутер резолвится
Anton
а зачем это может пригодится? =)
G72K
а зачем это может пригодится? =)
Если тикет на добавление записи в DNS висит 8 дней, а работать надо
Oleg
а с штатным ingress от кубера на nginx все нормально с websocket?
Logan
коллеги, использующие nginx-ingress - а он поддерживает lua?
bebebe
нет, это openresty поддерживает lua
bebebe
но это не мешает форкнуть nginx-ingress docker image, и заменить там nginx на lua
bebebe
старый конфиг будет работать из коробки
bebebe
openresty==nginx+lua
Logan
звучит слегка пугающе, буду пробовать
Vitalii
Я пару месяцев назад стал собирать их nginx сам с Lua и парой других модулей. Но это от отчаяния. Теперь обновление этого всего больно и вручную.
Igor
а с штатным ingress от кубера на nginx все нормально с websocket?
https://github.com/kubernetes/ingress-nginx/blob/120bb1deb0d4edaec182def6dd403a3ac3650813/rootfs/etc/nginx/template/nginx.tmpl#L783
Igor
вроде должно работать ...
bebebe
звучит слегка пугающе, буду пробовать
Нисколько. Глаза боятся, а руки делают
bebebe
Openresty среди статистически среднего девопса явно недооценен
Vitalii
Поясните вашу боль
Ничего сверхестественного: Скопированные к себе и немного измененные https://github.com/kubernetes/ingress-nginx/blob/master/images/nginx/build.sh https://github.com/kubernetes/ingress-nginx/blob/master/rootfs/etc/nginx/template/nginx.tmpl Для сборки своего образа я выковыриваю бинарник с ingress-controller из официального, т.к. ещё и его компиллить не хочется. Для обновления образа нужно просмотреть историю коммитов, перенести нужные изменения в скопированные файлы
Vitalii
я это всё особо не скриптовал, просто закоммитил вместе с README. А больно это по сравнению с остальным софтом: В одном репозитории больше 40 helm чартов и 50 образов. Всё более менее собирается через bazel. А софт обычно обновляется автозаменой версий во всём проекте.
a1eXei
@lorddaedra /spam
Anton
коллеги, использующие nginx-ingress - а он поддерживает lua?
а смысл в ingress добавлять lua код? ну тоесть не лучше будет выделить вашу логику и код в приложение? я конечно мыслю узко, зажатый в рамки helm charts.
bebebe
Вообще весь истио можно было на openresty забебенить
Oleg
роутинг такой обычно нужен для A/B тестов. Когда определенным пользователям из фокус-группы предлагается другое API/front
Oleg
то есть в какой-то момент надо слазить в базу и понять на какое апи кидать пользователя
Anton
ну эт логика вашего приложения, зачем ей быть в ingress?
Oleg
это не логика приложения. Это ДРУГОЕ приложение
Oleg
и ингресс это место где нужно об этом узнать
Anton
имхо к ingress это притянуто и вовсе не обязательно там думать об этом
Oleg
лучше конечно не прятать маршрутизацию, а прямо в какой-то момент кидать на нужную версию. Пришел пользователь на example.com, посмотрели что у него к чему и перекинули на v1.example.com, за которым приложение именно для него
Anton
я вообще противник какую то такую логику выносить все ниже и ниже. в nginx решать на какой location отправить и так строить AB тесты можно, но комфортнее и управляемее это делать в приложении
Oleg
так это намек что вообще говоря нужен не тупой http reverse-proxy уровня nginx, а интеллектуальный роутер
Oleg
но большинству достаточно стики-сессий
Oleg
и нгинкса
Anton
я и не говорю что такого не должно быть, просто имхо свою логику лучше держать раздельно с ingress
Georgiy
я вообще противник какую то такую логику выносить все ниже и ниже. в nginx решать на какой location отправить и так строить AB тесты можно, но комфортнее и управляемее это делать в приложении
ну не скажи что в приложении. приложение может быть без роутера если оно простое как 3 копейки. nginx отлично годиться для роутинга. другое дело что и правда наверное лучше не на ингрессе это делать, а на nginx-ах по уровню до ingress или после и кстати, для a/b тестирования модуль есть http://nginx.org/ru/docs/http/ngx_http_split_clients_module.html, зачем луакостыли ?
Serega
Хочу собирать статистику прямо с ингреса. А для этого нужна LUA
есть же вроде nginx stub status + куча другой статы вытаскивается из логов. Или о чем то другом речь?
Anton
Хочу собирать статистику прямо с ингреса. А для этого нужна LUA
и есть же vts + exporter + prometheus. какого рода статистика нужна?
Vitalii
vts модуль не умеет гистограммы, а их хочется
Serega
гистограмы легко строятся на базе аксесс логов. Или это уже не тру?
Vitalii
кому как удобней
Anton
в prometheus потом не запилить на основе данных из vts?
Georgiy
гистограмы легко строятся на базе аксесс логов. Или это уже не тру?
у парса логов есть проблема - их надо писать всегда и везде. на статике отключили логи (например) - считай уже метрики поехали
Serega
статику можно с метрик CDN считать ) или чем она там раздается. Ну вообщем мотивация понятна.
Anton
Да я то знаю и использую
Logan
https://github.com/vozlt/nginx-module-vts
Это на порядок худшее решение, чем с LUA. Я его уже смотрел
Maksim
Ребят
Maksim
Я тут с полгодика назад выдел проект, что делает отказоустойчивый постгре под кубер