GKE Cannot get a list of clusters/containers/pods
Summary
Cannot get a list of GKE (Google Kubernetes Engine) clusters/containers or pods
Detailed Information
As mentioned in the documentation, followed the get_driver API to get the container driver for the GKE provider. But got the below stacktrace.
Traceback (most recent call last):
File "/home/lkp//list-instances.py", line 146, in <module>
main(sys.argv[1:])
File "/home/lkp/list-instances.py", line 51, in main
list_container_gce()
File "/home/lkp/list-instances.py", line 37, in list_container_gce
for cluster in driver.list_containers():
File "/usr/lib/python2.7/site-packages/libcloud/container/drivers/kubernetes.py", line 163, in list_containers
ROOT_URL + "v1/pods").object
File "/usr/lib/python2.7/site-packages/libcloud/container/drivers/gke.py", line 68, in request
response = super(GKEConnection, self).request(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/libcloud/common/google.py", line 815, in request
*args, **kwargs)
File "/usr/lib/python2.7/site-packages/libcloud/common/base.py", line 650, in request
response = responseCls(**kwargs)
File "/usr/lib/python2.7/site-packages/libcloud/common/base.py", line 162, in __init__
self.object = self.parse_body()
File "/usr/lib/python2.7/site-packages/libcloud/common/google.py", line 278, in parse_body
raise ResourceNotFoundError(message, self.status, code)
libcloud.common.google.ResourceNotFoundError: u'<!DOCTYPE html>\n<html lang=en>\n <meta charset=utf-8>\n <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">\n <title>Error 404 (Not Found)!!1</title>\n <style>\n *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\n </style>\n <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n <p><b>404.</b> <ins>That\u2019s an error.</ins>\n <p>The requested URL <code>/v1/projects/absolute-point-196613/api/v1/pods</code> was not found on this server. <ins>That\u2019s all we know.</ins>'
Libcloud version: 2.8.0, 3.0.0-rc1 Python version: 2.7, 3.7 OS: Fedora 30
Thanks for reporting this.
I just fixed this in #1423 recently (that PR still needs some tests, etc. though).
The library does not work even when I want to fetch the running containers: Does the above PR fix the list_containers() issue as well, because in the new GKE API I have not seen any API call which will give us list of containers: Please help me understand this.
URL in http module: https://container.googleapis.com/v1/projects/absolute-point-196613/api/v1/pods
Traceback (most recent call last):
File "/home/lkp/list-instances.py", line 158, in <module>
main(sys.argv[1:])
File "/home/lkp/list-instances.py", line 63, in main
list_container_gce()
File "/home/lkp/list-instances.py", line 37, in list_container_gce
for cluster in driver.list_containers():
File "/usr/lib/python2.7/site-packages/libcloud/container/drivers/kubernetes.py", line 163, in list_containers
ROOT_URL + "v1/pods").object
File "/usr/lib/python2.7/site-packages/libcloud/container/drivers/gke.py", line 68, in request
response = super(GKEConnection, self).request(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/libcloud/common/google.py", line 815, in request
*args, **kwargs)
File "/usr/lib/python2.7/site-packages/libcloud/common/base.py", line 650, in request
response = responseCls(**kwargs)
File "/usr/lib/python2.7/site-packages/libcloud/common/base.py", line 162, in __init__
self.object = self.parse_body()
File "/usr/lib/python2.7/site-packages/libcloud/common/google.py", line 278, in parse_body
raise ResourceNotFoundError(message, self.status, code)
libcloud.common.google.ResourceNotFoundError: u'<!DOCTYPE html>\n<html lang=en>\n <meta charset=utf-8>\n <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">\n <title>Error 404 (Not Found)!!1</title>\n <style>\n *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\n </style>\n <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n <p><b>404.</b> <ins>That\u2019s an error.</ins>\n <p>The requested URL <code>/v1/projects/absolute-point-196613/api/v1/pods</code> was not found on this server. <ins>That\u2019s all we know.</ins>'
Correct, GKE doesn't expose those operations through their API.
One option is to connect directly to the API service running on the GKE Kubernetes cluster using regular Kubernetes driver.
Thanks for contributing to this issue. As it has been 90 days since the last activity, we are automatically marking is as stale. If this issue is not relevant or applicable anymore (problem has been fixed in a new version or similar), please close the issue or let us know so we can close it. On the contrary, if the issue is still relevant, there is nothing you need to do, but if you have any additional details or context which would help us when working on this issue, please include it as a comment to this issue.
Is there an update on this?
I'm trying the following:
from libcloud.container.types import Provider as ContainerProvider
from libcloud.container.providers import get_driver as get_container_driver
containercls = get_container_driver(ContainerProvider.GKE)
containerdriver = containercls('[email protected]', '/path/to/file/project-key.json', project='cool-project-name')
containerdriver.list_clusters()
Output:
ResourceNotFoundError: '<!DOCTYPE html>\n<html lang=en>\n <meta charset=utf-8>\n <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">\n <title>Error 404 (Not Found)!!1</title>\n <style>\n *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\n </style>\n <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n <p><b>404.</b> <ins>That’s an error.</ins>\n <p>The requested URL <code>/v1/projects/cool-project-name/zones/clusters</code> was not found on this server. <ins>That’s all we know.</ins>'
Thanks for contributing to this issue. As it has been 90 days since the last activity, we are automatically marking is as stale. If this issue is not relevant or applicable anymore (problem has been fixed in a new version or similar), please close the issue or let us know so we can close it. On the contrary, if the issue is still relevant, there is nothing you need to do, but if you have any additional details or context which would help us when working on this issue, please include it as a comment to this issue.