Docker - Cách hoạt động của Kubernetes
Xin chào các nhà法师 tương lai! Tôi rất vui mừng được làm hướng dẫn viên của bạn trong hành trình thú vị vào thế giới của Kubernetes. Là một ai đó đã dạy khoa học máy tính trong nhiều năm, tôi có thể đảm bảo với bạn rằng mặc dù Kubernetes có thể听起来 như một sinh vật bí ẩn từ một bộ phim khoa học viễn tưởng,但它 thực sự là một công cụ mạnh mẽ đang cách mạng hóa cách chúng ta quản lý các ứng dụng container hóa. Hãy cùng tìm hiểu!
Kubernetes là gì?
Kubernetes, thường được viết tắt là K8s (vì có 8 chữ cái giữa 'K' và 's'), là một nền tảng quản lý container mã nguồn mở. Tôi biết rằng điều này có vẻ phức tạp, hãy cùng phân tích nó.
Hãy tưởng tượng bạn đang điều hành một dịch vụ giao pizza lớn. Bạn có rất nhiều đơn hàng (ứng dụng) đến và bạn cần quản lý các tài xế giao hàng (container) một cách hiệu quả. Kubernetes giống như một quản lý siêu thông minh quyết định tài xế nào nhận đơn hàng nào, đảm bảo luôn có đủ tài xế trên đường, và thậm chí gọi backup nếu xe của tài xế bị hỏng.
Các khái niệm chính
Trước khi chúng ta đi vào chi tiết, hãy làm quen với một số khái niệm chính của Kubernetes:
- Pods: Các đơn vị triển khai nhỏ nhất trong Kubernetes.
- Nodes: Các máy làm việc trong một cụm Kubernetes.
- Cluster: Một tập hợp các node chạy các ứng dụng container hóa.
- Control Plane: Não của Kubernetes, quản lý cụm.
Cách Kubernetes hoạt động
Bây giờ chúng ta đã có các nguyên liệu cơ bản, hãy xem Kubernetes làm thế nào để biến chúng thành một món ăn công nghệ ngon lành!
1. Control Plane
Control Plane giống như đầu bếp chính trong bếp của chúng ta. Nó chịu trách nhiệm đưa ra các quyết định toàn cục về cụm và phát hiện và phản hồi các sự kiện trong cụm.
apiVersion: v1
kind: Pod
metadata:
name: control-plane-pod
spec:
containers:
- name: kube-apiserver
image: k8s.gcr.io/kube-apiserver:v1.21.0
- name: kube-controller-manager
image: k8s.gcr.io/kube-controller-manager:v1.21.0
- name: kube-scheduler
image: k8s.gcr.io/kube-scheduler:v1.21.0
Tệp YAML này định nghĩa một Pod chứa các thành phần chính của Control Plane. Trong thực tế, các thành phần này thường chạy trên các máy riêng biệt để có tính khả dụng cao.
2. Nodes
Nodes là những người làm việc chăm chỉ trong tổ ong Kubernetes của chúng ta. Chúng là các máy thực sự chạy các ứng dụng container hóa của chúng ta.
apiVersion: v1
kind: Node
metadata:
name: worker-node-1
spec:
podCIDR: 10.244.1.0/24
status:
capacity:
cpu: "2"
memory: 4Gi
Tệp YAML này mô tả một Node với 2 CPU và 4GB RAM. Trong thực tế, bạn thường không tạo Nodes thủ công - chúng sẽ được cung cấp bởi nhà cung cấp đám mây hoặc cơ sở hạ tầng trong nhà.
3. Pods
Pods là nơi xảy ra phép màu! Chúng là các đơn vị triển khai nhỏ nhất trong Kubernetes, thường chứa một hoặc nhiều container.
apiVersion: v1
kind: Pod
metadata:
name: my-awesome-app
spec:
containers:
- name: my-app-container
image: my-app:1.0
ports:
- containerPort: 8080
Tệp YAML này định nghĩa một Pod tên là "my-awesome-app" với một container duy nhất. Container này dựa trên hình ảnh "my-app:1.0" và expose cổng 8080.
Kubernetes trong hành động
Bây giờ chúng ta đã准备好 các nguyên liệu, hãy xem Kubernetes làm thế nào để điều phối chúng!
- Bạn gửi ứng dụng của bạn đến Kubernetes (thường dưới dạng một tệp YAML).
- API server của Control Plane nhận yêu cầu này.
- Scheduler quyết định Node nào có đủ tài nguyên để chạy ứng dụng của bạn.
- Kubelet trên Node được chọn tạo Pod và khởi động container(s).
- Control Plane liên tục giám sát trạng thái của tất cả Pods và Nodes.
Nếu một Pod失败, Kubernetes có thể tự động khởi động lại nó. Nếu một Node失败, Kubernetes có thể调度 tất cả các Pod đang chạy trên nó đến các Nodes khỏe mạnh khác. Điều này giống như có một đội ngũ phục vụ super-attentive đảm bảo trải nghiệm ăn uống của bạn là hoàn hảo!
Các phương thức Kubernetes
Dưới đây là bảng một số phương thức phổ biến của Kubernetes:
Phương thức | Mô tả |
---|---|
kubectl create | Tạo một tài nguyên từ một tệp hoặc stdin |
kubectl get | Hiển thị một hoặc nhiều tài nguyên |
kubectl describe | Hiển thị thông tin chi tiết về một tài nguyên |
kubectl delete | Xóa tài nguyên |
kubectl apply | Áp dụng một cấu hình cho một tài nguyên |
kubectl logs | In日志 cho một container trong một pod |
kubectl exec | Chạy một lệnh trong một container |
kubectl port-forward | Chuyển tiếp một hoặc nhiều cổng local đến một pod |
Kết luận
Và thế là bạn đã có nó, các bạn! Chúng ta đã đi qua một chuyến du lịch nhanh chóng qua Kubernetes, từ các thành phần cơ bản đến cách nó giữ cho các ứng dụng container hóa của bạn chạy mượt mà. Nhớ rằng, giống như học nấu một món ăn phức tạp, việc thành thạo Kubernetes đòi hỏi thời gian và sự thực hành. Nhưng với sự kiên trì và tò mò, bạn sẽ điều phối container như một chuyên gia trong thời gian ngắn!
Khi chúng ta kết thúc, tôi nhớ lại một học sinh đã từng nói với tôi, "Kubernetes giống như chăn dắt mèo, nhưng những con mèo này là container, và Kubernetes là người chăn mèo giỏi nhất trên thế giới." Tôi không thể nói tốt hơn bản thân mình!
Tiếp tục khám phá, tiếp tục học hỏi, và quan trọng nhất, tiếp tục vui vẻ với công nghệ. Đến gặp lại lần sau, chúc các bạn vui vẻ với container!
Credits: Image by storyset