登录
首页 >  Golang >  Go问答

如何连接到 k8s 中的 mysql pod 或 mysql 节点?

来源:stackoverflow

时间:2024-05-01 19:54:29 161浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《如何连接到 k8s 中的 mysql pod 或 mysql 节点?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我将一个 mysql pod 部署到我的 k8s 上。这是配置, 我对端口感到困惑,例如:

kind: Deployment
...
   containers:
     - ports:
        - containerPort: 3306  # @1
---

apiVersion: v1
kind: Service 
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  selector:
    app: mysql

  # way 1
  ports:
    - port: 3306  # @2

      targetPort: 3306  # @3

  # way 2
  type: NodePort
  ports: 
    - port: 3306
      targetPort: 3306
      nodePort: 30600

@问题1。谁代理这个端口 @问题2。这个端口是什么?我的意思是容器暴露了端口 3306,服务也暴露了。在我的单个节点中,这些不会冲突吗? @问题3。这个端口是指容器暴露的端口吗?

问题4:当我用方式1部署时,如何从pods和我的localmachine访问我的mysql服务器。

问题5:当我用方式2部署时,我如何从pod和我的本地机器访问我的mysql服务器。


解决方案


  1. Pod 监听端口,服务代理端口。
  2. Pod 监听端口 3306,Service 仅将端口 3306 代理给 Pod。服务不监听端口,这只是一个简单的 iptables 规则。
  3. 当您创建默认 ClusterIP 服务时,您可以通过主机名“mysql”从 pod 访问您的数据库。从 Kubernetes 外部,除非执行“kubectl port-forward”,否则无法访问数据库。
  4. 当您创建 NodePort 服务时,您仍然可以通过主机名“mysql”从 pod 访问您的数据库,而且您也可以使用任何节点 IP + nodePort 访问数据库。因此,如果您的节点地址为 192.168.1.10 并且您的 nodePort 为 30600,那么您必须将数据库连接到 192.168.1.10:30600。

好了,本文到此结束,带大家了解了《如何连接到 k8s 中的 mysql pod 或 mysql 节点?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>