允许两个pod相互通信

时间:2018-03-02 15:00:59

标签: kubernetes

第一次使用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"

1 个答案:

答案 0 :(得分:2)

您的服务已定义选择器

public class StudentCourse
    {
        [Key]
        public int Id { get; set; }
        public int StudentId { get; set; }
        public int CourseId { get; set; }

        [ForeignKey("CourseId")]
        public ICollection<Course> Courses { get; set; }

        [ForeignKey("StudentId")]
        public ICollection<Student> Students { get; set; }


    }

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

selector:
  app: mysql