从本地网络连接到内部kubernetes服务



是否可以从本地网络连接到内部kubernetes服务?例如,我在kubernetes集群之外有vm,但在与kubernete集群相同的网络上(我可以从vm ping私有节点ip(,我想从该vm连接到内部kubernets服务,如http://sample-service.default.svc.cluster.local来自本地网络

我试着遵循这个教程https://blog.heptio.com/configuring-your-linux-host-to-resolve-a-local-kubernetes-clusters-service-urls-a8c7bdb212a7但仍然不工作

是的,您需要将服务类型更改为NodePort:https://kubernetes.io/docs/concepts/services-networking/service/#nodeport.然后,您的服务将可以从您的任何Kubernetes工作节点访问,使用其IP地址和下面命令显示的NodePort(>30000(。

例如:

$ kubectl get svc parse-server 
NAME           TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
parse-server   NodePort   10.96.139.142   <none>        1337:31013/TCP   17h
$ kubectl get nodes -o wide
NAME                 STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                                     KERNEL-VERSION    CONTAINER-RUNTIME
...
kind-worker2         Ready    <none>   42h   v1.19.1   172.18.0.2    <none>        Ubuntu Groovy Gorilla (development branch)   4.15.0-1101-oem   containerd://1.4.0

然后服务parse-server可以使用从本地网络访问

$ curl http://172.18.0.2:31013
<!DOCTYPE html>
<html lang="en">
...

NodePort是在Kubernetes集群之外公开服务的最简单方法,但如果您需要更高级的功能,如通过url路径或主机名进行路由,则需要研究ingress:https://kubernetes.io/docs/concepts/services-networking/ingress/.

最新更新