【问题标题】:Difficulty using Kubernetes Persistent Volume Claims with Amazon EBS难以将 Kubernetes 持久卷声明与 Amazon EBS 一起使用
【发布时间】:2016-05-18 22:20:39
【问题描述】:

我正在尝试按照https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/registry 的说明将私有 docker 注册表添加到 Kubernetes,但 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

我的两个问题是:

  • 有谁知道可能出了什么问题以及如何解决?
  • 一般来说,我在哪里可以找到有关此类错误的更多详细信息?我无法在任何地方找到更详细的日志消息,并且“无法挂载卷...超时等待卷状态”并没有太大帮助。

【问题讨论】:

  • 你检查了 pod 启动节点上的 Kubernetes 日志吗?你的答案应该在那里。
  • 我进行了同样的练习,并注意到我可以跳过 pv 并使用动态 pv 配置来代替,方法是定义一个存储类,并将 aws-ebs 作为配置器。我设法完成了注册表设置。至于故障排除,请使用“描述”。我在第一次尝试时确实遇到了 pvc 配置错误,因为 aws sc1 存储至少需要 500Gi,而且我指定了更小的东西。

标签: amazon-web-services kubernetes


【解决方案1】:

我想我可能遇到了https://github.com/kubernetes/kubernetes/issues/15073。 (如果我创建一个新的 EBS 卷,我首先会遇到不同的故障,然后在 pod 被杀死后,如果我尝试重新创建 rc,我会遇到我在问题中提到的故障。)

此外,对于其他想在哪里查找日志的人来说,kubelet 上的 /var/log/syslog/var/log/containers/XXX 是我最终不得不查找的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2019-08-11
    • 2021-05-22
    • 1970-01-01
    • 2021-11-22
    • 2017-06-05
    • 2021-11-18
    相关资源
    最近更新 更多