Hai tính năng "beta" quan trọng của Kubernetes 1.20

 Kubernetes 1.20 cho ra đời 2 tính năng thử nghiệm "beta" đó là cho phép Kubernetes admins và users có thêm quyền điều khiển tương thích trong việc "khi một pod được sinh ra thì quyền của việc mount volume trong pod như thế nào ? 

- Nó sẽ cho phép user bỏ qua quá trình set lại permission của volume khi thấy permission cho volume đã đúng. 

Thông thường nếu pod của bạn đang chạy với quyền non-root thì bạn phải set fsGroup trong pod của bạn mà volume của bạn có quyền đọc và ghi được.

Nhưng khi bạn set fsGroup  trong pod thì khi mỗi lần volume được mount trong pod thì nó phải set lại permission với câu lệnh chown()  và  chmod()  cho tất cả các files và thư mục trong volume, và thậm chí việc set lại permission xảy ra khi permission ban đầu đã đúng. Việc này rất tốn nhiều tài nguyên khi volume của bạn chứa rất nhiều file nhỏ và thư mục trong đó, đó là lý do vì sao khi quá trình khởi động một pod rất lâu. 

Kubernetes 1.20 cho ra đời 1 tính năng không tham gia vào việc set lại permission cho volume khi các permission đã set đúng trong quá trình init một pod. 

Vậy design pod như thế nào để bỏ qua quá trình set lại permission. 

securityContext:
  runAsUser: 1000
  runAsGroup: 3000
  fsGroup: 2000
  fsGroupChangePolicy: "OnRootMismatch"

Đó là fsGroupChangePolicy: "OnRootMismatch"  

Bạn có thể thêm ở đây : https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#configure-volume-permission-and-ownership-change-policy-for-pods

- Cho phép CSI drivers định nghĩa hỗ trợ cho fsGroup  dựa trên permission. 

Đối với các third party storage thì kubernetes sẽ hỗ trợ thông số .spec.fsGroupPolicy  cho phép CSI drivers có thể bỏ qua việc set lại permission cho volume khi các permission đã tồn tại chính xác trong quá trình khởi động một pod. 

Vậy giá trị của .spec.fsGroupPolicy  là như thế nào ? 

  ReadWriteOnceWithFSType     Đây là giá trị mặc định trong kubernetes 1.20, quá trình này là luôn determine volume khi 1 pod khởi động. 

  File Đây là giá trị khi khởi động một pod thì quá trình set permission luôn apply 

  None Không apply permission cho volume khi khởi động một pod.

Để sử dụng tính năng này cho CSI driver ta dùng tham số: fsGroupPolicy  trong .spec của file yaml. 


  


Nhận xét

Bài đăng phổ biến từ blog này

Trang web medium.com chết, vì sao ?

Cách sử dụng sys.argv trong python.

Thiết kế một RESTful API bằng python và flask.