Như mình đã nói trong bài viết về Những khái niệm quan trọng trong Kubernetes, Pod là một khái niệm, là nơi các container sẽ chạy trong Kubernetes. Một Pod có thể chứa một hoặc nhiều container với cùng context, cùng node, share network namespace và volume. Khi một Pod bị die hay gặp vấn đề, Kubernetes sẽ tự động tạo mới theo mong muốn của chúng ta sử dụng Controller Manager.
Chúng ta có 2 cách để tạo mới một Pod trong Kubernetes đó là chạy container trực tiếp từ Image sử dụng câu lệnh “run” hoặc định nghĩa thông tin của Pod sử dụng một tập tin cấu hình YAML sau đó sử dụng câu lệnh “create” hoặc câu lệnh “apply” để chạy. Mình đã hướng dẫn các bạn tạo mới Pod sử dụng command “run” nên trong bài viết này, mình sẽ hướng dẫn các bạn tạo mới Pod với tập tin cấu hình các bạn nhé!
Các bạn có thể định nghĩa thông tin của một Pod sử dụng tập tin có nội dung cơ bản như sau:
1 2 3 4 5 6 7 8 9 10 11 |
apiVersion: v1 kind: Pod metadata: name: <name> spec: containers: - name: <container_name> image: <container_image> - name: <container_name> image: <container_image> ... |
Trong đó:
- <name> là tên của Pod
- <container_name> là tên của container trong Pod sau khi khởi tạo
- <container_image> là tên của image được sử dụng để tạo container.
Như các bạn thấy, chúng ta có thể định nghĩa một hoặc nhiều container chạy trong cùng một Pod bằng cách thêm nhiều section cho container name và container image trong tập tin YAML này.
Ví dụ của mình như sau:
1 2 3 4 5 6 7 8 9 10 |
apiVersion: v1 kind: Pod metadata: name: huongdanjava spec: containers: - name: node-hello image: gcr.io/google-samples/node-hello:1.0 - name: nginx image: nginx |
Kết quả khi sử dụng command create để tạo mới Pod này như sau:
Các bạn có thể lấy thông tin tất cả các Pod sử dụng câu lệnh:
1 |
kubectl get pods |
như sau:
Xem thông tin của Pod vừa mới tạo sử dụng câu lệnh:
1 |
kubectl describe pod <pod_name> |
Các bạn có thể thấy, 2 containers tên là node-hello và nginx đã được tạo trong Pod “huongdanjava” này. Dựa vào thông tin này, chúng ta cũng biết được Pod của chúng ta đang chạy trên node nào nữa.
Các bạn cũng có thể sử dụng câu lệnh:
1 |
kubectl logs <pod_name> -c <container_name> |
để xem log stdout của một container nào đó nếu container đó có. Hai container mình vừa tạo chỉ có nginx là có log nên khi mình thực hiện câu lệnh này, kết quả như sau:
Để xoá một Pod, các bạn có thể sử dụng câu lệnh sau:
1 |
kubectl delete pod <pod-name> |
Ví dụ của mình như sau:
1 |
kubectl delete pod node-hello |
Kết quả: