我将一个 mysql pod 部署到我的 k8s。这是配置,我对端口感到困惑,就像这样:kind: Deployment... containers: - ports: - containerPort: 3306 # @1---apiVersion: v1kind: Service metadata: name: mysql labels: app: mysqlspec: 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 服务器。
1 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
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。
- 1 回答
- 0 关注
- 301 浏览
添加回答
举报
0/150
提交
取消