我目前正在使用GCE标准容器集群,很多成功和乐趣。但是我对GCE永久磁盘的配置有疑问。Kubernetes供应GCE持久性磁盘有时会失败
如this文件形式Kubernetes。我创建了两个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文件中找到):
失败在节点“....”上附加音量“声明 - 测试”:未找到GCE永久磁盘:diskName =“.....”zone =“europe-west1-b” 同步窗格时出错,正在跳过:超时已过期等待卷挂接/挂载“...”。未挂接/未挂载的卷的列表= [...]
有时候pod靴子完美,但有时会崩溃。我能找到的唯一的事情就是在创建PVC和RC本身之间需要足够的时间。我尝试了很多次,但结果相同。
我希望有人能给我一些建议或帮助。
在此先感谢! 最好的问候,
Hacor
对不起,麻烦Hacor。我们想调试这个。您可以与我离线分享您的GKE集群信息(项目名称,区域/区域和集群名称)(联系信息https://github.com/saad-ali)以及最后一个报告的确切时间 - 我们会看看主日志,看看发生了什么。 –
带GCE的PVC使用起来相当麻烦:磁盘被安装到一台机器上,而一个吊舱在随机机器上启动。由于这一点,吊舱可能永远找不到PV。为了防止这种情况,您必须将吊舱绑定到机器上。在谷歌能够将磁盘安装到多台机器上之前,一种更可行的方法是使用直接从吊舱安装的GCE存储器 –