我目前尝试从“容器优化的Google计算引擎映像”(https://cloud.google.com/compute/docs/containers/container_vms)切换到“容器-VM”映像(https://cloud.google.com/compute/docs/containers/vm-image/#overview)。在我的containers.yaml中,我使用卷定义了一个卷和一个容器。
apiVersion: v1
kind: Pod
metadata:
name: workhorse
spec:
containers:
- name: postgres
image: postgres:9.5
imagePullPolicy: Always
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-storage
gcePersistentDisk:
pdName: disk-name
fsType: ext4
此设置适用于“容器优化的Google计算引擎映像”,但无法使用“Container-VM”。在日志中,我可以看到以下错误:
May 24 18:33:43 battleship kubelet[629]: E0524 18:33:43.405470 629 gce_util.go:176]
Error getting GCECloudProvider while detaching PD "disk-name":
Failed to get GCE Cloud Provider. plugin.host.GetCloudProvider returned <nil> instead
提前感谢任何暗示!
答案 0 :(得分:2)
只有在没有kubelet
标志的情况下运行--cloud-provider=gce
时才会发生这种情况。除非有所不同,否则问题取决于GCP如何启动Container-VM。
请与谷歌云平台人员联系。
请注意,如果您在使用GCE时发生这种情况:在所有工作人员中将--cloud-provider=gce
标记添加到kubelet
。这仅适用于1.2群集版本,因为如果我没有错,则会有针对1.3群集的持续附加/分离设计,这将使此业务逻辑移出。 kubelet
如果有人对此处的附加/分离重新设计感兴趣,那么它就是相应的github问题:https://github.com/kubernetes/kubernetes/issues/20262