Tệp kê khai mongodb kubernetes

MongoDB là một chương trình cơ sở dữ liệu NoSQL dựa trên tài liệu, có mục đích chung. Cũng như các hệ quản trị cơ sở dữ liệu phi quan hệ khác, MongoDB tập trung vào khả năng mở rộng và tốc độ truy vấn

Kubernetes phối hợp với MongoDB để tạo ra các triển khai cơ sở dữ liệu di động và có khả năng mở rộng cao. Những triển khai này rất hữu ích để làm việc với một lượng lớn dữ liệu và tải cao

Hướng dẫn này sẽ dạy bạn cách triển khai MongoDB trên Kubernetes. Hướng dẫn bao gồm các bước để chạy phiên bản MongoDB độc lập và bộ bản sao

Yêu cầu

  • Một cụm Kubernetes với kubectl
  • Quyền truy cập quản trị vào hệ thống của bạn

Ghi chú. MongoDB là một phần của MEAN stack, một ngăn xếp phần mềm nguồn mở phổ biến để phát triển ứng dụng web. Đọc về sự khác biệt giữa ngăn xếp MEAN và LAMP

Triển khai một phiên bản MongoDB độc lập

MongoDB có thể được triển khai trên Kubernetes như một phiên bản độc lập. Việc triển khai này không phù hợp để sử dụng trong sản xuất, nhưng nó phù hợp để thử nghiệm và một số khía cạnh của quá trình phát triển

Thực hiện theo các bước bên dưới để triển khai phiên bản MongoDB độc lập

Bước 1. Dán nhãn nút

Gắn nhãn nút sẽ được sử dụng để triển khai MongoDB. Nhãn được sử dụng sau này để gán nhóm cho một nút cụ thể

Làm như vậy

1. Liệt kê các nút trên cụm của bạn

kubectl get nodes

2. Chọn nút triển khai từ danh sách trong đầu ra lệnh

3. Sử dụng kubectl để gắn nhãn nút bằng cặp khóa-giá trị

kubectl label nodes  =

Đầu ra xác nhận rằng nhãn đã được thêm thành công

Bước 2. Tạo một lớp lưu trữ

StorageClass giúp nhóm cung cấp yêu cầu khối lượng liên tục trên nút. Để tạo một StorageClass

1. Sử dụng trình soạn thảo văn bản để tạo tệp YAML để lưu trữ cấu hình lớp lưu trữ

nano StorageClass.yaml

2. Chỉ định cấu hình lớp lưu trữ của bạn trong tệp. Ví dụ dưới đây định nghĩa

nano PersistentVolume.yaml
0

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

3. Lưu các thay đổi và thoát khỏi trình chỉnh sửa

Ghi chú. Để làm cho quá trình dễ dàng hơn, hãy lưu trữ tất cả các tệp trong hướng dẫn này trong một thư mục

Bước 3. Tạo lưu trữ liên tục

Cung cấp dung lượng lưu trữ cho việc triển khai MongoDB bằng cách tạo ổ đĩa liên tục và xác nhận quyền sở hữu ổ đĩa liên tục

1. Tạo tệp YAML để cấu hình âm lượng liên tục

nano PersistentVolume.yaml

2. Trong tệp, phân bổ bộ nhớ thuộc về lớp bộ nhớ được xác định ở bước trước. Chỉ định nút sẽ được sử dụng trong triển khai nhóm trong phần 

nano PersistentVolume.yaml
1 . Nút được xác định bằng cách sử dụng nhãn đã tạo ở Bước 1

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large

3. Tạo một YAML khác cho cấu hình xác nhận quyền sở hữu khối lượng liên tục

________số 8

4. Xác định yêu cầu có tên

nano PersistentVolume.yaml
2 và hướng dẫn Kubernetes yêu cầu khối lượng thuộc về
nano PersistentVolume.yaml
0

kubectl label nodes  =
1

Bước 4. Tạo một Bản đồ cấu hình

Tệp ConfigMap lưu trữ thông tin cấu hình không được mã hóa được sử dụng bởi các nhóm

1. Tạo tệp YAML để lưu trữ cấu hình triển khai

kubectl label nodes  =
2

2. Sử dụng tệp để lưu trữ thông tin về đường dẫn hệ thống, người dùng và vai trò. Sau đây là một ví dụ về tệp ConfigMap

kubectl label nodes  =
3

Bước 5. Tạo một StatefulSet

StatefulSet là bộ điều khiển Kubernetes được sử dụng để triển khai các ứng dụng có trạng thái. Các nhóm ứng dụng có trạng thái yêu cầu các danh tính duy nhất vì chúng giao tiếp với các nhóm khác

Để tạo một StatefulSet

1. Sử dụng trình soạn thảo văn bản để tạo tệp YAML

kubectl label nodes  =
0

2. Chèn thông tin triển khai vào tệp, bao gồm hình ảnh Docker MongoDB sẽ được sử dụng. Tệp này cũng tham chiếu đến

nano PersistentVolume.yaml
4 và
nano PersistentVolume.yaml
5 đã tạo trước đó

kubectl label nodes  =
1

Bước 6. Tạo bí mật

Đối tượng Bí mật được sử dụng để lưu trữ thông tin nhạy cảm về việc triển khai

1. Tạo một YAML bí mật bằng trình soạn thảo văn bản của bạn

kubectl label nodes  =
2

2. Cung cấp thông tin để truy cập cơ sở dữ liệu MongoDB

kubectl label nodes  =
3

3. Lưu các thay đổi và thoát

Bước 7. Tạo một dịch vụ MongoDB

Để tạo một Dịch vụ MongoDB

1. Tạo một đối tượng dịch vụ không đầu

kubectl label nodes  =
4

Dịch vụ không đầu cho phép người dùng kết nối trực tiếp với nhóm

2. Thêm tên dịch vụ và định nghĩa trong tệp YAML

kubectl label nodes  =
5

3. Lưu các thay đổi và thoát khỏi tệp

Bước 8. Áp dụng Cấu hình MongoDB với Kustomize

Sử dụng Kustomize để dễ dàng áp dụng các tệp cấu hình MongoDB

1. Tạo tệp

nano PersistentVolume.yaml
6

kubectl label nodes  =
6

2. Trong phần

nano PersistentVolume.yaml
7, liệt kê tất cả các tệp YAML đã tạo ở các bước trước

kubectl label nodes  =
7

Lưu tệp trong cùng thư mục với các tệp khác

3. Triển khai MongoDB bằng lệnh sau

kubectl label nodes  =
8

4. Sử dụng kubectl để kiểm tra xem nhóm đã sẵn sàng chưa

kubectl label nodes  =
9

Khi nhóm hiển thị

nano PersistentVolume.yaml
8 trong cột
nano PersistentVolume.yaml
9, hãy chuyển sang bước tiếp theo

Bước 9. Kết nối với Phiên bản độc lập MongoDB

1. Kết nối với nhóm MongoDB bằng cách sử dụng lệnh kubectl sau

nano StorageClass.yaml
0

2. Khi dấu nhắc

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large
0 xuất hiện, hãy nhập

nano StorageClass.yaml
1

Tải trình bao MongoDB

3. Chuyển sang cơ sở dữ liệu thử nghiệm

nano StorageClass.yaml
2

4. Xác thực bằng lệnh sau

nano StorageClass.yaml
3

Số

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large
1 trong đầu ra xác nhận xác thực thành công

Triển khai một bộ bản sao

Triển khai MongoDB dưới dạng Bản sao đảm bảo rằng số lượng nhóm được chỉ định đang chạy tại bất kỳ thời điểm nào. Triển khai ReplicaSet được khuyến nghị cho môi trường sản xuất

Bước 1. Thiết lập Kiểm soát truy cập dựa trên vai trò [RBAC]

Kích hoạt kiểm soát truy cập dựa trên vai trò là một trong những phương pháp hay nhất về bảo mật Kubernetes. RBAC đảm bảo rằng không có người dùng nào có nhiều quyền hơn mức cần thiết

Để thiết lập RBAC

1. Tạo tệp YAML bằng trình soạn thảo văn bản

nano StorageClass.yaml
4

2. Cung cấp các quy tắc truy cập để triển khai MongoDB của bạn. Ví dụ bên dưới hiển thị tệp RBAC YAML

nano StorageClass.yaml
5

3. Lưu tệp và áp dụng nó với kubectl

nano StorageClass.yaml
6

Bước 2. Tạo triển khai StatefulSet

1. Tạo YAML triển khai StatefulSet

kubectl label nodes  =
0

2. Chỉ định số lượng bản sao trong tệp, hình ảnh Docker MongoDB sẽ được sử dụng và cung cấp mẫu yêu cầu khối lượng để cung cấp khối lượng động

nano StorageClass.yaml
8

3. Lưu tệp và sử dụng áp dụng kubectl để tạo triển khai

nano StorageClass.yaml
9

Bước 3. Tạo một dịch vụ Headless

Để tạo một dịch vụ không đầu

1. Tạo một tệp YAML dịch vụ

kubectl label nodes  =
4

2. Xác định một dịch vụ cho phép giao tiếp trực tiếp với các nhóm

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
1

3. Áp dụng YAML với kubectl

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
2

Bước 4. Thiết lập máy chủ sao chép

Để thiết lập sao chép nhóm

1. Nhập nhóm bằng cách sử dụng

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large
2

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
3

Thông báo chào mừng shell MongoDB xuất hiện

2. Bắt đầu sao chép bằng cách gõ lệnh sau tại dấu nhắc trình bao MongoDB

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
4

Dòng

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large
3 cho thấy việc bắt đầu đã thành công

3. Xác định biến có tên là

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large
4. Biến thực thi
apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large
5

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
5

4. Sử dụng biến để thêm máy chủ chính vào cấu hình

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
6

Đầu ra hiển thị tên của máy chủ chính

5. Xác nhận cấu hình bằng cách thực hiện lệnh sau

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
7

Dòng

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large
3 xác nhận cấu hình thành công

6. Sử dụng lệnh

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large
7 để thêm một nhóm khác vào cấu hình

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
8

Đầu ra cho thấy bản sao đã được thêm vào

7. Kiểm tra trạng thái của hệ thống bằng cách gõ

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mongodb-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
9

Phần

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mongodb-pv
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mongodb-storageclass
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: size
          operator: In
          values:
            - large
8 sẽ hiển thị hai bản sao. Bản sao chính được liệt kê ở đầu đầu ra

Bản sao phụ nằm dưới bản sao chính

Việc triển khai ReplicaSet của MongoDB đã được thiết lập và sẵn sàng hoạt động

Ghi chú. Bare Metal Cloud cung cấp các phiên bản được thiết kế để hỗ trợ cơ sở dữ liệu NoSQL hiệu suất cao như MongoDB. Các phiên bản cung cấp hiệu suất và khả năng cách ly cần thiết cho khối lượng công việc đòi hỏi khắt khe

Phần kết luận

Hướng dẫn này đề cập đến các tình huống phổ biến khi triển khai MongoDB trên Kubernetes. Mặc dù việc triển khai phiên bản độc lập là thiết thực để thử nghiệm và phát triển, nhưng việc triển khai sản xuất phải luôn sử dụng các bộ bản sao

Chủ Đề