pod có Pers PersisteVolumeClaims không bị ràng buộc


84

Khi tôi đẩy các triển khai của mình, vì một số lý do, tôi gặp lỗi trên nhóm của mình:

pod có Pers PersisteVolumeClaims không bị ràng buộc

Đây là YAML của tôi bên dưới:

Điều này đang chạy cục bộ, không phải trên bất kỳ giải pháp đám mây nào.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.16.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: ckan
  name: ckan
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: ckan
    spec:
      containers:
        image: slckan/docker_ckan
        name: ckan
        ports:
        - containerPort: 5000
        resources: {}
        volumeMounts:
            - name: ckan-home
              mountPath: /usr/lib/ckan/
              subPath: ckan
      volumes:
      - name: ckan-home
        persistentVolumeClaim:
          claimName: ckan-pv-home-claim
      restartPolicy: Always
status: {}

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ckan-pv-home-claim
  labels:
    io.kompose.service: ckan
spec:
  storageClassName: ckan-home-sc
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
  volumeMode: Filesystem
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: ckan-home-sc
provisioner: kubernetes.io/no-provisioner
mountOptions:
  - dir_mode=0755
  - file_mode=0755
  - uid=1000
  - gid=1000

Câu trả lời:


86

Bạn phải xác định một PersentlyVolume cung cấp không gian đĩa được sử dụng bởi PersentlyVolumeClaim .

Khi sử dụng storageClassKubernetes, bạn sẽ bật "Cung cấp khối lượng động" không hoạt động với hệ thống tệp cục bộ.


Để giải quyết vấn đề của bạn:

  • Cung cấp một PersentlyVolume đáp ứng các ràng buộc của yêu cầu (kích thước> = 100Mi)
  • Xóa storageClass-line khỏi PersisteVolumeClaim
  • Xóa StorageClass khỏi cụm của bạn

Làm thế nào để những mảnh ghép này chơi với nhau?

Khi tạo mô tả trạng thái triển khai, nó thường được biết loại dung lượng (dung lượng, tốc độ, ...) mà ứng dụng sẽ cần.
Để làm cho việc triển khai trở nên linh hoạt, bạn muốn tránh phụ thuộc nhiều vào bộ nhớ. Tính trừu tượng hóa khối lượng của Kubernetes cho phép bạn cung cấp và sử dụng dung lượng lưu trữ theo cách chuẩn hóa.

Các PersistentVolumeClaim được sử dụng để cung cấp một lưu trữ hạn chế cùng với việc triển khai các ứng dụng.

Các PersistentVolume Mời cụm toàn khối lượng-trường đã sẵn sàng để được tiêu thụ (" bound"). Một PersentlyVolume sẽ bị ràng buộc với một yêu cầu. Nhưng vì nhiều trường hợp của xác nhận quyền sở hữu đó có thể được chạy trên nhiều nút, nên khối lượng đó có thể được nhiều nút truy cập .

Một PersentlyVolume không có StorageClass được coi là tĩnh .

"Dynamic Volume Provisioning" cùng với một StorageClass phép cluster để PersistentVolumes cung cấp theo yêu cầu. Để thực hiện công việc đó, nhà cung cấp bộ nhớ đã cho phải hỗ trợ cấp phép - điều này cho phép cụm yêu cầu cung cấp PersisteVolume "mới"khi một Persiste không hài lòngbật lên.


Ví dụ PersentlyVolume

Để tìm cách chỉ định những thứ, tốt nhất bạn nên xem qua API cho phiên bản Kubernetes của mình , vì vậy ví dụ sau được xây dựng từ API-Reference của K8S 1.17 :

apiVersion: v1
kind: PersistentVolume
metadata:
  name: ckan-pv-home
  labels:
    type: local
spec:
  capacity:
    storage: 100Mi
  hostPath:
    path: "/mnt/data/ckan"

Các PersistentVolumeSpec cho phép chúng ta xác định nhiều thuộc tính. Tôi đã chọn một hostPathtập bản đồ một thư mục cục bộ làm nội dung cho tập. Dung lượng cho phép người lập lịch trình tài nguyên công nhận khối lượng này có thể áp dụng được về nhu cầu tài nguyên.


Tài nguyên bổ sung:


3
Bạn không thể loại bỏ StorageClass, nó được đủ chỉ cần thay thế giá trị của tên lớp lưu trữ để một chuỗi rỗng, giống như StorageClass: ""
mrvol

PersentlyVolume nên được định nghĩa như thế nào?
Victor Zuanazzi

1
@VictorZuanazzi câu hỏi hay - có vẻ như tài liệu đã thay đổi một chút, tôi đã thêm một ví dụ. Việc đào sâu vào API khá khó khăn khi bắt đầu. Fortunatley thường có các tham chiếu chéo từ API-docs đến các hướng dẫn và ngược lại. Tôi hy vọng điều này sẽ giúp bạn tiếp tục.
Florian Neumann
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.