kubectl raw API访问节点提示NotFound但节点实际存在的问题
Kubectl Raw API访问节点返回NotFound的原因及解决方法
问题场景:
使用kubectl get --raw调用K8s API访问节点时返回NotFound错误,但直接用kubectl get node却能看到该节点正常存在:
$ kubectl get --raw "/api/v1/nodes/ip-10-55-216-130.us-gov-west-1.compute.internal" Error from server (NotFound): nodes "ip-10-55-216-130.us-gov-west-1.compute.internal" not found
$ kubectl get node ip-10-55-216-130.us-gov-west-1.compute.internal NAME STATUS ROLES AGE VERSION ip-10-55-216-130.us-gov-west-1.compute.internal Ready <none> 38m v1.24.17-eks-ae9a62a
原因分析
节点名称中的点号(.)属于URL的特殊字符,直接放在Raw API的路径中时,API服务器会将其解析为路径分隔的一部分,无法正确识别完整的节点名称,因此返回NotFound。
解决方法
需要对节点名称中的特殊字符进行URL编码,将点号替换为对应的URL编码值%2E。
修改后的命令如下:
kubectl get --raw "/api/v1/nodes/ip-10-55-216-130%2Eus-gov-west-1%2Ecompute%2Einternal"
除了点号,其他在URL中有特殊含义的字符(如/、?、&等)在通过Raw API访问资源时,也需要进行对应的URL编码才能被正确识别。
内容的提问来源于stack exchange,提问作者paleozogt
相关产品推荐
相关产品推荐

