Mẹo kubectl tốc độ và imperative command
Hồi mình thi, câu hỏi đầu tiên mình mất gần 9 phút chỉ vì ngồi viết YAML Deployment từ đầu: sai indent, thiếu selector, phải apply lại ba lần. Sang câu thứ hai mình đổi cách: luôn để kubectl sinh YAML hộ bằng một lệnh imperative, rồi chỉ sửa đúng phần mà đề yêu cầu. Bài này dạy bạn đúng vòng lặp đó, kèm 7 bài tập có lời giải để bạn tập tay ngay.
Mục tiêu bài học
- Sinh YAML cho hầu hết resource bằng một dòng
kubectl create,kubectl runhoặckubectl expose. - Sửa resource đang chạy bằng
set,scale,patch,edit,replace --forcethay vì gõ lại YAML. - Nhận diện resource không có generator để không mất thời gian mò trong phòng thi.
- Hoàn thành 7 bài tập dạng đề thi trong khoảng 20 phút.
Ôn nhanh
Bài trước bạn đã chốt 6 dòng mang vào phòng thi, trong đó có alias k và hai biến $do, $now. Bài này dùng chúng liên tục, nên nếu shell mới mở thì set lại ngay:
alias k=kubectl
export do="--dry-run=client -o yaml"
export now="--force --grace-period=0"
Nhắc lại một ý quan trọng: $do là --dry-run=client -o yaml, nó in YAML ra stdout mà không tạo resource. Đây là công cụ chính của cả bài.
Ví dụ mẫu từng bước
Đề bài mẫu: trong namespace team-a, tạo Deployment tên web dùng image nginx:1.25, 3 replicas, containerPort 80. Sau đó tạo Service web-svc type NodePort, port 80, targetPort 80, nodePort 30080.
# Bước 1: vào đúng namespace, tránh tạo nhầm ở default
k config set-context --current --namespace=team-a
# Bước 2: sinh YAML, đổ ra file
k create deployment web --image=nginx:1.25 --replicas=3 $do > web.yaml
# Bước 3: mở file, chỉ thêm phần đề còn thiếu (containerPort)
vi web.yaml
Phần bạn cần thêm vào web.yaml (generator không tự sinh ports):
spec:
containers:
- image: nginx:1.25
name: web
ports:
- containerPort: 80
This lesson is part of the paid section. Sign in and purchase the course to view the full content. Sign in