Cách đặt các chính sách khởi động lại Kubernetes khác nhau

Cach Dat Cac Chinh Sach Khoi Dong Lai Kubernetes Khac Nhau



Chúng tôi sẽ nói cụ thể về các chính sách khởi động lại Kubernetes khác nhau trong bài viết này. Trước tiên chúng ta hãy thảo luận về các chính sách khác nhau được sử dụng khi phải khởi động lại Kubernetes. Bạn có thể sử dụng các Chính sách này để ngừng triển khai một khối lượng công việc nhất định trong cụm. Mặc dù việc áp đặt các tiêu chuẩn nghiêm ngặt trong cụm thường được thực hiện để đảm bảo tuân thủ, nhưng quản trị viên cụm cũng nên tuân theo một số phương pháp hay nhất đã được đề xuất.

Chính sách khởi động lại Kubernetes là gì?

Mỗi nhóm Kubernetes tuân theo một vòng đời cụ thể. Nó bắt đầu ở giai đoạn “đang chờ xử lý” và nếu một hoặc nhiều vùng chứa chính được khởi chạy thành công, thì sẽ chuyển sang giai đoạn “đang chạy”. Tùy thuộc vào việc các thùng chứa trong nhóm thành công hay thất bại, quy trình sau đó sẽ chuyển sang giai đoạn “thành công” hoặc “thất bại”.







Để khởi động lại chính sách ở cấp vùng chứa được áp dụng, có thể sử dụng ba tùy chọn:



Luôn

Mỗi khi một vùng chứa kết thúc, Kubernetes sẽ tạo một vùng chứa mới vì nhóm cần phải hoạt động mọi lúc.



thất bại

Nếu vùng chứa thoát ra với mã trả về khác 0, thì vùng chứa chỉ khởi động lại một lần. Không cần khởi động lại đối với các vùng chứa trả về 0 (thành công).





Chưa từng

Vùng chứa không thể khởi động lại.

Bây giờ, trong phần sau, chúng tôi sẽ thảo luận về cách bạn có thể khởi động lại một nhóm.



Làm cách nào để khởi động lại một nhóm trong Kubernetes?

Để khởi động lại nhóm Kubernetes, hãy ra lệnh bằng công cụ kubectl. Nó sẽ kết nối với máy chủ KubeAPI. Hãy để chúng tôi khám phá các tùy chọn có sẵn:

Khởi động lại Container trong Pod

Một nhóm có thể chứa một số thùng chứa. Mặt khác, về cơ bản, bạn kết nối với vùng chứa chính trong nhóm khi bạn kết nối với vùng chứa đó. Bạn có thể kết nối với từng vùng chứa mà bạn đã xác định trong một trường hợp nếu bạn đã xác định nhiều vùng chứa.

Bạn có thể xem bên dưới ví dụ về thông số kỹ thuật nhóm nhiều container:


Điều này mô tả một khối lượng được chia sẻ và hai vùng chứa. Tệp HTML sẽ được cung cấp bởi bộ chứa NGINX và cứ sau mỗi giây, bộ chứa Ubuntu sẽ thêm dấu ngày vào tệp HTML.

Vì bạn không chỉ định vùng chứa nào sẽ kết nối, nên nó sẽ tự động chọn vùng chứa đầu tiên (NGINX) khi bạn cố gắng kết nối với nhóm đó. Ảnh chụp màn hình được đính kèm bên dưới:


Bây giờ, bạn có thể cố gắng chấm dứt quy trình PID 1 bên trong vùng chứa hiện đang hoạt động. Chạy các lệnh sau với quyền root để thực hiện việc này:


Bạn cũng có thể sử dụng công cụ kubectl được mô tả bên dưới:


Theo thông số kỹ thuật của nhóm, giờ đây K8 sẽ cố gắng khởi động lại vùng chứa đã bị phá hủy. Đối với điều đó, lệnh 'mô tả' được sử dụng như sau:


Đây là kết quả của lệnh trên:


Trạng thái hiện tại là “đang diễn ra”, trong khi trạng thái trước đó là “đã chấm dứt”. Điều này có nghĩa là vùng chứa đã được khởi động lại, theo this. Tuy nhiên, không phải tất cả các vùng chứa đều có thể truy cập thông tin đăng nhập gốc. Đây là lý do tại sao phương pháp này có thể không hữu ích lắm.

Khởi động lại Pod bằng cách mở rộng quy mô

Chia tỷ lệ số lượng bản sao của nhóm thành 0 và sau đó tăng tỷ lệ lên 1 là cách đơn giản nhất để khởi động lại nó. Thay vào đó, bạn phải xây dựng Triển khai vì lệnh tỷ lệ không thể được sử dụng trên các nhóm. Đây là một cách dễ dàng để thực hiện điều đó:


Tỷ lệ thành 0 và sau đó thành 1 sau đó. Bằng cách này, nhóm sẽ bị chấm dứt và sau đó được triển khai lại cho cụm:


Các bản sao được đặt thành 1 như bạn có thể thấy trong hình ảnh này.


Để xem chi tiết triển khai, chúng tôi hiện đã sử dụng “kubectl get Deploys.” Sau đây là danh sách cả lệnh và kết quả:

Khởi động lại một Pod bằng cách xóa nó và triển khai lại nó

Sử dụng lệnh “kubectl delete”, bạn có thể xóa một nhóm và sau đó triển khai lại nhóm đó. Tuy nhiên, cách tiếp cận này khá gây rối, do đó nó không được khuyến khích.

Khởi động lại Pod bằng Rollout

Để khởi động lại một nhóm theo cách được mô tả ở trên, bạn phải hủy nhóm hiện có rồi tạo một nhóm mới hoặc thu nhỏ số lượng bản sao xuống rồi tăng lên. Với Kubernetes phiên bản 1.15, bạn có thể khởi động lại Triển khai theo kiểu cuốn chiếu. Đây là quy trình được đề xuất để khởi động lại một nhóm. Chỉ cần nhập lệnh sau để bắt đầu:


Bây giờ, nếu bạn theo dõi trạng thái triển khai trên một thiết bị đầu cuối khác, bạn sẽ nhận thấy luồng sự kiện như sau:


Nếu nó hoạt động tốt, nó sẽ thu nhỏ bản sao Triển khai trước đó và tạo ra một bản sao mới của nhóm. Kết quả là như nhau, ngoại trừ trong cách tiếp cận này, việc điều phối cơ bản được xử lý bởi Kubernetes.

Kubernetes Pods có thể được khởi động lại theo những cách khác nhau như thế nào?

Trước tiên chúng ta hãy bắt đầu với docker container. Với lệnh sau, Docker container có thể được khởi động lại:

> docker khởi động lại container_id

Nhưng trong Kubernetes, không có lệnh nào có thể so sánh được để khởi động lại các nhóm, đặc biệt nếu không có tệp YAML được chỉ định. Thay vào đó, bạn có thể khởi động lại nhóm Kubernetes bằng lệnh kubectl. Các lệnh sau đây được liệt kê:

Lệnh Kubectl Set Env

Một phương pháp là sử dụng lệnh kubectl scale. Điều này sẽ sửa đổi số lượng bản sao của nhóm cần được khởi động lại. Dưới đây là một lệnh ví dụ về cách đặt các bản sao trong nhóm thành hai:

> triển khai quy mô kubectl lần triển khai đầu tiên --bản sao = 2

Lệnh khởi động lại triển khai

Tại đây, chúng tôi sẽ trình bày cách sử dụng lệnh khởi động lại triển khai để khởi động lại các nhóm Kubernetes:

> kubectl triển khai khởi động lại lần triển khai đầu tiên -N không gian tên demo

Bộ điều khiển được yêu cầu tiêu diệt từng nhóm riêng lẻ bằng lệnh. Sau đó, nó mở rộng các nhóm mới bằng cách sử dụng Bản sao. Quá trình này vẫn tiếp tục cho đến khi mọi nhóm mới gần đây hơn mọi nhóm hiện tại khi bộ điều khiển hoạt động trở lại.

Lệnh Xóa Pod

Phần này sẽ giới thiệu cách sử dụng lệnh xóa để khởi động lại các nhóm Kubernetes. Bạn có thể nhận thấy rằng chúng tôi đã sử dụng lệnh tiếp theo để loại bỏ đối tượng API nhóm trong hình ảnh này:

. > kubectl xóa nhóm đầu tiên -N demo_namespace

Điều mong đợi bị mâu thuẫn khi xóa đối tượng nhóm vì API Kubernetes là khai báo. Do đó, để giữ tính nhất quán với dự kiến, nhóm được tạo lại.

Có thể khởi động lại một nhóm tại một thời điểm bằng cách sử dụng lệnh trước đó. Tham khảo lệnh đính kèm để khởi động lại một số nhóm:

> kubectl xóa bản sao pods-multiple-n demo_namespace

Lệnh đã nói ở trên khởi động lại từng nhóm bằng cách xóa toàn bộ Bản sao của các nhóm và sau đó tạo nó từ đầu.

Phần kết luận

Bài đăng này cung cấp thông tin về các chính sách khởi động lại Kubernetes khác nhau. Chúng tôi minh họa từng giai đoạn với sự trợ giúp của các ví dụ mẫu. Ngoài ra, hãy thử các lệnh này và xem đầu ra mà chúng tạo ra.