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

+694новые вакансии за сутки·52 494вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python6 244
  • Облачные технологии4 749
  • QA вакансии1 736
  • Android1 148
  • Инженер данных800
  • Продакт-менеджер321

Разработка

  • iOS1 092
  • Backend вакансии1 046
  • Fullstack вакансии453
  • AI вакансии391
  • Frontend вакансии376
  • Mobile вакансии27

По стеку

  • Go3 590
  • Java2 153
  • Kotlin942
  • Node.js767
  • Rust544
  • .NET496
  • PHP267
  • C++220
  • C#198

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

  • Kubernetes2 686
  • Linux-инфраструктура2 117
  • DevOps вакансии1 960
  • Terraform / IaC1 615
  • CI/CD871
  • Мониторинг и Observability742
  • SRE228
  • Кибербезопасность47

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

  • Аналитик данных495
  • Data Scientist449
  • Бизнес-аналитик351
  • Системный аналитик54

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

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

По регионам

  • Вакансии в США23 835
  • Вакансии в Европе9 341
  • Работа в России3 283
  • Вакансии в Канаде2 140

По формату

  • Удалённые вакансии41 311
  • Релокация в США23 835
  • Гибридная работа4 058
  • Офисная работа2 949

По уровню

  • Senior вакансии20 396
  • Middle вакансии11 620
  • Junior вакансии3 665

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

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Wise139 вакансий
  • Grab134 вакансии
  • Infobip28 вакансий
  • Adyen23 вакансии
  • Darktrace17 вакансий
  • Spotify15 вакансий
  • Celonis11 вакансий
  • Razorpay9 вакансий

Вакансии из 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 вакансии
  • Web Application Engineer - EC First Party Development Department (ECFD)
  • Senior Software Engineer, Advertisement Optimization Group - Merchandising and Advertisement Department (MAD)
  • Software Engineer, Data Management Platform - Global Ad Technology Supervisory Department (GATD)
  • Senior Site Reliability Engineer, Booking Services Search Group - Search Department (SED)
  • DX Solution Lead Engineer - Backoffice Business Support Section, Business Support Development Department (BSD)

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

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