Kubectl và các command cơ bản

Tram Ho

Mở đầu

Kubectl là công cụ quản trị Kubernetes thông qua giao diện dòng lệnh, cho phép bạn thực thi các câu lệnh trong Kubernetes cluster. Kubectl sử dụng Kubernetes API để tương tác với Kubernetes cluster. Để có thể sử dụng kubectl trong cluster, bạn sẽ cần phải thực hiện một số bước cài đặt và cấu hình cho nó, hãy xem thêm tại đây.

Thông qua các lệnh kubectl, bạn có thể triển khai các ứng dụng, theo dõi và quản lý tài nguyên của cluster. Trong bài viết này, mình sẽ cùng các bạn tìm hiểu các câu lệnh cơ bản nhất của kubectl, rất cần thiết cho việc quản trị các hệ thống Kubernetes.

Tạo và quản lý tài nguyên trong cluster

Kubectl create

Giả sử bạn đã có một Kubernetes cluster đang hoạt động, giờ đây bạn có thể triển khai ứng dụng của mình lên trên cluster. Để triển khai một ứng dụng lên cluster của mình, bạn cần tạo ra nhiều các loại tài nguyên khác nhau. Và với kubectl, bạn có thể tạo gần như bất cứ loại tài nguyên nào trong 1 cụm. Tài nguyên bạn tạo ra có thể bao gồm: namespace (ns), deployment, service, cronjob (cj), job. Bạn có thể quan sát một số ví dụ dưới đây:

Tạo một namespace mới

Tạo một deployment redis, sử dụng image redis

Tạo một job in ra “Hi, thanhthu”

Kubectl edit

Sau khi đã tạo ra các tài nguyên cần thiết cho ứng dụng của mình, rất có thể trong quá trình test, vận hành sau đó bạn sẽ cần phải cập nhật và chỉnh sửa lại chúng. Khi đó, chúng ta có thể nghĩ đến việc sử dụng lệnh kubectl edit. Với lệnh này, bạn có thể chỉnh sửa bất cứ tài nguyên nào đang chạy trên cụm của mình.

Ví dụ, khi bạn muốn chỉnh sửa job vừa tạo ở trên, bạn có thể sử dụng lệnh Kubectl edit deployment/edit. Sau đó, file config của job này sẽ được mở với trình soạn thảo văn bản mặc định của bạn như sau:

Sau đó bạn có thể chỉnh sửa những config cần thiết rồi lưu chúng lại:

Kubectl delete

Khi bạn không còn cần dùng đến một tài nguyên nào đó, hãy sử dụng kubectl để xóa chúng đi để tránh lãng phí tài nguyên của cụm. Ví dụ:

Lưu ý: Một lưu ý nho nhỏ là sau khi một tài nguyên bị xóa đi thì nó sẽ không thể khôi phục lại được mà bạn buộc phải tạo lại nó. Vậy nên trước khi xóa một tài nguyên nào đó, bạn hãy chắc chắn hiểu về tài nguyên đó và biết mình đang làm gì nhé

Kubectl apply

Ngoài các cách tạo và chỉnh sửa tài nguyên kubernetes cluster đã nêu ở trên thì chúng ta còn có lệnh kubectl apply. So với việc sử dụng kubectl create hay kubectl edit thì kubectl apply mang lại nhiều sự linh hoạt hơn. kubectl apply quản lý các ứng dụng thông qua các tệp định nghĩa tài nguyên Kubernetes. Các tệp định nghĩa tài nguyên trong Kubernetes được gọi là các manifest file và có thể được viết bằng yaml hoặc json. Nó tạo và cập nhật các tài nguyên trong một cluster thông qua việc chạy kubectl apply. Đây là phương pháp tạo và sử dụng tài nguyên thường được áp dụng trong thực tế.

Ví dụ, tôi có một manifest file yaml có tên là deployment-nginx.yaml định nghĩa một deployment đơn giản như sau:

Sau đó, để tạo deployment trên, tôi chỉ cần thực hiện lệnh với cấu trúc kubectl apply (-f FILENAME | -k DIRECTORY).

Để cập nhật các tài nguyên, ta chỉ cần chỉnh sửa các manifest file và thực hiện apply lại chúng.

Theo dõi, giám sát và khắc phục lỗi

Khi các ứng dụng triển khai trên cluster của bạn gặp lỗi hoặc khi vấn đề xuất phát từ chính cluster của bạn thì làm thế nào để bạn có thể tìm ra lỗi và khắc phục chúng? Trong những tình huống như vậy, người quản trị cluster thường sẽ nghĩ ngay đến việc sử dụng các lệnh kubectl để tìm ra nguyên nhân cũng như tìm ra cách giải quyết. Kubectl cung cấp nhiều các lệnh rất hữu ích giúp ta thực hiện điều đó.

Kubectl get

Câu lệnh kubectl get dùng để lấy danh sách về một đối tượng tài nguyên trong cluster, cùng với các thông tin cơ bản. Ví dụ:

Ngoài ra, để lấy thông tin của một đối tượng với các thông số đầu đủ hơn, ta có thể sử dụng thêm tùy chọn -o wide, hoặc sử dụng tùy chọn -o yaml để lấy thông tin dưới dạng yaml như sau:

Khi xảy ra lỗi, sử dụng kubectl get sẽ giúp ta có thể xác định được lỗi đang nằm ở đối tượng nào trong cluster.

Kubectl describe

Với kubectl describe, ta có thể lấy được thông tin mô tả chi tiết về một loại đối tượng. Trường hợp sử dụng phổ biến nhất của câu lệnh này là xem thông tin mô tả của một pod hay một node trong cụm để xem có lỗi được mô tả trong phần Events hay không hoặc tài nguyên có bị hạn chế hay không.

Kubectl logs

Trong khi kubectl describe chủ yếu cho bạn biết thông tin về các sự khiện xảy ra với các ứng dụng đang chạy trong các pods của mình thì kubectl logs cung cấp chi tiết về tất cả những gì đang diễn ra trong kubernetes cluster của bạn liên quan đến một pod cụ thể. Bạn cũng cần hiểu được sự khác biệt này để xác định được lỗi xảy ra nằm bên trong ứng dụng của bạn hay nằm ở phía Kubernetes.

Kubectl exec

Để khắc phục lỗi hoặc khi các lệnh đã nêu ở trên đều không mang lại cho bạn các thông tin cần thiết để tìm ra lỗi, rất có thể bạn sẽ phải truy cập vào một container cụ thể trong pod để khắc phục sự cố trực tiếp từ trong container. Cấu trúc của lệnh kubectl exec như sau:

kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...]

Ví dụ:

Lưu ý: Với pod chỉ chứa 1 container thì bạn không cần chỉ định thêm tên container trong pod. Tuy nhiên với pod chứa nhiều container thì bạn cần sử dụng thêm tùy chọn -c để chỉ định tên của một container cụ thể. Ngoài ra, lệnh kubectl exec phải luôn đi kèm với shell mà bạn đang sử dụng trong pod.

Tạm kết

Trên đây là những câu lệnh cơ bản nhất mình thường sử dụng để quản trị một cụm Kubernetes cluster. Ngoài ra, còn rất nhiều các lệnh cùng nhiều tùy chọn khác nhau. Kubectl là một công cụ mạnh mẽ và rất hữu ích cho công việc quản trị cụm, bạn có thể tham khảo thêm một số lệnh khác từ Kubectl Cheat sheet này nhé. Cảm ơn các bạn đã theo dõi bài viết của mình!

Nguồn tham khảo

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo