Kubernetes

Bộ điều khiển nhân bản là một trong những tính năng chính của Kubernetes, chịu trách nhiệm quản lý vòng đời nhóm. Nó có trách nhiệm đảm bảo rằng số lượng bản sao nhóm được chỉ định đang chạy tại bất kỳ thời điểm nào. Nó được sử dụng đúng lúc khi người ta muốn đảm bảo rằng số lượng nhóm được chỉ định hoặc ít nhất một nhóm đang chạy. Nó có khả năng đưa lên hoặc xuống số nhóm được chỉ định.

Cách tốt nhất là sử dụng bộ điều khiển nhân bản để quản lý vòng đời của nhóm thay vì tạo nhóm lặp đi lặp lại.

Kubernetes - Bộ điều khiển sao chép
apiVersion: v1
kind: ReplicationController --------------------------> 1
metadata:
   name: Tomcat-ReplicationController --------------------------> 2
spec:
   replicas: 3 ------------------------> 3
   template:
      metadata:
         name: Tomcat-ReplicationController
      labels:
         app: App
         component: neo4j
      spec:
         containers:
         - name: Tomcat- -----------------------> 4
         image: tomcat: 8.0
         ports:
            - containerPort: 7474 ------------------------> 5

Chi tiết thiết lập

  • Loại: ReplicationController → Trong đoạn mã trên, chúng ta đã định nghĩa loại là bộ điều khiển sao chép để cho kubectl biết rằng tệp yaml sẽ được sử dụng để tạo bộ điều khiển sao chép.
  • tên: Tomcat-ReplicationController → Điều này giúp xác định tên mà bộ điều khiển nhân bản sẽ được tạo. Nếu chúng ta chạy kubctl, lấy rc <Tomcat-ReplicationController> , nó sẽ hiển thị chi tiết bộ điều khiển sao chép.
  • bản sao: 3 → Điều này giúp bộ điều khiển nhân bản hiểu rằng nó cần duy trì ba bản sao của một nhóm tại bất kỳ thời điểm nào trong vòng đời của nhóm.
  • name: Tomcat → Trong phần thông số kỹ thuật, chúng ta đã định nghĩa tên là tomcat, tên này sẽ cho bộ điều khiển nhân bản biết rằng vùng chứa hiện diện bên trong các pod là tomcat.

containerPort: 7474 → Nó giúp đảm bảo rằng tất cả các nút trong cụm nơi nhóm đang chạy vùng chứa bên trong nhóm sẽ được hiển thị trên cùng một cổng 7474.

Kubernetes - Bộ điều khiển sao chép

Ở đây, dịch vụ Kubernetes đang hoạt động như một bộ cân bằng tải cho ba bản sao tomcat.

Kubernetes – Bộ bản sao

Replica Set đảm bảo có bao nhiêu bản sao của nhóm sẽ được chạy. Nó có thể được coi là một sự thay thế của bộ điều khiển nhân rộng. Sự khác biệt chính giữa bộ bản sao và bộ điều khiển sao chép là, bộ điều khiển sao chép chỉ hỗ trợ bộ chọn dựa trên bình đẳng trong khi bộ bản sao hỗ trợ bộ chọn dựa trên bộ.

apiVersion: extensions/v1beta1 --------------------->1
kind: ReplicaSet --------------------------> 2
metadata:
   name: Tomcat-ReplicaSet
spec:
   replicas: 3
   selector:
      matchLables:
         tier: Backend ------------------> 3
      matchExpression:
{ key: tier, operation: In, values: [Backend]} --------------> 4
template:
   metadata:
      lables:
         app: Tomcat-ReplicaSet
         tier: Backend
      labels:
         app: App
         component: neo4j
   spec:
      containers:
      - name: Tomcat
      image: tomcat: 8.0
      ports:
      - containerPort: 7474

Chi tiết thiết lập

  • apiVersion: extensions / v1beta1 → Trong đoạn mã trên, phiên bản API là phiên bản beta nâng cao của Kubernetes hỗ trợ khái niệm tập hợp bản sao.
  • kind: ReplicaSet → Chúng tôi đã định nghĩa loại là tập hợp bản sao giúp kubectl hiểu rằng tệp được sử dụng để tạo tập hợp bản sao.
  • tier: Backend → Chúng tôi đã định nghĩa lớp nhãn là backend tạo ra một bộ chọn phù hợp.
  • {key: tier, operation: In, values: [Backend]} → Điều này sẽ giúp matchExpression hiểu điều kiện đối sánh mà chúng ta đã xác định và trong phép toán được matchlabel sử dụng để tìm chi tiết.

Chạy tệp ở trên bằng cách sử dụng kubectl và tạo bộ bản sao phụ trợ với định nghĩa được cung cấp trong tệp yaml .

Kubernetes - Bộ điều khiển sao chép

Kubernetes – Triển khai

Các triển khai được nâng cấp và phiên bản cao hơn của bộ điều khiển nhân rộng. Họ quản lý việc triển khai các bộ bản sao cũng là một phiên bản nâng cấp của bộ điều khiển sao chép. Họ có khả năng cập nhật tập hợp bản sao và cũng có khả năng quay trở lại phiên bản trước đó.

Họ cung cấp nhiều tính năng cập nhật của MatchLabels và bộ chọn . Chúng tôi đã có một bộ điều khiển mới trong Kubernetes master được gọi là bộ điều khiển triển khai, điều này làm cho nó xảy ra. Nó có khả năng thay đổi việc triển khai giữa chừng.

Thay đổi triển khai

Đang cập nhật – Người dùng có thể cập nhật triển khai đang diễn ra trước khi hoàn thành. Trong trường hợp này, triển khai hiện có sẽ được giải quyết và triển khai mới sẽ được tạo.

Xóa – Người dùng có thể tạm dừng / hủy bỏ việc triển khai bằng cách xóa nó trước khi hoàn tất. Việc tạo lại cùng một triển khai sẽ tiếp tục.

Khôi phục – Chúng tôi có thể khôi phục việc triển khai hoặc quá trình triển khai đang diễn ra. Người dùng có thể tạo hoặc cập nhật triển khai bằng cách sử dụng DeploymentSpec.PodTemplateSpec = oldRC.PodTemplateSpec.

Chiến lược triển khai

Các chiến lược triển khai giúp xác định cách RC mới nên thay thế RC hiện tại.

Tái tạo – Tính năng này sẽ giết tất cả RC hiện có và sau đó hiển thị những cái mới. Điều này dẫn đến việc triển khai nhanh chóng, tuy nhiên nó sẽ dẫn đến thời gian ngừng hoạt động khi các nhóm cũ không hoạt động và các nhóm mới không xuất hiện.

Rolling Update – Tính năng này dần dần loại bỏ RC cũ và đưa lên RC mới. Điều này dẫn đến việc triển khai chậm, tuy nhiên không có triển khai. Luôn luôn có sẵn một số nhóm cũ và một số nhóm mới trong quá trình này. Tệp cấu hình của Deployment trông như thế này.

apiVersion: extensions/v1beta1 --------------------->1
kind: Deployment --------------------------> 2
metadata:
   name: Tomcat-ReplicaSet
spec:
   replicas: 3
   template:
      metadata:
         lables:
            app: Tomcat-ReplicaSet
            tier: Backend
   spec:
      containers:
         - name: Tomcatimage:
            tomcat: 8.0
            ports:
               - containerPort: 7474

Trong đoạn mã trên, điều duy nhất khác với bộ bản sao là chúng ta đã định nghĩa loại là triển khai.

Tạo triển khai

$ kubectl create –f Deployment.yaml -–record
deployment "Deployment" created Successfully.

Tìm nạp triển khai

$ kubectl get deployments
NAME           DESIRED     CURRENT     UP-TO-DATE     AVILABLE    AGE
Deployment        3           3           3              3        20s

Kiểm tra trạng thái triển khai

$ kubectl rollout status deployment/Deployment

Cập nhật triển khai

$ kubectl set image deployment/Deployment tomcat=tomcat:6.0

Quay lại triển khai trước đó

$ kubectl rollout undo deployment/Deployment –to-revision=2

Kubernetes – Tệp (xem thêm)

Trả lời