首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超逾安装PVC容积至吊舱

超逾安装PVC容积至吊舱
EN

Stack Overflow用户
提问于 2018-04-04 22:20:34
回答 2查看 2.8K关注 0票数 1

我正在尝试在持久体积上部署一个有状态集。

我通过库普斯在AWS上安装了Kubernetes。

代码语言:javascript
复制
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.3", GitCommit:"d2835416544f298c919e2ead3be3d0864b52323b", GitTreeState:"clean", BuildDate:"2018-02-07T12:22:21Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.3", GitCommit:"d2835416544f298c919e2ead3be3d0864b52323b", GitTreeState:"clean", BuildDate:"2018-02-07T11:55:20Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}

根据本期,我需要首先创建PVC:

代码语言:javascript
复制
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: zk-data-claim
spec:
  storageClassName: default
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: zk-logs-claim
spec:
  storageClassName: default
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

default存储类存在,并且PVC成功地绑定了PV:

代码语言:javascript
复制
$ kubectl get sc
NAME            PROVISIONER             AGE
default         kubernetes.io/aws-ebs   20d
gp2 (default)   kubernetes.io/aws-ebs   20d
ssd (default)   kubernetes.io/aws-ebs   20d

$ kubectl get pvc
NAME            STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
zk-data-claim   Bound     pvc-5584fdf7-3853-11e8-a73b-02bb35448afe   2Gi        RWO            default        11m
zk-logs-claim   Bound     pvc-5593e249-3853-11e8-a73b-02bb35448afe   2Gi        RWO            default        11m

我可以在EC2 EBS卷列表中看到这两个卷最初是“可用的”,但后来变成了“在用”。

然后在我的StatefulSet里吃

代码语言:javascript
复制
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: zk
spec:
  serviceName: zk-cluster
  replicas: 3
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      volumes:
        - name: zk-data
          persistentVolumeClaim:
            claimName: zk-data-claim
        - name: zk-logs
          persistentVolumeClaim:
            claimName: zk-logs-claim

      containers:
      ....
        volumeMounts:
        - name: zk-data
          mountPath: /opt/zookeeper/data
        - name: zk-logs
          mountPath: /opt/zookeeper/logs

,它与一起失败

代码语言:javascript
复制
Unable to mount volumes for pod "zk-0_default(83b8dc93-3850-11e8-a73b-02bb35448afe)": timeout expired waiting for volumes to attach/mount for pod "default"/"zk-0". list of unattached/unmounted volumes=[zk-data zk-logs]

我在默认名称空间中工作。

有什么可以导致这次失败的原因?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-06 03:27:47

问题是我的集群是由C5节点组成的。C5和M5节点遵循不同的命名约定(NVMe),命名不被识别。

使用t2类型节点重新创建群集。

票数 2
EN

Stack Overflow用户

发布于 2018-04-05 03:56:52

是的,这是AWS和kubernetes的一个非常非常有名的问题。大多数情况下,这是由于另一个节点上的一个陈旧目录导致EBS卷从另一个节点的角度来看仍然处于“使用中”,因此当AWS请求时,Linux机器不会松开设备。在这两种kubelet.service期刊上,你都会看到很多关于这方面的讨论,在这台机器上,你可以看到EBS和想要EBS的机器。

据我的经验,只有ssh-ing到当前连接EBS卷的节点,找到挂载,卸载它们,然后等待指数后退计时器过期,才能解决这个问题:

挥手的版本是:

代码语言:javascript
复制
## cleaning up stale docker containers might not be a terrible idea
docker rm $(docker ps -aq -f status=exited)

## identify any (and there could very well be multiple) mounts
## of the EBS device-name
mount | awk '/dev\/xvdf/ {print $2}' | xargs umount

## or sometimes kubernetes will actually name the on-disk directory ebs~ so:
mount | awk '/ebs~something/{print $2}' | xargs umount

在这个过程中,您可能也会遇到一些与lsof有关的成功,但希望(!)清理出的集装箱将不需要这样的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49661306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档