Kubernetes-尽管存在服务,但无法从群集内的其他Pod连接到MySQL Pod

时间:2020-09-17 06:16:38

标签: mysql docker kubernetes

所以我有一个Kubernetes集群,在其中建立了带有两个Pod的部署。在一个容器中,有一个运行的MySQL容器,在另一个容器中,有一个Ubuntu容器。在Ubuntu容器中,我想执行一个Python脚本,该脚本连接到MySQL容器。

但是当我尝试连接到另一个Pod时,它说:

mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'mysql-service:3306' (111 Connection refused)

我的服务如下:

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
  labels:
    app: mysql-db-app
spec:
  selector:
    app: mysql-db-app
  ports:
    - port: 3306
      targetPort: 3306

这是我的mysql-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    io.kompose.service: mysql-db-app
  name: mysql-db-app
spec:
  selector:
    matchLabels:
      io.kompose.service: mysql-db-app
  strategy: {}
  template:
    metadata:
      labels:
        io.kompose.service: mysql-db-app
    spec:
      containers:
      - image: mysql:8
        name: mysql-db-app
        env:
          - name: MYSQL_ROOT_PASSWORD
            value: root
        ports:
          - containerPort: 3306
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql-data
      volumes:
      - name: mysql-data
        persistentVolumeClaim:
          claimName: mysql-pvc
      restartPolicy: Always

你知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

标签选择器似乎有问题。 将您的服务更新为此

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
  labels:
    io.kompose.service: mysql-db-app
spec:
  selector:
    io.kompose.service: mysql-db-app
  ports:
    - port: 3306
      targetPort: 3306

服务标签选择器应与Deployment.yaml中定义的标签选择器匹配