Sergei
(почему не nginx/haproxy/любой другой юзерспейс-прокси)
G72K
Sergei
NLB может и решит проблему, да.
G72K
(почему не nginx/haproxy/любой другой юзерспейс-прокси)
Потому что хочу магии: в ipvs запихну service ip внутренний от Kubernetes.svc.cluster.local, пока kubelet один, пойдет через ipvs, потом появится kube-proxy, он тоже через ipvs дойдет до apiserver, но затем установит iptables DNAT на тот же самый service ip. В итоге и кублет и сам kube-proxy начнут ходить через этот DNAT
Ivan
кубернетес при запуске пода копирует данные из конейнера в новые пустые волюмы?
Sergei
G72K
G72K
Как serviceCIDR +1
G72K
Навроде того, как в амазоне DNS сидит по vpcCIDR + 2
Sergei
ну просто тот же самый kube-proxy в ipvs режиме поведет себя непредсказуемо с ручным ipvs для apiserver.
и kube-router например тоже будет заводиться в непредсказуемом режиме.
я о том, что это потенциально мохнатое решение, которое имеет побочные эффекты, которых при этом юзерспейс-прокси не имеет.
G72K
G72K
(если будет то ручной ipvs переведу на fwmark например)
G72K
Или откажусь от ipvs и руками DNAT пропишу
G72K
До того как kube-proxy поднимется. Решение мохнатое, может на что то напорюсь нехорошее, но пока как вы сказали, client-go не умеет нативно множество аписерверов приходится так :)
G72K
Или отказываться от HA
Maksim
HA для apiserver ?
G72K
Maksim
а apiserver подом, вагон к кублету?
Sergei
G72K
G72K
G72K
Sergei
а, вот почему ты спрашивал про -t nat PREROUTING и ipvs
G72K
С haproxy оно всегда в цепочке, а значит требования,выше
Sergei
кубе-прокси, если мне память не изменяет, с аписервером общается НЕ через сервисный адрес, а напрямую
G72K
G72K
Я хочу ipvs вперед ручного DNAT попробывать потому что не надо разбираться как написать правила так, чтобы kube-proxy их не затер и чтобы имели меньший приоритет когда kube-proxy установит свои
Ivan
вообще какой рекомендованный подход для деплоя многоконтейнерного приложения с общими файлами? запускать всё из одного образа?
Maksim
что за общие файлы?
Maksim
есть три основных пути
Maksim
Volume / ConfigMap / Same Pod
Ivan
например приложение + нжинкс который отдаёт статику из контейнера приложения
Maksim
Они на разных портах что ли?
Alex Sharov
Господа, а насколько адекватно содержать в одном k8s кластере stage и testing?
Alex Sharov
testing == тот, на котором интеграционные тесты бегают (с CI)
Ivan
да, нжинкс проксирует приложение
Maksim
Ну такое я бы один подом делал.
Ivan
это да. при создании emptyDir волюма в него копируется файлы из контейнера?
Ivan
как в докере
Ivan
или у меня просто будет пустая директория?
Maksim
Есть мнение, что ты чуток путаешься
Maksim
Зачем тебе emtyDir ? emtyDir это уже Volume и она всегда будет пустой
Maksim
а если ты два контейнера сливаешь в один под, то у них будет общая Ы
Maksim
fs
Ivan
даже если они из разных образов поднимаются?
Maksim
да
Maksim
В этом суть пода
Ivan
а где это в документации написано? https://kubernetes.io/docs/concepts/workloads/pods/pod/ тут только пишут что можно примаунтить общие волюмы
Vlad
Ivan
вот даже тут используют волюмы для доступа к файлам https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/
Maksim
Мммм... Данные в volume. Неткопируется. Volume монтируется в fs. Как любой маунт
Anonymous
Народ, кубер умеет в своих сценариях yaml подставлять системные переменные?
Вроде
kind: Service
metadata:
name: ${SERVICE_NAME}
?
Чтобы на основе 1го типового сценария нагенерить кучу ресурсов
Andrey
а чего бы скриптом или джинджой самому ямликов не нагенерить ?
Anonymous
Видимо так и будет. Мало ли думал из коробки есть
Anonymous
cat Deployment.yaml | sed s/\$\$EXTERNAL_IP/1.2.3.4/ | kubectl create -f -
Anonymous
пошел строгать буратин =)
Anonymous
bebebe
cat Deployment.yaml | sed s/\$\$EXTERNAL_IP/1.2.3.4/ | kubectl create -f -
не надо
можно ставить jinja в докер котнейрене и там рендерить темплейт
docker run -v`pwd`:/data --rm vikingco/jinja2cli --format=yaml /data/k8s/slave_docker.yml /data/k8s/env_slave_docker.yml > slave_docker_rendered.yml && docker run -v`pwd`:/root/.tmuxinator --rm stevenaldinger/tmuxinator:latest debug slave_docker_rendered вот такую грязь можно
Sergei
bebebe
да, или helm
Anatoliy
Народ, а кто чем запускает все на кубере? Вот есть допустим собрал образ, пихнул в registry, дальше надо запустить его в кубере, вопрос - чем?
Maksim
я пока что ручками...но это временно
Maksim
буду helm наверно юзать
Vlad
Anatoliy
Можно helm, но его в любом случае надо чем то дергать, так?
Maksim
ручками
Vlad
Anatoliy
башем
а баш дергается с дженкинса?
Anatoliy
Понятно, я просто думаю над тем как лучше будет сделать автовыкладку всего этого дела. В итоге получается пока примерно так: gogs->teamcity->registry-> ? -> kubernetes
Anatoliy
но судя по всему придется все же писать действительно что-то свое
Anton
в teamcity после пуша в регистри - helm upgrade
Anatoliy
Хотя что это я, там же можно скрипты запускать, чет туплю(
Anton
не обязательно
Anatoliy
Вопрос в том как работает helm upgrade и не должно ли для того что бы он так все обновил у него быть куча файликов на всех?