1

我目前尝试从“Container-Optimized Google Compute Engine Images”(https://cloud.google.com/compute/docs/containers/container_vms)切换到“Container-VM”Image(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

此设置适用于“Container-Optimized Google Compute Engine Images”,但“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

提前感谢您的任何提示!

4

1 回答 1

3

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

于 2016-06-07T12:58:36.647 回答