Trong bài viết này, chúng ta sẽ xem cách tạo Pod đầu tiên trên Kubernetes Cluster. Chúng ta sẽ xem các bước để tạo pod cho Nginx.
APod là đơn vị thực thi cơ bản của ứng dụng Kubernetes. Nó là tập hợp các container được triển khai cùng nhau trên cùng một máy chủ. Các Pod trong cụm Kubernetes có thể được sử dụng theo hai cách:
Nếu chúng ta triển khai một container duy nhất, chúng ta thường có thể thay thế từ "pod" bằng "container". Pod cho phép chia sẻ dữ liệu và giao tiếp giữa các thành phần của chúng.
Pod luôn chạy trên một Node. Node là máy worker trong Kubernetes và có thể là máy ảo hoặc máy vật lý, tùy thuộc vào cụm. Mỗi Node được quản lý bởi Master. Một Node có thể có nhiều pod và Kubernetes master sẽ tự động xử lý việc lên lịch cho các pod trên các Node trong cụm.
mkdir my-first-podcd my-first-pod/
Trước khi tiếp tục, hãy xác minh trạng thái của cụm.
Để kiểm tra các Nút có sẵn trong cụm và kiểm tra phiên bản của "kubectl", hãy sử dụng các lệnh sau.
sudo kubectl get nodessudo kubectl version
Sử dụng lệnh sau để liệt kê các pod trong không gian tên mặc định. Vì đây sẽ là pod đầu tiên của chúng ta trên Cluster, bạn sẽ không thấy bất kỳ pod nào trong không gian tên mặc định.
sudo kubectl get pods
Khi bạn có Nodes trong cluster, bạn đã sẵn sàng để tạo pod đầu tiên của mình.
Tạo tệp "my-first-pod.yml" với khối mã sau
vim my-first-pod.yml
Tại đây,
sudo kubectl apply -f my-first-pod.yml
Bạn có thể lấy thông tin chi tiết về pod bằng lệnh sau.
sudo kubectl get pods
Để xác nhận xem Pod có thực sự đang chạy hay không, hãy chạy lệnh sau.Lệnh này sẽ chạy một lệnh bên trong pod của chúng ta (Lưu ý: Lệnh này tương tự như lệnh docker exec.)
sudo kubectl execmyfirstpod — service nginx status
Nếu bạn không còn cần pod nữa, bạn có thể xóa pod bằng lệnh "kubectl delete command".
sudo kubectl delete pods myfirstpod
Cuối cùng, để xác minh xem pod đã bị xóa hay chưa, hãy sử dụng lệnh sau.
sudo kubectl get pods
Kết luận
APod là đơn vị thực thi cơ bản của ứng dụng Kubernetes. Nó là tập hợp các container được triển khai cùng nhau trên cùng một máy chủ. Các Pod trong cụm Kubernetes có thể được sử dụng theo hai cách:
- Các Pod chạy một container duy nhất:Đây là cách phổ biến nhất để sử dụng Pod. Kubernetes quản lý các pod thay vì quản lý trực tiếp các container.
- Các pod chạy nhiều container cần hoạt động cùng nhau:Trong mô hình này, một pod có thể có nhiều container được kết nối chặt chẽ để chia sẻ tài nguyên.
Nếu chúng ta triển khai một container duy nhất, chúng ta thường có thể thay thế từ "pod" bằng "container". Pod cho phép chia sẻ dữ liệu và giao tiếp giữa các thành phần của chúng.
Pod luôn chạy trên một Node. Node là máy worker trong Kubernetes và có thể là máy ảo hoặc máy vật lý, tùy thuộc vào cụm. Mỗi Node được quản lý bởi Master. Một Node có thể có nhiều pod và Kubernetes master sẽ tự động xử lý việc lên lịch cho các pod trên các Node trong cụm.
5 giai đoạn trong vòng đời của pod
- Đang chờ: Pod đã được hệ thống Kubernetes chấp nhận, nhưng một hoặc nhiều hình ảnh Container chưa được tạo. Điều này bao gồm thời gian trước khi được lên lịch cũng như thời gian dành cho việc tải xuống hình ảnh qua mạng, có thể mất một thời gian.
- Đang chạy: Pod đã được liên kết với một node và tất cả các Container đã được tạo. Ít nhất một Container vẫn đang chạy hoặc đang trong quá trình khởi động hoặc khởi động lại.
- Thành công:Tất cả các Container trong Pod đã kết thúc thành công và sẽ không được khởi động lại.
- Thất bại:Tất cả các Container trong Pod đã kết thúc và ít nhất một Container đã kết thúc do lỗi. Tức là, Container đã thoát với trạng thái khác không hoặc đã bị hệ thống chấm dứt.
- Không xác định: Vì một lý do nào đó, trạng thái của Pod không thể được lấy, thường là do lỗi khi giao tiếp với máy chủ của Pod.
Điều kiện tiên quyết
- Tài khoản AWS (Tạo một tài khoản nếu bạn chưa có)
- Cụm Kubernetes (Tìm kiếm "Thiết lập Cụm Kubernetes trên AWS EC2 Phiên bản Ubuntu sử dụng kubeadm" nếu bạn muốn tìm hiểu cách tạo Kubernetes Cluster).
Những gì chúng tôi sẽ làm
- Tạo KubernetesPod cho NginX và xóa nó
Tạo Kubernetes Pod cho Nginx
Để tạo firstpod của chúng ta, hãy tạo một thư mục mới để tạo Tệp Object/Pod. Sử dụng lệnh sau để tạo một thư mục mới trong hệ thống của bạnmkdir my-first-podcd my-first-pod/
Trước khi tiếp tục, hãy xác minh trạng thái của cụm.
Để kiểm tra các Nút có sẵn trong cụm và kiểm tra phiên bản của "kubectl", hãy sử dụng các lệnh sau.
sudo kubectl get nodessudo kubectl version
Sử dụng lệnh sau để liệt kê các pod trong không gian tên mặc định. Vì đây sẽ là pod đầu tiên của chúng ta trên Cluster, bạn sẽ không thấy bất kỳ pod nào trong không gian tên mặc định.
sudo kubectl get pods
Khi bạn có Nodes trong cluster, bạn đã sẵn sàng để tạo pod đầu tiên của mình.
Tạo tệp "my-first-pod.yml" với khối mã sau
vim my-first-pod.yml
Mã:
---apiVersion: v1kind: Podmetadata: name: myfirstpod labels: app: webspec: containers: - name: myfirstcontainer image: nginx ports: - containerPort: 80
- apiVersion
- : APIVersion định nghĩa lược đồ phiên bản của biểu diễn đối tượng này.
- kind: Loại đối tượng bạn muốn tạo. Đây là pod vì chúng ta đang tạo một pod.
- name: Tên phải là duy nhất trong một không gian tên.
- labels: Bản đồ các khóa và giá trị chuỗi có thể được sử dụng để sắp xếp và phân loại các đối tượng
- spec: Chỉ định hành vi mong muốn của pod.
sudo kubectl apply -f my-first-pod.yml
Bạn có thể lấy thông tin chi tiết về pod bằng lệnh sau.
sudo kubectl get pods
Để xác nhận xem Pod có thực sự đang chạy hay không, hãy chạy lệnh sau.Lệnh này sẽ chạy một lệnh bên trong pod của chúng ta (Lưu ý: Lệnh này tương tự như lệnh docker exec.)
sudo kubectl execmyfirstpod — service nginx status
Nếu bạn không còn cần pod nữa, bạn có thể xóa pod bằng lệnh "kubectl delete command".
sudo kubectl delete pods myfirstpod
Cuối cùng, để xác minh xem pod đã bị xóa hay chưa, hãy sử dụng lệnh sau.
sudo kubectl get pods