允许两个pod相互通信

问题描述 投票:1回答:1

第一次使用Kubernetes。我有一个API和一个数据库,我希望这两个pod相互通信。

根据文档,我应该创建一个服务。

我已经为两个pod中的每一个创建了一个服务,但仍然无法使用服务IP地址连接到pod。

例如,如果创建的MySQL服务的IP地址为11.22.33.44,我可以运行以下命令尝试连接到该服务的pod:

mysql -h11.22.33.44 -uuser -ppassword foo

...它会挂起,最终连接会超时。

我像这样创建pod和服务:

kubectl create -f ./mysql.yaml

mysql.yaml:

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  selector:
    app: mysql
  ports:
  - protocol: TCP
    port: 80
    targetPort: 3306
---
apiVersion: v1
kind: Pod
metadata:
  name: mysql
spec:
  containers:
    - name: mysql
      image: my-custom-mysql-image:latest
      ports:
      - containerPort: 3306
        protocol: TCP
        name: mysql
      env:
      - name: MYSQL_DATABASE
        value: "foo"
      - name: MYSQL_USER
        value: "user"
      - name: MYSQL_ROOT_PASSWORD
        value: "password"
      - name: MYSQL_HOST
        value: "127.0.0.1"
kubernetes
1个回答
2
投票

您的服务已定义选择器

selector:
  app: mysql

但是你的Pod没有任何标签,因此服务无法将其识别为其后端,并且没有端点来为ClusterIP引导流量。你也应该坚持服务上的标准端口号,所以像这样:

ports:
- protocol: TCP
  port: 3306
  targetPort: 3306
© www.soinside.com 2019 - 2024. All rights reserved.