⚡ 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 run hoặc kubectl expose.
  • Sửa resource đang chạy bằng set, scale, patch, edit, replace --force thay 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