首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kops的AWS上的Kubernetes -动态配置gp2对单节点集群失败;

Kops的AWS上的Kubernetes -动态配置gp2对单节点集群失败;
EN

Stack Overflow用户
提问于 2019-03-05 12:18:35
回答 2查看 1.4K关注 0票数 1

我的PVCs一直处于Pending状态。

kubectl describe pvc project-s3-pvc给出:

代码语言:javascript
复制
Name:          project-s3-pvc
Namespace:     default
StorageClass:  gp2
Status:        Pending
Volume:        
Labels:        <none>
Annotations:   kubectl.kubernetes.io/last-applied-configuration:
                 {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"project-s3-pvc","namespace":"default"},"spec":{"ac...
               volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      
Access Modes:  
Events:        <none>
Mounted By:    project-s3-86ccd56868-skvv5
✔ /data/project [kubernetes-aws L|✚ 10⚑ 66

kubectl get storageclass给出:

代码语言:javascript
复制
NAME            PROVISIONER             AGE
default         kubernetes.io/aws-ebs   1h
gp2 (default)   kubernetes.io/aws-ebs   1h

我正在运行由Kops启动的一个节点集群:

代码语言:javascript
复制
kops create cluster --node-count 0 --zones eu-west-1a ${NAME} --master-size t2.large

# Change size from 2 to 0, since above node-count does seem to be ignored
kops edit ig --name=${NAME} nodes

kops edit cluster ${NAME}

# Add this to cluster specification
iam:
  allowContainerRegistry: true
  legacy: false

kops update cluster ${NAME} --yes

kubectl taint nodes --all node-role.kubernetes.io/master-node

然后,我添加PVCs,例如:

代码语言:javascript
复制
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: bomcheck-s3-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi

Kops版本:Version 1.11.0 (git-2c2042465)

编辑:当我尝试手动创建PV时:

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-manual
spec:
  accessModes:
    - ReadWriteOnce
  awsElasticBlockStore:
    fsType: ext4        
  persistentVolumeReclaimPolicy: Delete
  storageClassName: gp2
  capacity:
    storage: 30Gi

我得到了:ValidationError(PersistentVolume.spec.awsElasticBlockStore): missing required field "volumeID" in io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource;

这是否意味着我需要手动在AWS中创建前面的卷?我想要通过动态配置的卷。

知道如何调试为什么不能为我的AWS提供PVC/PV吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-06 14:39:29

这个问题似乎与我只运行一个主节点这一事实有关。当我使用:kops create cluster --zones eu-west-1a ${NAME} --master-size t2.large启动集群时,它确实启动了1个主节点和2个节点。问题并没有出现。

我不确定问题的直接原因是什么,因为没有任何东西可以阻止一个节点拥有外部EBS卷。这可能是kops本身的错误,因为只有一个主节点是异常而不是规则。

票数 0
EN

Stack Overflow用户

发布于 2019-03-05 15:38:55

如您所见,没有Volume:绑定到您的PVC --这意味着自动卷配置失败,而PV没有创建,而应该使用动态配置来创建。您需要在“描述”命令的Volume:部分中看到创建的PV名称。不幸的是,没有显示问题的日志或事件。

我建议您进行故障排除,用gp2手动创建存储库,看看它是否适用于下面的yaml,然后在您的PVC yaml文件上定义storageClassName,如下所示:

storageclass-manual-gp2.yaml:

代码语言:javascript
复制
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gp2-manual
parameters:
  type: gp2
provisioner: kubernetes.io/aws-ebs
reclaimPolicy: Delete
volumeBindingMode: Immediate

应用:

代码语言:javascript
复制
kubectl apply -f storageclass-manual-gp2.yaml

pv-manual.yaml:

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-manual
spec:
  accessModes:
  - ReadWriteOnce
  awsElasticBlockStore:
    fsType: ext4
  capacity:
    storage: 30Gi
  persistentVolumeReclaimPolicy: Delete
  storageClassName: gp2-manual #your new storageclass name

应用:

代码语言:javascript
复制
kubectl apply -f pv-manual.yaml

描述PVC:

代码语言:javascript
复制
kubectl describe pvc pvc-gp2-manual

如果没有成功,我也会建议你尝试不同的AWS EBS的存储类型

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

https://stackoverflow.com/questions/55002662

复制
相关文章

相似问题

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