【发布时间】:2017-05-18 20:09:58
【问题描述】:
我目前正在使用 GCE 标准容器集群并获得了很多成功和乐趣。但是我有一个关于 GCE Persistent 磁盘配置的问题。
如 Kubernetes 中的 this 文档中所述。我创建了两个 YAML 文件:
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
annotations:
storageclass.beta.kubernetes.io/is-default-class: "true"
name: slow
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
和
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
name: fast
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd
如果我现在创建以下卷声明:
{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "claim-test",
"annotations": {
"volume.beta.kubernetes.io/storage-class": "hdd"
}
},
"spec": {
"accessModes": [
"ReadWriteOnce"
],
"resources": {
"requests": {
"storage": "3Gi"
}
}
}
}
磁盘已完美创建! 如果我现在开始关注单位
apiVersion: v1
kind: ReplicationController
metadata:
name: nfs-server
spec:
replicas: 1
selector:
role: nfs-server
template:
metadata:
labels:
role: nfs-server
spec:
containers:
- name: nfs-server
image: gcr.io/google_containers/volume-nfs
ports:
- name: nfs
containerPort: 2049
- name: mountd
containerPort: 20048
- name: rpcbind
containerPort: 111
securityContext:
privileged: true
volumeMounts:
- mountPath: /exports
name: mypvc
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: claim-test
磁盘已完美挂载,但我多次偶然发现以下错误(在 kubelet.log 文件中找不到更多错误):
无法在节点“....”上附加卷“claim-test”:未找到 GCE 永久磁盘:diskName="....." zone="europe-west1-b" 同步 pod 时出错,跳过:等待卷附加/挂载 pod“....”的超时已过期。未附加/卸载的卷列表=[....]
有时 pod 可以完美启动,但有时会崩溃。我唯一能发现的是,在创建 PVC 和 RC 本身之间需要有足够的时间。我尝试了很多次,但结果都不确定。
希望有人能给我一些建议或帮助。
提前致谢! 最好的问候,
哈科尔
【问题讨论】:
-
很抱歉给 Hacor 带来麻烦。我们想对此进行调试。您能否离线与我分享您的 GKE 集群信息(项目名称、区域/区域和集群名称)(联系信息github.com/saad-ali),以及上次重现的确切时间——我们将看看主日志以查看发生了什么。
-
带 GCE 的 PVC 使用起来相当麻烦:磁盘被挂载到单台机器上,而 Pod 在随机机器上启动。因此,吊舱可能永远找不到 PV。为了防止这种情况,您必须将 pod 绑定到机器。在 Google 可以将磁盘挂载到多台机器之前,一种更可行的方法是使用直接从 pod 挂载的 GCE 存储
标签: kubernetes provisioning google-kubernetes-engine