Một bộ bản sao đảm bảo các bản sao được chỉ định của pod luôn chạy. Nó có thể được coi là sự thay thế cho bộ điều khiển sao chép. Sự khác biệt chính giữa hai bộ này là ReplicaSet cho phép chúng ta sử dụng thứ gọi là "Bộ chọn nhãn". Replica là một trong những bộ điều khiển Kubernetes. Nó được sử dụng để đảm bảo rằng chúng ta có một số lượng bản sao pod được chỉ định luôn hoạt động.
Mẫu của bộ bản sao trông như sau.
Trong bài viết này, chúng ta sẽ xem cách tạo một tập hợp bản sao và cách nó xác định các pod bằng nhãn.
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 18.04 EC2 Instances.
Định nghĩa đối tượng ở trên sẽ tạo ra ba bản sao của pod.
Đầu tiên, hãy kiểm tra bộ bản sao hiện có bằng lệnh sau.
Để tạo một bản sao, hãy thực hiện lệnh sau.
Trong ảnh chụp màn hình ở trên, bạn có thể thấy thông tin chi tiết về các ao được tạo sau khi tạo bộ bản sao.
Bây giờ, hãy tạo một pod riêng lẻ có cùng nhãn đã chỉ định trước đó trong định nghĩa của bộ bản sao.
Thực hiện các lệnh sau để tạo các pod trước đó và tạo một pod mới.
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng ngay cả sau khi tạo một pod mới, nó vẫn ở trạng thái kết thúc. Lý do cho điều này là chúng ta đã có một replicaset với các bản sao là 3 và chúng ta đang tạo một pod mới riêng biệt với cùng nhãn. Vì các nhãn và bộ chọn khớp với replicaset, nên nó xóa pod để duy trì số lượng bản sao đã chỉ định trong định nghĩa replicaset.
Bạn có thể lấy thông tin chi tiết về replicaset bằng các lệnh sau.
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng một replica set xóa pod để duy trì số lượng bản sao.
Bây giờ chúng ta hãy tạo apod không có nhãn bằng cách sử dụng định nghĩa pod sau.
Để tạo một pod mới mà không có bất kỳ nhãn nào, hãy thực hiện lệnh sau.
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng một newpod đã được tạo và replicaset không xóa newpod lần này.
Lý do cho điều này là cổng mới không có nhãn nào nên replicaset không khớp với nó và không coi nó là một phần của tập hợp bản sao.
Bây giờ chúng ta hãy thử tạo một cổng thuộc về tập hợp bản sao.
Thực hiện các lệnh sau để xóa một pod.
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng ngay cả sau khi xóa một pod thuộc về bộ bản sao, một pod mới đã được tạo. Một pod mới đã được tạo để duy trì số lượng bản sao mà chúng ta đã chỉ định trong định nghĩa bộ bản sao.
Bây giờ, khi bạn không còn cần bộ bản sao của mình nữa, bạn có thể xóa nó bằng các lệnh sau.
Vì pod mà chúng ta đã tạo riêng không phải là một phần của bộ bản sao nên chúng ta cần xóa nó riêng.
Sử dụng các lệnh. Để xóa pod không thuộc về replicaset.
Mẫu của bộ bản sao trông như sau.
Mã:
apiVersion: apps/v1kind: ReplicaSetMetadata: name: some-name labels: app: some-App tier: some-TierSpec: replicas: 3 # Ở đây, chúng ta cho k8s biết chúng ta muốn có bao nhiêu bản sao Selector: # Một trường chọn nhãn. matchLabels: tier: some-Tier matchExpressions: - {key: tier, operator: In, values: [some-Tier]} #set-based operators template: metadata: labels: app: some-App tier: someTier Spec: Containers:
Điều kiện tiên quyết
Cụm Kubernetes có ít nhất 1 nút công nhân.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 18.04 EC2 Instances.
Những gì chúng ta sẽ làm
- Tạo Replicaset
Tạo Replicaset
Tạo tệp mới và thêm định nghĩa tập hợp bản sao sau vào đó.
Mã:
vim my-replica-set.yml
Mã:
apiVersion: apps/v1kind: [B]ReplicaSet[/b]metadata: name: nginx-proxy labels: app: nginx-proxy tier: frontendspec: # sửa đổi bản sao theo trường hợp của bạn replicas: [B]3[/b] selector: matchLabels: tier: frontend template: metadata: labels: tier: frontend spec: containers: - name: nginx image: nginx
Định nghĩa đối tượng ở trên sẽ tạo ra ba bản sao của pod.
Đầu tiên, hãy kiểm tra bộ bản sao hiện có bằng lệnh sau.
Mã:
kubectl get replicaset
Mã:
kubectl get replicaset
Mã:
kubectl get pods
Trong ảnh chụp màn hình ở trên, bạn có thể thấy thông tin chi tiết về các ao được tạo sau khi tạo bộ bản sao.
Bây giờ, hãy tạo một pod riêng lẻ có cùng nhãn đã chỉ định trước đó trong định nghĩa của bộ bản sao.
Mã:
vim my-test-pod.yml
Mã:
apiVersion: v1kind: Podmetadata: name: pod1 labels: tier: frontendspec: containers: - name: nginx image: nginx
Bây giờ nếu chúng ta tạo cái này, nó sẽ không được tạo.Thực hiện các lệnh sau để tạo các pod trước đó và tạo một pod mới.
Mã:
kubectl get pods
Mã:
kubectl create -f my-test-pod.yml
Mã:
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 tạo một pod mới, nó vẫn ở trạng thái kết thúc. Lý do cho điều này là chúng ta đã có một replicaset với các bản sao là 3 và chúng ta đang tạo một pod mới riêng biệt với cùng nhãn. Vì các nhãn và bộ chọn khớp với replicaset, nên nó xóa pod để duy trì số lượng bản sao đã chỉ định trong định nghĩa replicaset.
Bạn có thể lấy thông tin chi tiết về replicaset bằng các lệnh sau.
Mã:
kubectl get replicaset
Mã:
kubectl describe replicaset nginx-proxy
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng một replica set xóa pod để duy trì số lượng bản sao.
Bây giờ chúng ta hãy tạo apod không có nhãn bằng cách sử dụng định nghĩa pod sau.
Mã:
vim my-test-pod-no-label.yml
Mã:
apiVersion: v1kind: Podmetadata: name: pod1spec: containers: - name: nginx image: nginx
Để tạo một pod mới mà không có bất kỳ nhãn nào, hãy thực hiện lệnh sau.
Mã:
kubectl get pods
Mã:
kubectl create -f my-test-pod-no-label.yml
Mã:
kubectl get pods
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng một newpod đã được tạo và replicaset không xóa newpod lần này.
Lý do cho điều này là cổng mới không có nhãn nào nên replicaset không khớp với nó và không coi nó là một phần của tập hợp bản sao.
Bây giờ chúng ta hãy thử tạo một cổng thuộc về tập hợp bản sao.
Thực hiện các lệnh sau để xóa một pod.
Mã:
kubectl get pods
Mã:
kubectl delete pod nginx-proxy-6gc46
Mã:
kubectl get vỏ quả
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng ngay cả sau khi xóa một pod thuộc về bộ bản sao, một pod mới đã được tạo. Một pod mới đã được tạo để duy trì số lượng bản sao mà chúng ta đã chỉ định trong định nghĩa bộ bản sao.
Bây giờ, khi bạn không còn cần bộ bản sao của mình nữa, bạn có thể xóa nó bằng các lệnh sau.
Mã:
kubectl get replicaset
Mã:
kubectl delete replicaset nginx-proxy
Mã:
kubectl get replicaset
Mã:
kubectl get pods
Vì pod mà chúng ta đã tạo riêng không phải là một phần của bộ bản sao nên chúng ta cần xóa nó riêng.
Sử dụng các lệnh. Để xóa pod không thuộc về replicaset.
Mã:
kubectl get pods
Mã:
kubectl delete pod pod1
Mã:
kubectl get pods