Kubernetes配置GCE永久磁盘有时会失败
我目前使用的是GCE标准容器集群,非常成功和愉快。但我对GCE持久磁盘的配置有一个疑问 如Kubernetes文件格式所述。我创建了两个YAML文件:Kubernetes配置GCE永久磁盘有时会失败,kubernetes,provisioning,google-kubernetes-engine,Kubernetes,Provisioning,Google Kubernetes Engine,我目前使用的是GCE标准容器集群,非常成功和愉快。但我对GCE持久磁盘的配置有一个疑问 如Kubernetes文件格式所述。我创建了两个YAML文件: kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: annotations: storageclass.beta.kubernetes.io/is-default-class: "true" name: slow provisioner: ku
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": "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时出错,正在跳过:等待卷连接/装载pod“…”的超时已过期。未连接/未安装卷的列表=[…]
有时吊舱可以完美启动,但有时会崩溃。我唯一能找到的是,在创建PVC和RC之间需要足够的时间。我试了很多次,但结果都不确定
我希望有人能给我一些建议或帮助
提前谢谢!
致以最良好的祝愿
Hacor提前感谢您的评论!经过几天的搜索,我终于能够确定问题出在哪里,我发布它是因为它可能对其他用户有用 我使用for Kubernetes作为复制控制器,为我的应用程序提供NFS存储,但似乎当NFS服务器和PV,PVC被删除有时NFS共享卡在节点本身上,我认为这与我没有按特定顺序删除这些元素有关,因此节点被卡在共享上,无法将新共享装载到自身或pod上 我注意到问题总是发生在我从集群中删除一些应用程序(NFS、PV、PVC和其他组件)之后。如果我在GCE上创建了一个新的集群,它可以完美地创建应用程序,直到我删除了一个集群,它出现错误 我不确定正确的删除顺序,但我认为:
- 使用NFS共享的pod
- NFS共享的PV、PVC
- NFS服务器
对不起,给您添麻烦了。我们想调试这个。你能和我分享你的GKE集群信息(项目名称、区域/地区和集群名称)吗?离线时(联系方式:联系方式:上一次复制的确切时间——我们将查看主日志以了解发生了什么。使用带有GCE的PVC非常麻烦:磁盘被安装到一台机器上,当吊舱在随机机器上启动时。因此,吊舱可能永远找不到PV。为了防止这种情况,您必须将吊舱绑定到机器上。在谷歌能够将一个磁盘装载到多台机器之前,一个更可行的方法是使用直接从pod装载的GCE存储
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