We build things and write about it
KKloud Tarus is a small team of engineers and creators who love turning ideas into real things. We share what we learn along the way.
Recent Writing
Hubble Bên Trong: Từ Sự Kiện eBPF Tới Luồng Mạng Toàn Cụm
Hubble cho ta xem mọi kết nối trong cụm Kubernetes theo tên pod, service, verdict policy — mà không cài sidecar vào pod nào. Bài này mổ cơ chế: datapath eBPF của Cilium (74 chương trình sched_cls ở Bài 12) gọi bpf_perf_event_output đẩy sự kiện vào một perf ring buffer tên cilium_events; cilium-agent đọc ra (cilium monitor cho thấy sự kiện thô với identity dạng số); rồi Hubble giàu hóa — biến identity 18203 thành kube-system/coredns — bằng cách tra kho identity-nhãn. Ta xem cả ba tầng chạy thật.
Kiểu Tetragon: Từ Quan Sát Đến Cưỡng Chế Bằng bpf_send_signal
Tetragon là công cụ an ninh runtime của hệ Cilium: nó quan sát bằng kprobe/tracepoint (đúng những hook Part II dùng) rồi cưỡng chế ngay trong nhân. Cơ chế cưỡng chế thật của nó là hai helper — bpf_send_signal gửi SIGKILL giết tiến trình, và bpf_override_return ghi đè giá trị trả về syscall. Bài này tự dựng đúng cơ chế đó: một tracepoint exec gọi bpf_send_signal(SIGKILL) để giết một tiến trình ngay khi nó chạy — binary cấm nhận exit 137, binary thường vẫn chạy. Không cần LSM hay reboot.
LSM BPF: Cưỡng Chế An Ninh Ngay Trong Nhân
Tới giờ eBPF của ta chỉ quan sát. LSM BPF thì cưỡng chế: gắn vào các điểm kiểm soát an ninh của nhân (Linux Security Modules) mà SELinux, AppArmor dùng, và một chương trình trả về 0 cho qua hay -EPERM để chặn. Bài này viết một chương trình LSM chặn mở file, và gặp một bài học thật: lần đầu nó nạp và gắn được nhưng không chặn gì — vì bpf chưa nằm trong danh sách LSM hoạt động. Bật bpf bằng tham số boot rồi reboot, cùng chương trình đó chặn thật — cat và python đều nhận Operation not permitted.
Series
eBPF Từ Số Không
Học eBPF từ nền tảng tới tự viết chương trình thật — máy ảo eBPF, verifier, maps, các hook (XDP/tc/kprobe/tracepoint/LSM); tracing với bpftrace; viết chương trình bằng libbpf + CO-RE (C) rồi nạp từ Go (cilium/ebpf); networking, observability và security. Dùng một cụm Kubernetes thật (kernel 6.17, Cilium 1.19 eBPF kube-proxy-less với hàng trăm chương trình BPF đang chạy) làm phòng lab xuyên suốt. Test thật, bám docs chính thức (ebpf.io, kernel.org, libbpf, cilium). Mã nguồn tại github.com/nghiadaulau/ebpf-from-scratch.
22 parts→
Kubernetes Từ Số Không
Dựng một cluster Kubernetes hoàn chỉnh bằng tay — không kubeadm, không script — từ certificate đầu tiên tới một cluster HA chạy thật, rồi dùng chính nó làm phòng thí nghiệm để deep-dive toàn bộ concept của Kubernetes. Phần một: PKI/TLS, etcd, control plane, worker, mạng pod, CoreDNS. Phần hai: Pods, workload controllers, scheduling, storage, networking nâng cao (Cilium eBPF), bảo mật, mở rộng API, vận hành. Mỗi thành phần vừa được giải thích cơ chế bên trong, vừa tự dựng/cấu hình tay. Test thật trên AWS EC2 với Kubernetes v1.36, manifest/script lưu tại github.com/nghiadaulau/kubernetes-from-scratch. Bám docs chính thức kubernetes.io.
73 parts→
Kubernetes Với Minikube
Học Kubernetes từ nền tảng bằng minikube — một cluster gọn chạy ngay trên máy bạn. Series đi qua kiến trúc, Pod, Deployment, Service, ConfigMap/Secret, lưu trữ, Ingress, health check, autoscaling và các loại workload, khép lại bằng một dự án deploy hoàn chỉnh. Mọi lệnh chạy thật trên minikube, manifest lưu tại github.com/nghiadaulau/kubernetes-minikube-series. Bám docs chính thức kubernetes.io.
15 parts→
The Team Behind KKloud Tarus
Engineers, creators, and problem solvers.