簡體   English   中英

使用Kubernetes持續卷聲明與Amazon EBS的難度

[英]Difficulty using Kubernetes Persistent Volume Claims with Amazon EBS

我試圖按照https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/registry上的說明向Kubernetes添加私有docker注冊表,但是rc創建的pod不能掛載持久卷聲明。

首先,我在EBS上創建一個卷,如下所示:

aws ec2 create-volume --region us-west-1 --availability-zone us-west-1a --size 32 --volume-type gp2

us-west-1a也是我所有的kube minions都在運行的可用區。)

然后我像這樣創建一個持久卷:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: kube-system-kube-registry-pv
  labels:
    kubernetes.io/cluster-service: "true"
spec:
  capacity:
    storage: 30Gi
  accessModes:
    - ReadWriteOnce
  awsElasticBlockStore:
    volumeID: vol-XXXXXXXX
    fsType: ext4

對持久性卷的聲明如下:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: kube-registry-pvc
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi

復制控制器的指定方式如下:

apiVersion: v1
kind: ReplicationController
metadata:
  name: kube-registry-v0
  namespace: kube-system
  labels:
    k8s-app: kube-registry
    version: v0
    kubernetes.io/cluster-service: "true"
spec:
  replicas: 1
  selector:
    k8s-app: kube-registry
    version: v0
  template:
    metadata:
      labels:
        k8s-app: kube-registry
        version: v0
        kubernetes.io/cluster-service: "true"
    spec:
      containers:
      - name: registry
        image: registry:2
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
        env:
        - name: REGISTRY_HTTP_ADDR
          value: :5000
        - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
          value: /var/lib/registry
        volumeMounts:
        - name: image-store
          mountPath: /var/lib/registry
        ports:
        - containerPort: 5000
          name: registry
          protocol: TCP
      volumes:
      - name: image-store
        persistentVolumeClaim:
          claimName: kube-registry-pvc

當我創建rc時,它成功啟動了一個pod,但是pod無法安裝該卷:

$ kubectl describe po kube-registry --namespace=kube-system
...
Events:
  FirstSeen     LastSeen        Count   From                                                    SubobjectPath   Reason          Message
  ─────────     ────────        ─────   ────                                                    ─────────────   ──────          ───────
  1m            1m              1       {scheduler }                                                            Scheduled       Successfully assigned kube-registry-v0-3jobf to XXXXXXXXXXXXXXX.us-west-1.compute.internal
  22s           22s             1       {kubelet XXXXXXXXXXXXXXX.us-west-1.compute.internal}                    FailedMount     Unable to mount volumes for pod "kube-registry-v0-3jobf_kube-system": Timeout waiting for volume state
  22s           22s             1       {kubelet XXXXXXXXXXXXXXX.us-west-1.compute.internal}                    FailedSync      Error syncing pod, skipping: Timeout waiting for volume state

如果我不使用持久卷和持久卷聲明,我就能成功掛載EBS卷。 以下工作沒有錯誤,例如:

apiVersion: v1
kind: Pod
metadata:
  name: test-ebs
spec:
  containers:
  - image: gcr.io/google_containers/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /test-ebs
      name: test-volume
  volumes:
  - name: test-volume
    awsElasticBlockStore:
      volumeID: vol-XXXXXXXX
      fsType: ext4

我的兩個問題是:

  • 有誰知道可能出現的問題以及如何解決?
  • 一般來說,我在哪里可以查找有關這些錯誤的更多詳細信息? 我無法在任何地方找到更詳細的日志消息,並且“無法安裝卷......超時等待卷狀態”並不是非常有用。

我想我可能會遇到https://github.com/kubernetes/kubernetes/issues/15073 (如果我創建一個新的EBS卷,我首先得到一個不同的失敗,然后在pod嘗試重新創建rc之后被殺死我得到了我在問題中提到的失敗。)

此外,對於其他任何想知道在哪里尋找日志的人來說,kubelet上的/var/log/syslog/var/log/containers/XXX是我最終不得不尋找的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM