Volodymyr
bebebe
по идеи в k8spray есть LCM
Maksim
если прописаны request в темплейтах
bebebe
рботает как часики
Anatoliy
Vitaliy
парни, вопрос. а разве мы не можем хранить binary внутри секретов?
Алексей
Vitaliy
основания?
bebebe
Serega
делает если заданы anti-affiniti
даже если заданы антиафинити, то если положить одну из нод, ресурсы переедут на оставшиеся ноды. Потом по возвращении ноды в строй, обратно ресурсы на неё не возвращаются. Есть элегантное решение?
Maksim
Serega
понятно.... особенно неприятно на кластерах с малым количеством нод (например 2 воркер ноды), приходится делать delete подов, или скейлом заниматься
Maksim
Paradigm
У кого были проблемы kube-dns-545bc4bfd4-g22cd 0/3 ContainerCreating 0 13m <none> kube поделитесь решением
Vladimir
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
Paradigm
И я разрешил master ноде запуск подов
Paradigm
kubectl taint nodes —all node-role.kubernetes.io/master-
Anonymous
Vadim
Всем привет. А кто-то использует deis workflow ? nip.io домен для контроллера он же публичный ? ни у кого не отвалился ? У меня перестал роутер резолвится
G72K
Anton
а зачем это может пригодится? =)
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 и парой других модулей. Но это от отчаяния. Теперь обновление этого всего больно и вручную.
Logan
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
bebebe
Вообще весь истио можно было на openresty забебенить
Oleg
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
Logan
Georgiy
Vitalii
vts модуль не умеет гистограммы, а их хочется
Serega
гистограмы легко строятся на базе аксесс логов. Или это уже не тру?
Vitalii
кому как удобней
Anton
в prometheus потом не запилить на основе данных из vts?
Serega
статику можно с метрик CDN считать ) или чем она там раздается. Ну вообщем мотивация понятна.
Serega
Anton
Да я то знаю и использую
Maksim
Maksim
Ребят
Maksim
Я тут с полгодика назад выдел проект, что делает отказоустойчивый постгре под кубер