我们经常会调试容器的里面服务,检测容器里面服务是否正常,譬如 curl 一下容器里面端口。但我们安装kubectl 机器通常并不能直接和容器互通,因为kubectl 只需要连接到apiserver即可。
我们可以通过port-forward命令,将容器的端口映射成本地端口。如下:
kubectl port-forward mongo-75f59d57f4-4nd6q 28015:27017
上面的命令可以将mongo 容器里面的27017 端口映射到本地 28015 端口。不仅如此还可以将k8s 的service 映射到本地。如下:
kubectl port-forward service/mongo 28015:27017
这样我们就可以打开一个新的窗口,然后连接本地的28015端口,后台自动转发到容器里面的27017 端口。但目前port-forward 还只能支持TCP协议。关于port-forward 实现原理,后续专门写一篇文章介绍,这个也是一个高频面试题。
有时候我们需要调试apiserver接口,但又不想走认证流程,kubectl 还可以通过proxy 建立一个隧道,通过访问本地的8080 端口代理对apiserver 的请求,从而绕过认证过程。
kubectl proxy --port=8080
那么接下来便可以通过curl 直接获取pod 列表了
curl http://localhost:8080/api/v1/namespaces/default/pods
这里就可以轻松绕过了k8s 的认证过程,整个认证由 kubectl 通过kubeconfig 完成,只对外暴露了简单的访问入口。
页面更新:2024-05-12
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号