+3

Cài đặt Kubernetes trên Local và làm quen với kubectl

Mở Đầu

Xin chào mọi người 👋
Trong bài viết trước chúng ta đã cùng nhau tìm hiểu Kubernetes (K8s) là gì, mục đích sử dụng và kiến trúc tổng quan của nó.

Để đi sâu hơn, ở bài viết này chúng ta sẽ cùng nhau:

  1. Cài đặt môi trường Kubernetes trên local (sử dụng Minikube)
  2. Làm quen với công cụ kubectl – "cây đũa thần" giúp chúng ta điều khiển cluster
  3. Thực hành chạy thử một Pod cơ bản (ví dụ Nginx)

1. Giới thiệu về Minikube

image.png

Khi mới học Kubernetes, thay vì phải có một cluster phức tạp trên cloud (AWS, GCP, Azure…), chúng ta có thể sử dụng Minikube.

Minikube là gì?

  • Là công cụ tạo Kubernetes cluster local ngay trên máy tính cá nhân.
  • Cluster do Minikube tạo ra có đầy đủ Control PlaneWorker Node, nhưng thường gom trong 1 node duy nhất để đơn giản hóa.
  • Hỗ trợ nhiều driver: Docker, VirtualBox, KVM, Hyper-V.

Tại sao chọn Minikube?

  • Dễ cài đặt và sử dụng, phù hợp học tập và demo.
  • Có thể enable nhiều addons như:
    • metrics-server (theo dõi CPU, RAM của Pod)
    • ingress (quản lý routing HTTP/HTTPS)
    • dashboard (UI trực quan)

👉 Đây chính là "sandbox" hoàn hảo để thực hành K8s.

2. Chuẩn bị môi trường

Trước tiên bạn cần cài đặt một số công cụ:

Sau khi cài xong, kiểm tra nhanh:

docker -v
kubectl version --client
minikube version

3. Khởi tạo Cluster với Minikube

Sau khi cài Minikube, chạy lệnh sau để khởi động cluster:

minikube start
  • Minikube sẽ tạo một VM hoặc container để chạy Kubernetes Master và Worker.
  • Sau khi chạy xong, bạn có thể kiểm tra cluster bằng:
kubectl cluster-info
kubectl get nodes

image.png

4. Làm quen với kubectl

kubectl là công cụ dòng lệnh chính để làm việc với Kubernetes.

Cấu trúc lệnh kubectl

kubectl [command] [type] [name] [flags]

ví dụ: kubectl get pods nginx -n default

  • command: hành động (get, describe, create, delete…)
  • type: loại resource (pods, nodes, services, deployments…)
  • name: tên resource (có thể bỏ trống để liệt kê tất cả)
  • flags: các option như -n (namespace), -o yaml (xuất YAML)

Một số lệnh cơ bản

  • Liệt kê node: kubectl get nodes
  • Liệt kê pod trong namespace default: kubectl get pods
  • Liệt kê pod ở tất cả namespace: kubectl get pods -A
  • Xem chi tiết 1 pod: kubectl describe pod <pod-name>
  • Xem log container trong pod: kubectl logs <pod-name>

Tạo một Pod test

Ví dụ tạo một Pod chạy Nginx:

kubectl run nginx --image=nginx

image.png

Expose Pod qua Service

Để truy cập Nginx từ bên ngoài, cần tạo Service:

kubectl expose pod nginx --type=NodePort --port=80

Kiểm tra Service: kubectl get svc image.png

Mở browser truy cập: minikube service nginx. bạn sẽ thấy trang welcome mặc định của Nginx.

Tạo Pod bằng YAML

Ngoài lệnh trực tiếp, Kubernetes thường quản lý qua manifest file (YAML). Ví dụ nginx-pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-yaml
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80

và chạy kubectl apply -f nginx-pod.yaml để tạo pod

Dashboard (tuỳ chọn)

Minikube có hỗ trợ một Web UI Dashboard khá trực quan:

minikube dashboard

Giao diện này giúp bạn xem Pod, Deployment, Service… trực tiếp trên browser. Tuy nhiên thực tế thì khi đi làm sẽ hiếm khi dùng Dashboard, mà chủ yếu thao tác qua kubectl.

Một số lỗi thường gặp

Minikube start bị lỗi driver Docker

  • Kiểm tra Docker đã chạy chưa: systemctl status docker

Kubectl không nhận cluster

  • Chạy lại: kubectl config use-context minikube

Pod stuck ở Pending

  • Có thể thiếu tài nguyên RAM/CPU → tăng cấu hình Minikube:
minikube start --cpus=4 --memory=8192

Kết Luận

Như vậy là mình đã giới thiệu về cách cài đặt Kubernetes local bằng Minikube, làm quen với các lệnh cơ bản của kubectl, tạo thử một Pod Nginx và xoá nó. Ở bài tiếp theo, chúng ta sẽ tìm hiểu chi tiết về:

  • Pod (đơn vị nhỏ nhất trong Kubernetes)
  • ReplicaSet (công cụ scale và duy trì số lượng Pod mong muốn)

Hy vọng series về k8s này sẽ giúp mình và mọi người nắm vững Kubernetes và áp dụng hiệu quả vào công việc. Nếu có câu hỏi hay góp ý nào hãy comment xuống bên dưới nhé, còn nếu thấy bài viết hữu ích hãy cho mình một upvote nhé, cuối cùng xin cảm ơn các bạn 😄


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí