Mình đã giới thiệu với các bạn về command “create” của Kubernetes Controller để tạo mới các đối tượng như Pod, Deployment trong Kubernetes cluster. Chúng ta cũng có thể làm điều này sử dụng command “apply”.
Ví dụ mình có một tập tin cấu hình để tạo mới một Pod với nội dung như sau:
1 2 3 4 5 6 7 8 |
apiVersion: v1 kind: Pod metadata: name: node-hello spec: containers: - name: node-hello image: gcr.io/google-samples/node-hello:1.0 |
Các bạn có thể sử dụng command “apply” để tạo mới Pod này, với cú pháp như sau:
1 |
kubectl apply -f <path_to_configuration_file> |
Trong đó <path_to_configuration_file> là đường dẫn đến tập tin định nghĩa các thông tin về đối tượng Kubernetes mà chúng ta cần khởi tạo.
Kết quả của mình khi chạy command “apply” với tập tin cấu hình trên:
1 |
kubectl apply -f k8s.yaml |
như sau:
Sự khác nhau giữa command “create” và command “apply” đó là: command “create” chỉ chạy được 1 lần cho một đối tượng Kubernetes cùng tên, còn command “apply” nếu chúng ta có thay đổi cho đối tượng Kubernetes mà chúng ta đã tạo, chúng ta có thể sử dụng command này để cập nhập những thay đổi đó.
Ví dụ nếu bây giờ các bạn chạy lại command trên với command “create”:
1 |
kubectl create -f k8s.yaml |
các bạn sẽ thấy có lỗi như sau:
Nếu mình cập nhập tập tin cấu hình trên như sau:
1 2 3 4 5 6 7 8 9 10 11 |
apiVersion: v1 kind: Pod metadata: name: node-hello labels: env: test purpose: blog spec: containers: - name: node-hello image: gcr.io/google-samples/node-hello:1.0 |
thì khi chạy lại command “apply”:
1 |
kubectl apply -f k8s.yaml |
command này vẫn thành công:
và khi kiểm tra thông tin của Pod, các bạn sẽ thấy Pod này được cập nhập thông tin Labels như sau: