azure - 从 Azure 中的虚拟机连接到集群服务
问题描述
我在 Azure 中创建了一个 VM,我想连接到 mariadb 服务(来自集群节点的 mariadb.mariadb.svc.cluster.local)
可以使用主机名或私有 IP 来做到这一点吗?
谢谢!
解决方案
可以使用主机名或私有 IP 来做到这一点吗?
绝对地!
在 Kubernetes 中,该服务 用于与 pod 进行通信。
Kubernetes 中默认的服务类型是 ClusterIP
ClusterIP 是只能从 Kubernetes 集群内部访问的内部IP 地址。ClusterIP 使运行在 pod 中的应用程序能够访问该服务。
要在 kubernetes 集群之外公开 Pod,您将需要NodePort
或LoadBalancer
类型的 k8s 服务。
- NodePort:在静态端口(NodePort)上公开每个节点 IP 上的服务。
ClusterIP
Service 路由到的ServiceNodePort
是自动创建的。您可以通过请求从集群外部联系 NodePort 服务<NodeIP>:<NodePort>
。
请注意,需要将外部IP 地址分配给集群中的一个节点,以及允许进入该端口的流量的防火墙规则。因此,Kubernetes 节点(附加外部 IP 地址)上的 kubeproxy 将将该端口代理到服务选择的 pod。
- LoadBalancer:使用云提供商的负载均衡器向外部公开服务。自动创建外部负载均衡器路由到的服务
NodePort
。ClusterIP
或者,如果您需要访问 HTTP/S(这里不是这种情况,但仍然值得一提),可以使用Ingress
有一篇关于从集群外部访问 Kubernetes Pod的非常好的文章。
希望有帮助。
推荐阅读
- laravel - 设置 laravel 项目
- java - 如果出现异常,如何停止 graphql-spqr-spring-boot-starter 打印日志?
- angular - 在可观察的 HTTP 调用中实现加载器的正确方法?
- github - 无法在 Netbeans 12 中使用 Team -> Git -> 克隆向导使用 SSH 连接到 github 存储库
- python - 在 PyQt5 应用程序中执行子进程永远不会返回
- python - 测试 TensorFlow 安装是否在 Ubuntu 20.04 中的 Python 3.8.2 上失败
- javascript - 检查字符串是否包含数组中忽略大小写的元素(JavaScript)
- karate - 通过空手道功能文件中的标记调用另一个场景无法重新识别 karate-config.js 函数
- linux - 在没有 yum 的情况下在哪里手动下载 .rpm?
- c++ - sizeof(variableName or expression) 和 sizeof(decltype(variableName or expression)) 一样吗?