DevOps 02/09/2026 9 phút

Cùng 200.000 dòng log: Loki tốn 5,40 MB tìm 33 ms, Elasticsearch tốn 16,22 MB tìm 3 ms — và để mapping mặc định là ném đi 29,5% dung lượng lấy đúng kết quả cũ

Tôi đẩy cùng một tệp log vào Loki và Elasticsearch rồi đo từng con số: ES trả lời nhanh gấp 13 lần, Loki tốn ít hơn 3 lần và nạp nhanh hơn. Nhưng phát hiện đắt nhất là mapping động mặc định của ES phí 29,5% dung lượng, nạp chậm 1,8 lần, lọc chậm 3,5 lần — cho y hệt kết quả. Đây là đánh đổi 'chỉ mục mọi thứ hay không' hiện ra bằng megabyte.

DevOps 01/09/2026 8 phút

Khôi phục cả cụm Kubernetes từ snapshot mất đúng 77 giây — và công cụ để làm việc đó lại nằm trong chính cái container bạn vừa tắt

Khôi phục thật từ một snapshot 1,1 MB trên cụm dựng riêng để phá: 77 giây từ lúc dừng API server tới lúc nó sống lại. Ba cái bẫy đo được — etcdutl không có trên node mà nằm trong pod etcd đã chết, thư mục khôi phục phình thành 63 MB, và điều quan trọng nhất: khôi phục etcd không chọn lọc được. Cái tạo trước khi chụp về đủ, cái tạo sau khi chụp mất sạch không một dòng cảnh báo — đây là nút hoàn tác toàn cục, không phải Ctrl+Z một thao tác.

DevOps 01/09/2026 8 phút

Sidecar của service mesh chỉ thêm 0,19 ms và 5 MB RAM — nhưng một pod ngoài mesh vẫn gọi thẳng vào được không mã hoá; cài mesh không tự nó chặn gì

Service mesh hứa mTLS, quan sát và điều khiển lưu lượng mà không sửa mã. Cài Linkerd lên cụm thật rồi đo: sidecar thêm ~0,19 ms (2,4 lần tương đối nhưng dưới 5% với dịch vụ thật) và chỉ 3–5 MB RAM. mTLS bật sẵn không cần khai gì. Nhưng điểm quan trọng nhất: mTLS là CƠ HỘI, không phải bắt buộc — pod ngoài mesh gọi vào vẫn chạy bình thường bằng văn bản rõ, cho tới khi bạn thêm chính sách cưỡng chế.

DevOps 01/09/2026 8 phút

Cùng một dòng log: print tốn 0,18 µs, logging tốn 4,51 µs — và 94% khoản chênh không nằm ở chỗ ai cũng nhắm vào khi tối ưu

Năm cách ghi cùng một dòng log trong Python, đo trên máy thật: khoảng cách 25 lần giữa print và logging, và khi bóc tách thì định dạng thời gian chỉ chiếm 17% — 94% chi phí biến vào bộ khung dựng LogRecord. Kèm hai phát hiện: lời gọi bị lọc bỏ rẻ tới 82 lần, nhưng chỉ khi bạn không dùng f-string.

DevOps 01/09/2026 8 phút

Nâng cấp Kubernetes: bỏ PodDisruptionBudget, hạ còn đúng một bản sao, vẫn không mất một yêu cầu nào — thứ cứu được là preStop, không phải PDB

Nâng cấp Kubernetes gồm hai phần: nâng control plane (kubeadm lo) và thay từng node (việc của bạn, và là phần gây gián đoạn). Đo drain node giữa lúc phục vụ ở ba cấu hình: 2 bản + PDB + preStop = 0 lỗi, nhưng 1 bản không PDB mà VẪN có preStop cũng 0 lỗi, còn bỏ preStop + probe thì mất 3 yêu cầu mỗi lần. Cái tạo khoảng chồng lấn không phải số bản sao mà là 5 giây trì hoãn của preStop — và PDB bảo vệ một thứ hoàn toàn khác.

DevOps 01/09/2026 9 phút

python:3.12 có 2.889 lỗ hổng, bản alpine cùng Python đó có 25 — ít hơn 115 lần mà không sửa một dòng mã; và đổi ảnh trên cùng một thẻ làm chữ ký biến mất sạch

Pod Security Standards kiểm soát pod LÀM GÌ; bài này lùi một bước, kiểm soát cái NẰM TRONG pod. Quét sáu ảnh: python:3.12 Debian 2.889 lỗ hổng so với python:3.12-alpine chạy cùng Python chỉ 25 — chênh 115 lần chỉ vì mọi thứ đi kèm. Và phép đo quan trọng nhất: chữ ký gắn với digest chứ không với thẻ, nên đổi ruột ảnh dưới cùng một thẻ v1 làm chữ ký mất hoàn toàn. Dùng digest, không dùng thẻ.