Maksim
в композе возможно в кубеке можно использовать entrypoint который по апи может проверить готовность сервисов джоб и т.п
Maksim
А если в один под два контейнера запихнуть? Это решит эту проблему?
ты хочешь гарантировать запуск апликатива после старта Базы?
Artem
пишите оператор :)
Maksim
https://github.com/stackanetes/kubernetes-entrypoint
Maksim
У опенстака подсмотри ентрипоинт контейнер) весьма хорошо работает-)
Maksim
пример ямла-)
Maksim
initContainers: - command: - kubernetes-entrypoint env: - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: INTERFACE_NAME value: eth0 - name: PATH value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/ - name: DEPENDENCY_SERVICE value: mariadb - name: DEPENDENCY_JOBS - name: DEPENDENCY_DAEMONSET - name: DEPENDENCY_CONTAINER - name: DEPENDENCY_POD_JSON - name: COMMAND value: echo done image: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1 imagePullPolicy: IfNotPresent name: init resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: keystone-api-token-6hddp readOnly: true
Артем
Что то в виде этого сработает? apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp annotations: pod.beta.kubernetes.io/init-containers: '[ { "name": "init-myservice", "image": "busybox", "command": ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"] }, { "name": "init-mydb", "image": "busybox", "command": ["sh", "-c", "until nslookup mydb; do echo waiting for mydb; sleep 2; done;"] } ]' spec: containers: - name: myapp-container image: busybox command: ['sh', '-c', 'echo The app is running! && sleep 3600']
Maksim
И кстати нет Сервис резолвиться всегда, внезависимости от наличия ендпоинтов под оный) Так что правильно сделать запрос в апи k8s и проверить статус сервиса
Maksim
ЧТо бы гарантировать правильную работу, для бд нужно писать readness пробу, а в апп делать инит контейнер, который проверяет статус сервиса.
Maksim
либо в ините делать тестовый коннект
Rainbow
а можно просто падать пока база не будет доступна. 0 кода
Maksim
Не факт что это правельный подход-)
Артем
Да, спасибо тоже вариант. Буду разбираться
Семён
а можно просто падать пока база не будет доступна. 0 кода
А можно не проходить рединесс пока база не поднимется, вейт тайм увеличить до времени поднятия базы в среднем.
Rainbow
ну я это и имел в виду, всегда есть рединесс
Семён
Просто если заваливать хелсчек - кубер будет лишние разы рестартить под бессмысленно и беспощадно
Maksim
Реаднесс не означает гарантировный старт приложения после базы…
Maksim
Реаднесс лишь даст отсутвие ендпоинтов у сервиса
Семён
Реаднесс не означает гарантировный старт приложения после базы…
Зависит от того как он сделан и какие проверки в себя включает.
ᴅⁱᵐⁱᴅʳ0ˡ
Всем привет
ᴅⁱᵐⁱᴅʳ0ˡ
Подскажите как образ докера перенести на кубер?
Stefan
Подскажите как образ докера перенести на кубер?
какой-то тестовый деплоймент создать с твоим имейджем?)
Stefan
чтоб кубер его загрузил
Maksim
через регистр…. как и в любое другое место
Maksim
делаешь приват регистр пушишь туда образы
Maksim
и в image пишешь свой образ
Maksim
кубик его пулит и запускает
Maksim
для правильного пулла используешь imagePullSecret
ᴅⁱᵐⁱᴅʳ0ˡ
А если нет регистра
Maksim
делаешь.
Maksim
его сделать то…. docker run -p 5000:5000 registry:2
Maksim
ну или делаешь архив образа через docker save и на каждой ноде делаешь docker load и docker tag
Maksim
что бы кубик увидел что образ уже есть на ноде и не полез его пулить
Maksim
в imagePullPolicy тогда лучше всего написать Never
ᴅⁱᵐⁱᴅʳ0ˡ
ок, вроде понял) спасибо
𝚔𝚟𝚊𝚙𝚜
докер может добавлять лейблы контейнера в стримы логов если попросить ключиком в командной строке
И все же add_kubernetes_metadata processor куда удобнее чем указание log-opts.labels для докера в daemon.json, т.к. processor добавляет сразу все labels которые указаны для пода, т.е. тебе не нужно знать заранее что туда попадет, а что нет.
𝚔𝚟𝚊𝚙𝚜
А еще есть всякие kubernetes.statefulset.name, kubernetes.node.name, о которых docker просто не знает
engelbart
Подскажите плиз с проблемкой. Я беру самый настоящий чарт из github.com/helm/charts stable/elasticsearcg ставлю там xpackEnabled: true и получаю в логах uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: unknown setting [xpack.monitoring.collection.enabled] please check that any required plugins are installed, or check the breaking changes documentation for removed settings at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.6.1.jar:6.6.1]
Incognito
xpack же платный и его надо ставить отдельно
Nikolay
xpack же платный и его надо ставить отдельно
отдельно ставить уже не надо, он с 6.2 из коробки есть, надо просто лицензию накатить, чтобы работало. а мониторинг так вообще теперь бесплатный
Incognito
вот же https://opendistro.github.io/for-elasticsearch/ AWS анонсировали выпуск в опенсорс «Open Distro for Elasticsearch» — дистрибуции Elasticsearch с набором компонентов, которых так не хватало в опенсорсном Elasticsearch: * Security — поддержка разных аутентификаций, rbac на разных уровнях, шифрование трафика и аудит; * Event Monitoring & Alerting — создание оповещений по данным в индексам; * Deep Performance Analysis — API для получения метрик производительности кластера; * SQL Support — поддержка создания запросов к данным с помощью SQL;
Zhyhanov
Ребят такой вопрос, я могу по https мастера по порту 6443 стучаться на апишку кубера ?
Anonymous
Приветствую. Кто успешно боролся с connect: no route to host port 10250
Denis
Подскажите как правильно пробросить coredns-service через LoadBalancer на metallb? или есть другие варианты?
Incognito
Вангую с дашбордом проблемы?)
нет дашборда, нет проблемы
Zhyhanov
Да, можно, только если не ошибаюсь нужен ca.crt
А если токен создать, какие могут подводные камни быть ?
Denis
А если токен создать, какие могут подводные камни быть ?
А для каких целей в общих чертах это нужно?
Zhyhanov
Да для получения информации о деплойментах, разработчикам засунуть в свою приложуху.
Denis
Да для получения информации о деплойментах, разработчикам засунуть в свою приложуху.
В любом случае понадобится ca.crt и какой-то SA, который может делать get,list.watch и т.д Я через api ходил внешним прометеусом в нод экспортеры кубернетиса. Пока ca.crt не подсунул, ничего не завелось.
Denis
tls_config: ca_file: /etc/prometheus/ca.crt bearer_token_file: /etc/prometheus/token
Denis
ВОт как-то так выглядело и ходил через 6443 порт
Alisher
Коллеги! Есть проблема никак не могу понять в чем: curl http://domain.com/.well-known/acme-challenge/_selftest отрабатывает, а kube-lego пишет error while authorizing: reachability test failed: Get http://domain.com/.well-known/acme-challenge/_selftest: dial tcp x.x.x.x:80: getsockopt: connection refused
Alisher
В чем может быть проблема?
Rainbow
kube-lego deprecated
Alisher
kube-lego deprecated
Что вместо него?
Rainbow
https://cert-manager.readthedocs.io
Denis
только там в послендних версиях наворотили они. Доку повнимательнее читайте
Incognito
я дальше 0.6 не полез
Alisher
ok
Alisher
пытаюсь разобраться
Nazar
Как получить айпишник кластера в шаблоне хелма, что то типа { .Cluster.IP }?)
Alisher
в общем разницы нет connect: connection refused
Rainbow
ingress нормально настроен?
Alisher
Alisher
если открыть,и принять саомподписанный сертификат, то открывает
Rainbow
Вбить домен браузере
Rainbow
По 80 порту
Alisher
по 80 нет. только https
Stefan
по 80 нет. только https
в чем проблема?
Alisher
в том, что сертификат не letsencrypt, а самоподписанный
Stefan
в том, что сертификат не letsencrypt, а самоподписанный
опиши последовательность действий не так давно возился с nginx+cert-manager
Stefan
и погляди че пишет в kubectl describe certificate