~/dev/notes — -zsh

dev/notes

private blog :: sysadmin & devops notes
0x
root@notes private
> Senior DevOps Engineer / SRE
Заметки о Linux, контейнеризации, автоматизации и всём, что связано с инфраструктурой. Пишу для себя, но рад гостям.
#linux #kubernetes #docker #terraform #ansible #python #go #monitoring
> system_status
Uptime: 127 дней без перезагрузки
Последний деплой: 2 часа назад
Статус кластера: ● healthy
Заметок в базе: 247 статей
🐳

Оптимизация Docker-образов: многоступенчатые сборки

> 2024-01-15 — 5 минут чтения

Многоступенчатые сборки (multi-stage builds) позволяют значительно уменьшить размер финального образа. Основная идея — использовать один образ для сборки, а в финальный образ копировать только необходимые артефакты.

# Stage 1: Build
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o main .

# Stage 2: Final
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/main .
CMD ["./main"]

Результат: уменьшение размера образа с 800+ MB до ~15 MB.

☸️

Kubernetes: чек-лист отладки проблем с Pod

> 2024-01-10 — 8 минут чтения

Систематический подход к отладке проблем с подами в Kubernetes. Сохраняю как памятку для дежурств.

# 1. Проверяем статус пода
kubectl get pods -n <namespace>
kubectl describe pod <pod-name> -n <namespace>

# 2. Смотрим логи
kubectl logs <pod-name> -n <namespace> --previous

# 3. Запускаем временный под для отладки сети
kubectl run -it --rm debug --image=nicolaka/netshoot -- /bin/bash

# 4. Проверяем события
kubectl get events -n <namespace> --sort-by=.metadata.creationTimestamp
Статус Типичная причина Действие
Pending Недостаточно ресурсов Проверить node capacity
CrashLoopBackOff Ошибка в приложении Проверить логи
ImagePullBackOff Проблемы с образом Проверить registry и credentials
💻

Полезные однострочники bash для повседневной работы

> 2024-01-05 — 4 минуты чтения

Коллекция bash-команд, которые экономят время при администрировании Linux-систем.

# Найти и заменить текст во всех файлах рекурсивно
find . -type f -name "*.txt" -exec sed -i 's/old/new/g' {} +

# Посмотреть 10 самых больших файлов в директории
du -ah /path | sort -rh | head -10

# Убить процесс по имени
pkill -f "process_name"

# Мониторинг лога в реальном времени с подсветкой
tail -f /var/log/syslog | grep --color=always -E "error|warning|$"
📊

Настройка мониторинга с Prometheus + Grafana за 30 минут

> 2023-12-28 — 12 минут чтения

Быстрый старт по развёртыванию стека мониторинга Prometheus + Grafana с базовыми дашбордами для мониторинга серверов.

version: '3.8'

services:
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
📝

Git: алиасы для ускорения работы

> 2023-12-20 — 3 минуты чтения

Мои git-алиасы из ~/.gitconfig, которые значительно ускоряют работу с системой контроля версий.

[alias]
    st = status
    co = checkout
    br = branch
    ci = commit
    lg = log --oneline --graph --decorate --all
    unstage = reset HEAD --
    last = log -1 HEAD
    amend = commit --amend --no-edit
    undo = reset --soft HEAD^
> archive/