Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 512новых вакансий за сутки·54 396вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 565
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 395 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 752
  • Облачные технологии6 631
  • QA вакансии2 183
  • Android1 322
  • Инженер данных860
  • Продакт-менеджер316

Разработка

  • iOS1 238
  • Backend вакансии1 196
  • AI вакансии549
  • Fullstack вакансии500
  • Frontend вакансии426
  • Mobile вакансии28

По стеку

  • Go5 209
  • Java3 131
  • Kotlin1 113
  • Node.js1 008
  • Rust833
  • .NET656
  • PHP322
  • C++270
  • C#207

DevOps и инфраструктура

  • Kubernetes3 882
  • Linux-инфраструктура2 817
  • DevOps вакансии2 655
  • Terraform / IaC2 191
  • Мониторинг и Observability1 071
  • CI/CD919
  • SRE308
  • Кибербезопасность38

Аналитика и данные

  • Аналитик данных522
  • Data Scientist435
  • Бизнес-аналитик397
  • Системный аналитик67

Другие направления

  • Проджект-менеджер109
  • UI/UX дизайн67
  • Ручное тестирование14

По регионам

  • Вакансии в США25 642
  • Вакансии в Европе10 259
  • Работа в России3 639
  • Вакансии в Канаде2 255

По формату

  • Удалённые вакансии42 339
  • Релокация в США25 642
  • Гибридная работа5 706
  • Офисная работа2 761

По уровню

  • Senior вакансии19 599
  • Middle вакансии11 130
  • Junior вакансии3 562

Сейчас нанимают

Все компании
  • Wise192 вакансии
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis42 вакансии
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме KubernetesВсе вопросы
KubernetesSeniorПроектирование систем

Как ты делаешь production-grade observability в Kubernetes: метрики, логи, трейсы? Какой стек?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Стек: kube-prometheus-stack (Prometheus + Grafana + Alertmanager) для метрик, Loki + Promtail для логов, Tempo + OpenTelemetry Collector для трейсов. Всё интегрируется в Grafana с cross-linking трейсов и логов через trace_id.

Метрики: kube-prometheus-stack

# Устанавливаем kube-prometheus-stack (Prometheus Operator + Grafana + alertmanager)
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack \
  --namespace monitoring --create-namespace \
  --set grafana.adminPassword=secretpassword \
  --set prometheus.prometheusSpec.retention=30d \
  --set prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage=50Gi
# ServiceMonitor для своего приложения
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: my-app
  namespace: monitoring
  labels:
    release: kube-prometheus-stack   # должен совпадать с selector в Prometheus CR
spec:
  selector:
    matchLabels:
      app: my-app
  namespaceSelector:
    matchNames:
      - production
  endpoints:
    - port: http
      path: /metrics
      interval: 30s

Production-grade observability в Kubernetes: метрики, логи, трейсы

Observability строится на трёх столпах: метрики (Prometheus + Grafana), логи (Loki или Elasticsearch) и распределённые трейсы (Tempo или Jaeger). Все три компонента разворачиваются через Helm и интегрируются в единый дашборд Grafana.

Логи: Grafana Loki + Promtail

# Loki в режиме single binary (для кластеров до ~50 ГБ/сут)
helm install loki grafana/loki \
  --namespace monitoring \
  --set loki.commonConfig.replication_factor=1 \
  --set loki.storage.type=filesystem

# Promtail как DaemonSet — собирает логи со всех нод
helm install promtail grafana/promtail \
  --namespace monitoring \
  --set config.lokiAddress=http://loki:3100/loki/api/v1/push
# Promtail автоматически добавляет k8s-метки через pipeline_stages
# Структурированные JSON-логи парсятся через stage.json:
pipelineStages:
  - json:
      expressions:
        level: level
        msg: message
        trace_id: trace_id
  - labels:
      level:
      trace_id:

Трейсы: Grafana Tempo + OpenTelemetry

# Tempo
helm install tempo grafana/tempo \
  --namespace monitoring \
  --set tempo.storage.trace.backend=local

# OpenTelemetry Collector как DaemonSet
helm install otel-collector open-telemetry/opentelemetry-collector \
  --namespace monitoring \
  --values otel-values.yaml
# otel-values.yaml — collector получает трейсы от приложений и шлёт в Tempo
mode: daemonset
config:
  receivers:
    otlp:
      protocols:
        grpc:
          endpoint: 0.0.0.0:4317
        http:
          endpoint: 0.0.0.0:4318
  exporters:
    otlp:
      endpoint: tempo.monitoring.svc.cluster.local:4317
      tls:
        insecure: true
  service:
    pipelines:
      traces:
        receivers: [otlp]
        exporters: [otlp]

Инструментирование приложения (Python пример)

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace.export import BatchSpanProcessor

provider = TracerProvider()
exporter = OTLPSpanExporter(endpoint="http://otel-collector:4317")
provider.add_span_processor(BatchSpanProcessor(exporter))
trace.set_tracer_provider(provider)

tracer = trace.get_tracer(__name__)

with tracer.start_as_current_span("process-order") as span:
    span.set_attribute("order.id", order_id)
    span.set_attribute("user.id", user_id)
    # бизнес-логика...

Alerting

# PrometheusRule — alertmanager правило
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: my-app-alerts
  namespace: monitoring
spec:
  groups:
    - name: my-app
      rules:
        - alert: HighErrorRate
          expr: |
            sum(rate(http_requests_total{status=~"5.."}[5m]))
            /
            sum(rate(http_requests_total[5m])) > 0.01
          for: 2m
          labels:
            severity: critical
          annotations:
            summary: "Error rate > 1% for 2 minutes"

Связь логов и трейсов через Grafana

В Grafana источник данных Loki настраивается с derivedFields, которые превращают trace_id в кликабельную ссылку в Tempo. Источник Tempo настраивается с traceToLogs, чтобы из трейса открывался связанный лог. Это даёт сквозную навигацию: метрика → лог → трейс.

Подводные камни

  • Cardinality взрывается — метки с высокой уникальностью (user_id, request_id в label) уничтожают Prometheus; такие значения должны быть в exemplars или логах, не в метках.
  • Promtail пропускает логи при ротации файлов — нужно настроить fileGlobbing и убедиться, что hostPath монтирует /var/log/pods.
  • Tempo без объектного хранилища не масштабируется — для production нужен S3/GCS бэкенд, иначе при перезапуске трейсы теряются.
  • kube-state-metrics и node-exporter уже включены в kube-prometheus-stack — не надо их ставить отдельно, иначе будет дублирование метрик и конфликты портов.
  • Retention Prometheus vs. Thanos/Cortex — нативный Prometheus не масштабируется горизонтально; для долгосрочного хранения нужен Thanos sidecar или VictoriaMetrics.
  • OTel Collector bottleneck — при высокой нагрузке один DaemonSet-экземпляр может стать узким местом; надо настраивать batch processor и limits по памяти.
  • Алерты без runbook бесполезны — каждый alert должен иметь аннотацию runbook_url, иначе on-call инженер не знает что делать.

Типичные ошибки

  • Сводить observability к logs
  • Не упоминать SLO
  • Игнорировать cardinality и retention

Что проверяет интервьюер

  • Покрывает metrics/logs/traces
  • Знает Kubernetes sources
  • Говорит про alerts и runbooks

Как вы знаете этот вопрос?

Проверить себя по теме Kubernetes →

Источники

  • https://kubernetes.io/docs/concepts/cluster-administration/observability/
  • https://kubernetes.io/docs/concepts/cluster-administration/logging/
  • https://kubernetes.io/docs/tasks/debug/debug-cluster/resource-metrics-pipeline/
  • https://kubernetes.io/docs/reference/instrumentation/metrics/
←Предыдущий вопросНа ноде статус NotReady. Какие шаги предпримешь?Следующий вопрос→Что такое Kubernetes и какую проблему он решает?

Связанные темы

KubernetesAlertingOpenTelemetrysloSRE

Вакансии с этим навыком

Kubernetes вакансии
  • Middle/Senior Go Разработчик [MWS Cloud Platform]
  • Senior Cloud Architect (#5760)
  • Middle DevOps (AWS) Engineer (#5857)
  • Senior DevOps Engineer/EKS (#5859)
  • Senior MLOps Engineer (#5860)

Частые вопросы на собеседовании

  • Зачем нужны requests и limits для CPU и памяти? Что будет, если их не задать или задать только limits?
  • Что такое ServiceAccount, Role, ClusterRole, RoleBinding и ClusterRoleBinding? Как они связаны?
  • Сервис не доступен, хотя поды Running и Ready. Как найдёшь, где разрыв?
  • Что такое securityContext? Зачем нужны runAsNonRoot, readOnlyRootFilesystem и drop capabilities?