Draining a node

Bạn có thể sử dụng kubectl Drain để trục xuất tất cả các nhóm khỏi một nút một cách an toàn trước khi thực hiện bảo trì trên nút đó, chẳng hạn như nâng cấp kernel, bảo trì phần cứng, v.v. Việc trục xuất an toàn cho phép các vùng chứa nhóm chấm dứt một cách duyên dáng và tôn trọng PodDisruptionBudgets mà bạn. được chỉ định. Để biết thêm thông tin, hãy xem phần Gián đoạn.

Khối lượng công việc Kubernetes di chuyển xung quanh cụm, điều này cho phép các trường hợp sử dụng như hệ thống phân tán có tính sẵn sàng cao. Linode khuyên bạn nên di chuyển mọi bộ lưu trữ dữ liệu trên hệ thống tệp của Phiên bản điện toán trong cụm LKE sang Ổ đĩa liên tục có bộ lưu trữ gắn mạng. các nút bất cứ khi nào có thể. Nếu bạn đang sử dụng Xác nhận khối lượng liên tục cho ứng dụng trên cụm LKE, hãy bỏ qua toàn bộ phần Sao chép dữ liệu ứng dụng vào Khối lượng liên tục và tiến thẳng đến Thêm nhóm nút mới vào cụm và rút các nút.

Hướng dẫn này cung cấp hướng dẫn để:

  • Sao chép dữ liệu ứng dụng vào Ổ đĩa liên tục nếu bạn đang sử dụng bộ nhớ cục bộ để lưu trữ dữ liệu ứng dụng.
  • Thêm nhóm nút mới vào cụm và sau đó rút hết các nút.

Giới thiệu ban đầu:

Hướng dẫn này giả định rằng bạn có cụm Linode Kubernetes Engine (LKE) đang hoạt động trên Linode và bạn đã quen với khái niệm PodDisruptionBudget cũng như PodDisruptionBudgets được định cấu hình cho các ứng dụng cần chúng.

  • Cài đặt Kubernetes CLI (kubectl) trên máy tính cục bộ.
  • Làm theo hướng dẫn trong Hướng dẫn triển khai và quản lý cụm bằng Linode Kubernetes Engine để kết nối với cụm LKE.
  • Đảm bảo rằng Kubernetes CLI đang sử dụng đúng ngữ cảnh cụm. Chạy lệnh phụ get-contexts để kiểm tra:
kubectl config get-contexts

Sao chép dữ liệu ứng dụng vào ổ đĩa liên tục

Hướng dẫn trong phần này tạo tài nguyên có thể tính phí cho khối lượng Lưu trữ khối trên tài khoản Linode của bạn. Một khối duy nhất có thể có kích thước từ 10 GB đến 10.000 GB và có giá 0,10 USD/GB mỗi tháng hoặc 0,00015 USD/GB mỗi giờ nếu bạn không muốn. tiếp tục sử dụng khối lượng Block Storage mà bạn tạo, hãy nhớ xóa nó khi bạn hoàn thành hướng dẫn.

Nếu sau đó bạn xóa các tài nguyên, bạn chỉ bị tính phí cho (các) giờ mà các tài nguyên đó có trong tài khoản của bạn. Hãy tham khảo hướng dẫn Lập hóa đơn và Thanh toán để biết thông tin chi tiết về cách tính phí theo giờ và bảng giá gói.

  • Tạo Yêu cầu Khối lượng Liên tục (PVC) sử dụng khối lượng Lưu trữ Khối. Để tạo PVC, hãy tạo tệp kê khai có YAML sau:

pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:  
   name: pvc-test
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: linode-block-storage-retain

Để giữ lại khối lượng Block Storage và dữ liệu của nó, ngay cả sau khi PVC liên quan bị xóa, hãy sử dụng Linode-block-storage-retain StorageClass. Thay vào đó, bạn muốn xóa khối lượng Block Storage và dữ liệu của nó cùng với PVC của nó, sử dụng Linode-block-storage StorageClass để biết thêm thông tin, hãy xem Xóa yêu cầu khối lượng liên tục.

PVC đại diện cho khối Lưu trữ Khối. Vì khối Lưu trữ Khối có kích thước tối thiểu là 10 gigabyte nên dung lượng lưu trữ đã được đặt thành 10Gi. Nếu bạn chọn kích thước nhỏ hơn 10 gigabyte, PVC sẽ mặc định là 10 gigabyte. Hiện tại, chế độ duy nhất được hỗ trợ. bởi trình điều khiển CSI của Linode Block Storage là ReadWriteOnce, nghĩa là nó chỉ có thể được kết nối với một nút Kubernetes tại một thời điểm.

  • Tạo PVC trong Kubernetes và chuyển vào tệp PVC.yaml:
kubectl create -f pvc.yaml
  • Sau một lát, khối lượng Lưu trữ khối được cung cấp và Yêu cầu khối lượng liên tục đã sẵn sàng để sử dụng.
  • Kiểm tra trạng thái của PVC bằng cách gõ lệnh sau:
kubectl get pvc

Một đầu ra tương tự như sau xuất hiện:

  • Tạo tệp kê khai cho Pod mới bằng cách sử dụng YAML sau, trong đó ứng dụng đang sử dụng bộ nhớ cục bộ tại $MOUNTPATH, PVC-test là Xác nhận quyền sở hữu khối lượng liên tục tại $CSIVolumePath:

new-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: new-pod
  labels:
    app:
 application
      volumes:
      - name: application
        hostPath:
          path: $HOSTPATH
      - name:
 pvc-test
        persistentVolumeClaim:
          claimName: pvc-test
    ........
      volumeMounts:
      - name: application
        mountPath: $MOUNTPATH
      - name: pvc-test
        mountPath: $CSIVolumePath
  • Tạo một Pod mới có tên new-pod:
kubectl create -f new-pod.yaml
  • Sau một lúc, Pod sẽ được thiết lập và chạy. Để kiểm tra trạng thái của Pod, hãy nhập lệnh sau:
kubectl get pods
  • Một đầu ra tương tự như sau xuất hiện:
  • Từ shell, sao chép các tệp từ bộ nhớ cục bộ sang PVC. Trong lệnh sau $MOUNTPATH ​​​​là vị trí của bộ nhớ cục bộ và $CSIVolumePath là vị trí trên PVC:
cp -P $MOUNTPATH $CSIVolumePath.
  • Xóa Pod mới mà bạn đã tạo rồi tạo lại:
kubectl delete pod new-pod
kubectl create -f new-pod.yaml

Bây giờ bạn sẽ thấy tất cả dữ liệu được lưu trữ trong Ổ đĩa CSI.

Thêm một nút mới vào cụm và rút nút

  • Thêm Nhóm nút bổ sung vào cụm LKE, có loại và kích thước gói có thể đáp ứng khối lượng công việc hiện có.
  • Sau khi các Phiên bản điện toán mới đã tham gia vào cụm, hãy rút hết các phiên bản đã được lên lịch bảo trì. Điều này khiến khối lượng công việc được lên lịch lại cho các Phiên bản điện toán khác trong cụm. Linode khuyên bạn nên rút từng phiên bản một để đảm bảo rằng khối lượng công việc đã được lên lịch lại. sang các trường hợp khác. Một ví dụ về lệnh thoát Node:
cống kubectl lke9297-11573-5f3e357cb447
  • Bạn có thể xóa Node Pool cũ hoặc chọn giữ lại sau khi bảo trì hoàn tất. Lưu ý, nếu bạn giữ Node Pool, bạn sẽ bị tính phí.
  • Khi quá trình bảo trì hoàn tất và nếu bạn giữ lại các Phiên bản điện toán trước đó thì sau khi chúng khởi động, bạn có thể đánh dấu lại chúng là đã lên lịch bằng cách sử dụng lệnh sau:
kubectl uncordon lke9297-11573-5f3e357cb447

nguồn: https://techdocs.akamai.com/cloud-computing/docs/drain-a-node-pool-on-lke-cluster