ebalashov
я бы в джобу вынес
А можно как-то запусктаь джобы переза запуском контейнера - я совсем не знаком с их мазанизмом работы и что в них может быть? Нужно выкачать git репо и запустиь пару скриптов
Игорь
прийдется описать в helm
Игорь
не так это долго делается
Andrey
у меня в свою очередь такой вопрос сервис смотрит наружу двумя портами один лоадбалансер другой кластерайпи чего в спеке писать?
Andrey
https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
ebalashov
Спасибо, почитаю
Andrey
а все затупил multiple types = multiple services
‌‌‎D
коллеги, пробовал через хелм в ингрес назначить хост app.my.comсервису для фронтенда назначить externalIPs: 192.168.0.81в локальном dns сервере my.com & *.my.com переадресовываю на 192.168.0.81пушу фича ветку, работает пушу другую фича ветку, открывает страницу предыдущей фича ветки
Puma
а емптидир это чтоли tmpfs ?
Anton
не, это просто пространство на корне
Anton
для него кстати удобно sizeLimit задавать, под будет убит при превышении
Anton
чтобы в неприятные ситуации не попадать когда приложение вдруг во временные файлы насрало гигабайты
Vadim
это пространство в /tmp, который с большой вероятностью в tmpfs
Puma
это пространство в /tmp, который с большой вероятностью в tmpfs
просто по описанию поведения это тмпфс , ну в целом думаю вы от крыли правду
Anton
чтобы в неприятные ситуации не попадать когда приложение вдруг во временные файлы насрало гигабайты
и конечно же приложение должно быть запущено от обычного юзера, который кроме как в вольюмы, больше никуда писать не может
Vadim
пруфы
хмм, да, кстати не /tmp, а /var/lib/kubelet/pods/1234/volumes/kubernetes.io~empty-dir
Rainbow
Orphaned pod "3583a304-db4b-11e8-9a40-485b395f5bae" found, but volume paths are still present on disk : There were a total of 1 errors similar to this. Turn up verbosity to see them. Подскажите где его найти-то?
Rainbow
Var lib kubelet pods
спасибо
Евгений
mask для dockerd?
для tmpfs mount
German
Вопрос: у меня есть deployment kube-dns он старается завести 2 реплики, но так как нода одна падает по антиафинити, меняю ему реплику 1, снова возвращяется на 2, где еще может быть установлено количество реплик?
Anton
для tmpfs mount
но ведь tmpfs не монтируется
Stas
он всегда будет возвращать дефолтный конфиг
Евгений
но ведь tmpfs не монтируется
https://wiki.gentoo.org/wiki/Tmpfs
Anton
https://wiki.gentoo.org/wiki/Tmpfs
в pod tmpfs не монтируется под emptydir. прочитайте пожалуйста нить
German
kube-dns это кластер аддон со стратегией reconcile
в /etc/kubernetes/kubedns-deploy.yml про реплики сказано что устанавливается не здесь
German
spec: # replicas: not specified here: # 1. In order to make Addon Manager do not reconcile this replicas parameter. # 2. Default is 1. # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.
German
но он ставит 2, а вот где установлено 2 я не пойму
Stas
DNS horizontal auto-scaling а он есть?
V
хотя я вот сейчас проверил у меня таже фигня
Stas
spec: containers: - command: - /cluster-proportional-autoscaler - --namespace=kube-system - --configmap=kube-dns-autoscaler - --target=Deployment/kube-dns - --default-params={"linear":{"coresPerReplica":256,"nodesPerReplica":16,"preventSinglePointFailure":true}} - --logtostderr=true - --v=2
V
поставил три а он все равно 2 вернул
Stas
https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/dns-horizontal-autoscaler/dns-horizontal-autoscaler.yaml
Stas
вот если он у вас есть в кластере, то будет 2
Stas
ну так он пропорционально размеру кластера устанавливает размер
Stas
"preventSinglePointFailure":true - думаю вот тут зарыты ваши 2 реплики
German
может hpa хотя врядли, может ты когда сохраняешь он тебе ошибку возвращает и не сохраняет
нет, ошибок не выдает, вот kubedns-autoscaler { "kind": "Deployment", "apiVersion": "extensions/v1beta1", "metadata": { "name": "kubedns-autoscaler", "namespace": "kube-system", "selfLink": "/apis/extensions/v1beta1/namespaces/kube-system/deployments/kubedns-autoscaler", "uid": "edad44b3-d922-11e8-82a5-7a3dc2c4d2e9", "resourceVersion": "2931667", "generation": 1, "creationTimestamp": "2018-10-26T13:27:47Z", "labels": { "addonmanager.kubernetes.io/mode": "Reconcile", "k8s-app": "kubedns-autoscaler", "kubernetes.io/cluster-service": "true" }, "annotations": { "deployment.kubernetes.io/revision": "1", "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"extensions/v1beta1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"addonmanager.kubernetes.io/mode\":\"Reconcile\",\"k8s-app\":\"kubedns-autoscaler\",\"kubernetes.io/cluster-service\":\"true\"},\"name\":\"kubedns-autoscaler\",\"namespace\":\"kube-system\"},\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"k8s-app\":\"kubedns-autoscaler\"}},\"spec\":{\"affinity\":{\"nodeAffinity\":{\"preferredDuringSchedulingIgnoredDuringExecution\":[{\"preference\":{\"matchExpressions\":[{\"key\":\"node-role.kubernetes.io/master\",\"operator\":\"In\",\"values\":[\"true\"]}]},\"weight\":100}]},\"podAntiAffinity\":{\"requiredDuringSchedulingIgnoredDuringExecution\":[{\"labelSelector\":{\"matchLabels\":{\"k8s-app\":\"kubedns-autoscaler\"}},\"topologyKey\":\"kubernetes.io/hostname\"}]}},\"containers\":[{\"command\":[\"/cluster-proportional-autoscaler\",\"--namespace=kube-system\",\"--configmap=kubedns-autoscaler\",\"--target=Deployment/kube-dns\",\"--default-params={\\\"linear\\\":{\\\"nodesPerReplica\\\":10,\\\"min\\\":2}}\",\"--logtostderr=true\",\"--v=2\"],\"image\":\"gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.2.0\",\"name\":\"autoscaler\",\"resources\":{\"requests\":{\"cpu\":\"20m\",\"memory\":\"10Mi\"}}}],\"nodeSelector\":{\"beta.kubernetes.io/os\":\"linux\"},\"priorityClassName\":\"system-cluster-critical\",\"serviceAccountName\":\"cluster-proportional-autoscaler\",\"tolerations\":[{\"effect\":\"NoSchedule\",\"key\":\"node-role.kubernetes.io/master\",\"operator\":\"Equal\"}]}}}}\n" } }, "spec": { "replicas": 1, "selector": { "matchLabels": { "k8s-app": "kubedns-autoscaler" } }, "template": { "metadata": { "creationTimestamp": null, "labels": { "k8s-app": "kubedns-autoscaler" } }, "spec": { "containers": [ { "name": "autoscaler", "image": "gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.2.0", "command": [ "/cluster-proportional-autoscaler", "--namespace=kube-system", "--configmap=kubedns-autoscaler", "--target=Deployment/kube-dns", "--default-params={\"linear\":{\"nodesPerReplica\":10,\"min\":2}}", "--logtostderr=true", "--v=2" ], "resources": { "requests": { "cpu": "20m", "memory": "10Mi" } }, "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "File", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Always", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "nodeSelector": { "beta.kubernetes.io/os": "linux" }, "serviceAccountName": "cluster-proportional-autoscaler", "serviceAccount": "cluster-proportional-autoscaler", "securityContext": {}, "affinity": { "nodeAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "weight": 100, "preference": { "matchExpressions": [ {
German
может hpa хотя врядли, может ты когда сохраняешь он тебе ошибку возвращает и не сохраняет
"key": "node-role.kubernetes.io/master", "operator": "In", "values": [ "true" ] } ] } } ] }, "podAntiAffinity": { "requiredDuringSchedulingIgnoredDuringExecution": [ { "labelSelector": { "matchLabels": { "k8s-app": "kubedns-autoscaler" } }, "topologyKey": "kubernetes.io/hostname" } ] } }, "schedulerName": "default-scheduler", "tolerations": [ { "key": "node-role.kubernetes.io/master", "operator": "Equal", "effect": "NoSchedule" } ], "priorityClassName": "system-cluster-critical" } }, "strategy": { "type": "RollingUpdate", "rollingUpdate": { "maxUnavailable": 1, "maxSurge": 1 } }, "revisionHistoryLimit": 10, "progressDeadlineSeconds": 2147483647 }, "status": { "observedGeneration": 1, "replicas": 1, "updatedReplicas": 1, "readyReplicas": 1, "availableReplicas": 1, "conditions": [ { "type": "Available", "status": "True", "lastUpdateTime": "2018-10-26T13:27:47Z", "lastTransitionTime": "2018-10-26T13:27:47Z", "reason": "MinimumReplicasAvailable", "message": "Deployment has minimum availability." } ] } }
Sergey
а давайте такие портянки в пастебин и сюда линку
𝚔𝚟𝚊𝚙𝚜
Такой вопрос: кто как бэкапы хранит? Наиболее интересен вариант с S3
Pavel
просто по описанию поведения это тмпфс , ну в целом думаю вы от крыли правду
По описанию не похоже на tmpfs, методом проб и ошибок было выяснено что точно хранит в памяти. Сейчас пробуем pv с последующей очисткой данных оттуда
A
"preventSinglePointFailure":true - думаю вот тут зарыты ваши 2 реплики
А можно как то сделать что бы он не деплоил одну из реплик на мастере? Мастер открыт для деплоя, закрывать не надо...
Anton
Такой вопрос: кто как бэкапы хранит? Наиболее интересен вариант с S3
пушу туда просто бэкапы с duplicity или бэкапы баз. ничего не удаляю, на каждый стенд свой бакет. и может быть даже на каждый ns
𝚔𝚟𝚊𝚙𝚜
вопрос что в качестве S3 :)
𝚔𝚟𝚊𝚙𝚜
если не aws
Puma
b2
Anton
вопрос что в качестве S3 :)
очень редко бывает что заливка ломается
Puma
ну или любой аналог s3 с тем же апи но дешевле
Andrey
вопрос что в качестве S3 :)
selectel вроде не плох. Не идеален, но работает.
Puma
ну дуплисити умеет и s3 и b2
Anton
я тут только одну проблему вижу с пушингом бэкапов - отслеживание что все всё залилил
𝚔𝚟𝚊𝚙𝚜
не, я хочу на baremetal, вот и думаю есть ли у ceph конкуренты?
Puma
selectel вроде не плох. Не идеален, но работает.
ну так себе ))) не рекомендую русских провайдеров слишком маленький рынок у нас в раше и из за этого они страдают многими детскими болезнями
𝚔𝚟𝚊𝚙𝚜
про b2 вообще первый раз слышу)
Puma
аналог s3 от backblaze
Отделение Bereke Bank
Такой вопрос: кто как бэкапы хранит? Наиболее интересен вариант с S3
GCS. Тип Coldline чуть дороже чем Glacier амазона, но в случае чего достать оттуда данные быстрее и проще
𝚔𝚟𝚊𝚙𝚜
minio 🤣
стоит ли всерьез его рассматривать?
Andrey
стоит ли всерьез его рассматривать?
Хз, не могу аргументировать, но я бы не стал :)
Puma
стоит ли всерьез его рассматривать?
ну ему все равно нужен бекенд файловый , то есть будет там тот же ceph
Anton
А базы тоже им бэкапишь?
redis\mysql их обычными инструментами через redis-cli \ mysqldump. на выходе файл, его просто пушу в бакет
𝚔𝚟𝚊𝚙𝚜
понял, спасибо
Anton
чтобы отслеживать успешность сейчас отправляю event в newrelic. там тригерю по неудачам. но есть проблемы с тем чтобы зафиксировать что кто то перестал засылать event
Anton
можно сравнивать число эвентов за прошлый период, группируя по источнику и при снижении - тригерить тоже, так видимо сделаю