StatefulSets chứa một tập hợp các Pod với các danh tính duy nhất, cố định và tên máy chủ ổn định. Một mẫu pod được sử dụng trong Statefulset, chứa thông số kỹ thuật cho các pod của nó, các pod được tạo bằng thông số kỹ thuật này. Chúng ta có thể triển khai các ứng dụng có trạng thái và các ứng dụng cụm bằng Statefulsets trong Kubernetes. StatefulSet có thể được cập nhật bằng cách thực hiện các thay đổi đối với thông số kỹ thuật Pod của nó, bao gồm các hình ảnh và khối lượng chứa của nó.
StatefulSet có thể được sử dụng khi các ứng dụng yêu cầu bất kỳ thuộc tính nào sau đây.
Để biết thêm về Statefulset, hãy nhấp vào đây.
Trong bài viết này, chúng ta sẽ tạo một Statefulset với các bản sao của pod Nginx. Chúng ta sẽ thực hiện các thao tác trên Pod để xem cách chúng bị xóa và được tạo ra.
vim statefulset.yml
Trong ví dụ này,
Để tạo một Statefulset, hãy thực hiện các lệnh sau.
kubectl get statefulset
kubectl create -f statefulset.yml
Thực hiện 2 lệnh sau để liệt kê Statefulset và Dịch vụ được tạo ở bước trên.
kubectl get statefulset
kubectl get service
Lấy các pod bằng lệnh sau và xem các Pod có số là Hậu tố trong tên Pod.
kubectl get pods
Để có được thông tin chi tiết đầy đủ về Statefulset, hãy thực hiện các lệnh sau.
kubectl get statefulset
kubectl describe statefulset web
Bây giờ, hãy xóa các pod và xem tên được bảo toàn như thế nào ngay cả sau khi các pod mới được tạo.
Chúng tôi đang xóa 2 pod để xem tên nào sẽ được gán cho các pod mới khi tạo.
kubectl get pods
kubectl delete pods web-0 web-2
kubectl get pods
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng, ngay cả sau khi xóa các pod, các pod mới tạo vẫn có cùng tên.
StatefulSet có thể được sử dụng khi các ứng dụng yêu cầu bất kỳ thuộc tính nào sau đây.
- Định danh mạng duy nhất, ổn định.
- Lưu trữ ổn định, liên tục.
- Triển khai và mở rộng theo thứ tự, uyển chuyển.
- Cập nhật lăn tự động, có thứ tự.
Để biết thêm về Statefulset, hãy nhấp vào đây.
Trong bài viết này, chúng ta sẽ tạo một Statefulset với các bản sao của pod Nginx. Chúng ta sẽ thực hiện các thao tác trên Pod để xem cách chúng bị xóa và được tạo ra.
Điều kiện tiên quyết
- Cụm Kubernetes có ít nhất 1 nút worker.
Nếu bạn muốn tìm hiểu cách tạo Cụm Kubernetes, hãy nhấp vào đây. Hướng dẫn này sẽ giúp bạn tạo cụm Kubernetes với 1 Master và 2 Node trên AWS Ubuntu 18l04 EC2 Instances.
Những gì chúng ta sẽ làm
- Tạo một Statefulset
Tạo một Statefulset
Tạo một tệp và thêm định nghĩa Statefulset sau vào đó.vim statefulset.yml
Mã:
apiVersion: v1kind: Servicemetadata: name: nginx labels: app: nginxspec: ports: - port: 80 name: web clusterIP: None selector: app: nginx---apiVersion: apps/v1kind: StatefulSetmetadata: name: webspec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 3 template: metadata: labels: app: nginx spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: k8s.gcr.io/nginx-slim:0.8 ports: - containerPort: 80 name: web
Trong ví dụ này,
- Một Dịch vụ không có giao diện, có tên là
nginx
, được sử dụng để kiểm soát mạng. - StatefulSet, có tên là web, có 3 bản sao của container nginx sẽ được khởi chạy trong các Pod duy nhất.
- Nginx Image với phiên bản slim:0.8 được sử dụng để triển khai Nginx.
Để tạo một Statefulset, hãy thực hiện các lệnh sau.
kubectl get statefulset
kubectl create -f statefulset.yml
Thực hiện 2 lệnh sau để liệt kê Statefulset và Dịch vụ được tạo ở bước trên.
kubectl get statefulset
kubectl get service
Lấy các pod bằng lệnh sau và xem các Pod có số là Hậu tố trong tên Pod.
kubectl get pods
Để có được thông tin chi tiết đầy đủ về Statefulset, hãy thực hiện các lệnh sau.
kubectl get statefulset
kubectl describe statefulset web
Bây giờ, hãy xóa các pod và xem tên được bảo toàn như thế nào ngay cả sau khi các pod mới được tạo.
Chúng tôi đang xóa 2 pod để xem tên nào sẽ được gán cho các pod mới khi tạo.
kubectl get pods
kubectl delete pods web-0 web-2
kubectl get pods
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng, ngay cả sau khi xóa các pod, các pod mới tạo vẫn có cùng tên.