Maxim
Alexander Morozov - один из коре-девелоперов доскера
Maxim
с ним сложно спорить
kay
а в чем разница между overlay и overlay2?
Maxim
один из костылей, другой - из ядра
kay
т.е. рекомендуется overlay2. ок. записал.
Ivan
висячему docker’у можно сделать kill -USR1, он тогда свой стектрейс в логи срыгнёт
kay
многовато сругнул
Maxim
Агада, про это я тоже уже писал
Maxim
Давай я это Морозову отдам
Maxim
Фигачь гист
Ivan
тут товарищи тоже нарвались на проблемку с докером, пока дебажим. В основном goroutine 1758792 [semacquire, 61 minutes]:
sync.runtime_Semacquire(0xc82044f574)
/usr/local/go/src/runtime/sema.go:47 +0x26
sync.(*Mutex).Lock(0xc82044f570)
/usr/local/go/src/sync/mutex.go:83 +0x1c4
github.com/docker/docker/daemon.(*Daemon).reducePsContainer(0xc8200ac000, 0xc8215e5c20, 0xc8212c5d40, 0xc823f6d3d0, 0x0, 0x0, 0x0)
/usr/src/docker/.gopath/src/github.com/docker/docker/daemon/list.go:187 +0x49
github.com/docker/docker/daemon.(*Daemon).reduceContainers(0xc8200ac000, 0xc82272a800, 0xc823f6d3d0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/src/docker/.gopath/src/github.com/docker/docker/daemon/list.go:170 +0x1a5
github.com/docker/docker/daemon.(*Daemon).Containers(0xc8200ac000, 0xc82272a800, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/src/docker/.gopath/src/github.com/docker/docker/daemon/list.go:91 +0x76
github.com/docker/docker/api/server/router/container.(*containerRouter).getContainersJSON(0xc82082c880, 0x7f08bc72a080, 0xc824082f90, 0x7f08c094aa88, 0xc8239db5f0, 0xc824375ce0, 0xc824082f00, 0x0, 0x0)
…
Ivan
понять надо кто первым этот container.Lock() сделал
kay
@pipopolam скинул в личку
Maxim
передал
Maxim
ждем, пока в этой ихней калифорнии утро наступит
kay
эвоночто. голый дистр не содержит linux-image-extra. а там как раз aufs сидит. не найдя этот модуль, docker решает использовать devicemapper
Maxim
агада
Ivan
мне тут чтобы вместо devicemapper’а overlay заюзать пришлось добавить --storage-driver=overlay2 в опции докера
Maxim
ну да
Maxim
это expected behaviour ;)
Maxim
@kay_rus а ты для ноде_експортер'а юзаешь hostNetwork?
kay
да
Maxim
чорт
kay
ну извиняй =)
Maxim
гггг
Maxim
блин, чот у меня ENV не работает
Maxim
env:
- name: HOST_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
...
args:
- -web.listen-address=${HOSTIP}:9100
kay
HOST_IP != HOSTIP
Maxim
да это я криво начепятал
Maxim
там в манифесте все совпадает
kay
The following information is available to a Pod through the downward API:
The pod’s name
The pod’s namespace
The pod’s IP
A container’s cpu limit
A container’s cpu request
A container’s memory limit
A container’s memory request
kay
nodeip там нет
Etki
если честно, когда в последний раз пробовал valueFrom (в 1.3.5, кажется), они не заполнялись (по крайней мере в UI, не помню, долез ли я до конкретного контейнера)
Maxim
Maxim
;)
kay
есть то оно есть
kay
но dawnard не поддерживет
kay
щасм покажу почему
kay
ты меня заинтриговал.
kay
кажется это оно https://github.com/kubernetes/kubernetes/blob/6a9a93d46954f69c8736a51cf6a8f073a962ad25/pkg/api/validation/validation.go#L1320
kay
попробуй spec.nodeName
kay
я тут недавно похожей ерундой занимался. нужно было передавать информацию о pod'е в flexvolume
https://github.com/kubernetes/kubernetes/pull/30694
Maxim
хехе
Maxim
с моим пасом:
* spec.template.spec.containers[0].env[0].valueFrom.fieldRef.fieldPath: Invalid value: "status.hostIP": error converting fieldPath: field label not supported: status.hostIP
Maxim
с твоим:
* spec.template.spec.containers[0].env[0].valueFrom.fieldRef.fieldPath: Unsupported value: "spec.nodeName": supported values: metadata.name, metadata.namespace, status.podIP
Maxim
supported values прям богат :(
kay
ну оно берется как раз отсюда: https://github.com/kubernetes/kubernetes/blob/6a9a93d46954f69c8736a51cf6a8f073a962ad25/pkg/api/validation/validation.go#L1320
Maxim
вот жеж
Maxim
а в чем суть кастрации-то?..
kay
вот либо так. запускаешь внутри контейнера:
curl -s $(ip addr show dev eth0 | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.' | sed 's/$/1/'):10255/stats/summary/ | awk -F'[: "]' '/nodeName/ {print $9}'
kay
оно тебе скажет имя ноды
kay
как ip получить - хз
Maxim
hostname -I
Maxim
и отгрепать нужный ;)
Maxim
но это чот херня какая-то
kay
hostname скажет IP пода
kay
можно конечно вместо ip addr show dev eth0 использовать hostname -I
kay
кстати overlay2 мне не помог. тоже висит
Maxim
о, Морозов очнулся
Maxim
сказал, что получил трейс
kay
могу новый прислать с overlay2
Maxim
давай
Maxim
а я пока насрал сюда: https://github.com/kubernetes/kubernetes/issues/24657
Maxim
@ivan4th, а скажи, в чем такая большая проблема отдавать побольше данных в downward API?
kay
@pipopolam а ты в какой версии пытаешься этот status.hostIP использовать?
Maxim
1.3.7
kay
странно. spec.nodeName должен работать
kay
очень странно.
kay
https://github.com/kubernetes/kubernetes/blob/v1.3.7/pkg/api/validation/validation.go#L1098 - здесь нет. это tag 1.3.7
kay
а здесь есть. это branch 1.3.7 https://github.com/kubernetes/kubernetes/blob/1.3.7/pkg/api/validation/validation.go#L1320
Maxim
ну сборка-то по тегу делалась скорее всего
Maxim
а резолвить в пре-ините?
Ivan
можно init containers заюзать, чтобы получить ip и положить куда надо, да
Maxim
ну да, я про init-container
Ivan
ну да, там. или если сам image собираешь, то можешь уже и в нём самом
Maxim
вот блин Hockin тролль, а...
Ivan
Это thockin-то троль? До smarterclayton’а ему как до луны
Maxim
ггг
Maxim
ну я спросил "а чобы нет", он ответил "чтобы нет"