如何在 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。谁代理这个端口@question2。这个端口是什么?我的意思是容器暴露了 3306 端口,服务也暴露了。在我的单节点中,这些不会冲突吗?@问题3。这个端口是指容器暴露的端口?


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


问题 5:当我使用方式 2 部署它时,如何从 pods 和我的 localMachine 访问我的 mysql 服务器。


忽然笑
浏览 195回答 1
1回答

慕桂英546537

Pod 监听端口,Service 代理端口。Pod 监听 3306 端口,Service 只代理 3306 端口到 Pod。服务不监听端口,它只是一个简单的 iptables 规则。当您创建默认的 ClusterIP 服务时,您可以通过主机名“mysql”从 pod 访问您的数据库。从 Kubernetes 外部你无法访问数据库,除非你执行“kubectl port-forward”。当您创建 NodePort 服务时,您仍然可以通过主机名“mysql”从 pod 访问您的数据库,但您也可以使用任何节点 IP + nodePort 访问数据库。因此,如果您的节点地址为 192.168.1.10 并且您的节点端口为 30600,那么您必须将 DB 连接到 192.168.1.10:30600。
打开App,查看更多内容
随时随地看视频慕课网APP