Stateful Sets trong kubernetes.

 Khi set up một hệ thống kubernetes, có cả database trong đó thì phần tạo database master - slave trong kubernetes là phần tương đối khó nhằn, 

Ví dụ trong bài viết này ta sẽ tạo một pod master và 2 pods slave , Pod master cho phép đọc và ghi dữ liệu, trong khi các pods slave còn lại chỉ cho phép đọc.



Trước tiên ta sẽ set up pod master trước và sau đó là các slave. 



Các bước set up các pod master và slave như hình. 
Lúc này ta khai báo biến MASTER_HOST trỏ đến mysql-master để dữ liệu cần replicate từ master đã chỉ định 


Trong headless service cần khai báo metadata name là: 

name : mysql-h
clusterIP: None
 
Và trong pod-definition.yml thì cần khai báo :

subdomain: mysql-h
hostname: mysql-pod


Copy metadata và spec vào phần template của Deployment và đổi Deployment thành StatefulSet 


Lúc này DNS trong kubernetes sẽ là : mysql-pod.mysql-h.default.svc.cluster.local 

Nó sẽ bị duplicate DNS như trên. 




Stateful Sets trong kubernetes là khi bạn tạo các pod StatefulSet thì pod được tạo đầu tiên sẽ là master, các pod tạo sau sẽ là slave và pod đầu tiên sẽ gán 0 mặc định. Sau khi pod đầu tiên được tạo thành công và có trạng thái là Ready thì pod thứ 2 mới bắt đầu tạo. 

StatefulSet cung cấp đảm bảo một thứ tự (Ordering) của việc tạo các pod và tính duy nhất được gán cho các pod. 

Và ta sẽ thêm serviceName : mysql-h vào phần spec của file deployment. StatefulSet sẽ tự động gán DNS riêng cho từng pod và pod đầu tiên mặc định sẽ là master. 



DNS name đã được specify cho từng Pod riêng biệt. 



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.