我在 Azure 中创建了一个 VM,我想连接到 mariadb 服务(来自集群节点的 mariadb.mariadb.svc.cluster.local)
可以使用主机名或私有(private) IP 来做到这一点吗?
谢谢!
最佳答案
It's possible to do that using the host name or a private IP?
绝对是!
在 Kubernetes 中,service用于与 pod 进行通信。
Kubernetes 中默认的服务类型是 ClusterIP
ClusterIP 是只能从 Kubernetes 集群内部访问的内部 IP 地址。 ClusterIP 使 Pod 内运行的应用程序能够访问服务。
要在 kubernetes 集群外部公开 Pod,您需要 NodePort
的 k8s 服务或 LoadBalancer
类型。
- NodePort:在静态端口(NodePort)上公开每个节点 IP 上的服务。一个
ClusterIP
服务,到哪了NodePort
服务路线是自动创建的。您将能够通过请求<NodeIP>:<NodePort>
从集群外部联系 NodePort 服务.
请注意,需要将外部 IP 地址分配给集群中的节点之一,并需要一条允许进入该端口的流量的防火墙规则。因此,Kubernetes 节点(附加外部 IP 地址)上的 kubeproxy 会将该端口代理到服务选择的 pod。
- LoadBalancer:使用云提供商的负载均衡器向外部公开服务。
NodePort
和ClusterIP
外部负载均衡器路由到的服务是自动创建的。
或者,如果您需要访问 HTTP/S(这里不是这种情况,但仍然值得一提),可以使用 Ingress
acessing Kubernetes Pods from Outside of cluster 有一篇非常好的文章.
希望有帮助。
关于azure - 从 Azure 中的虚拟机连接到集群服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60497193/