簡體   English   中英

Kubernetes-無法使用雲提供商openstack啟動kubelet(從雲提供商獲取當前節點名稱時出錯)

[英]Kubernetes - unable to start kubelet with cloud provider openstack (error fetching current node name from cloud provider)

我正在嘗試在Rackspace中設置Kubernetes集群,並且我了解到要獲得持久的卷支持,我需要使用Cinder(Rackspace支持的Openstack)。

遵循《 Cloud Provider Integrations設置指南》,我按如下所示設置了/etc/kubernetes/cloud-config

[Global]
username=cinder
password=********
auth-url=https://identity.api.rackspacecloud.com/v2.0
tenant-name=1234567
region=LON

我在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf的kubelet啟動命令中添加了以下內容

--cloud-provider=openstack --cloud-config=/etc/kubernetes/cloud-config

然后我運行kubeadm init --config=kubeadm.conf ,其中kubeadm.conf是:

kind: MasterConfiguration
apiVersion: kubeadm.k8s.io/v1alpha1
cloudProvider: openstack
pod-network-cidr: 10.244.0.0/16

等待kubelet啟動失敗。 我將kubelet錯誤跟蹤到以下內容:

07:24:51.407692   21412 feature_gate.go:156] feature gates: map[]
07:24:51.407790   21412 controller.go:114] kubelet config controller: starting controller
07:24:51.407849   21412 controller.go:118] kubelet config controller: validating combination of defaults and flags
07:24:51.413973   21412 mount_linux.go:168] Detected OS with systemd
07:24:51.414065   21412 client.go:75] Connecting to docker on unix:///var/run/docker.sock
07:24:51.414137   21412 client.go:95] Start docker client with request timeout=2m0s
07:24:51.415471   21412 cni.go:196] Unable to update cni config: No networks found in /etc/cni/net.d
07:24:51.437924   21412 iptables.go:564] couldn't get iptables-restore version; assuming it doesn't support --wait
07:24:51.440245   21412 feature_gate.go:156] feature gates: map[]
07:24:52.066765   21412 server.go:301] Successfully initialized cloud provider: "openstack" from the config file: "/etc/kubernetes/cloud-config"
07:24:52.066984   21412 openstack_instances.go:39] openstack.Instances() called
07:24:52.067048   21412 openstack_instances.go:46] Claiming to support Instances
07:24:52.070870   21412 metadata.go:84] Unable to run blkid: exit status 2
07:24:52.070993   21412 metadata.go:124] Attempting to fetch metadata from http://169.254.169.254/openstack/2012-08-10/meta_data.json
07:25:22.071444   21412 metadata.go:127] Cannot read http://169.254.169.254/openstack/2012-08-10/meta_data.json: Get http://169.254.169.254/openstack/2012-08-10/meta_data.json: dial tcp 169.254.169.254:80: i/o timeout
error: failed to run Kubelet: error fetching current node name from cloud provider: Get http://169.254.169.254/openstack/2012-08-10/meta_data.json: dial tcp 169.254.169.254:80: i/o timeout

如何進一步調試? 我不太了解IP地址169.254.169.254在此請求中的工作方式。

現在我不能確定我有Kubernetes問題還是Rackspace問題。

答案是Rackspace Cloud不使用Openstack元數據服務。 相反,它使用帶有配置驅動器的cloud-init-引導時連接的只讀塊設備(虛擬CD-ROM)。

配置驅動器包含cloud-init數據。 示例https://developer.rackspace.com/blog/using-cloud-init-with-rackspace-cloud/

有趣的是,大多數使用Kubernetes的Rackspace客戶似乎使用支持Cloud-config和Openstack配置驅動器的CoreOS VM。 當K8在裝有驅動器的機器上運行時,它將嘗試從那里獲取元數據。

按照此鏈接,您需要將雲配置文件放入/ etc / kubernetes / pki中。 我已經嘗試過這種方法,並且有效。

https://github.com/kubernetes/kubeadm/issues/484

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM