Django无法同时通过AKS群集中的群集IP和Nodeport连接到MySQL Pod

时间:2020-01-29 12:29:34

标签: kubernetes azure-aks

我在Azure上有一个Kubernetes集群,因为我创建了MySQL pod和Django pod。我已经将MySQL pod公开为服务,并尝试从Django连接。我在Django的settings.py文件中指定了服务名称,并尝试运行“ runserver”,然后出现以下错误。

OperationalError:(2003,“无法在'mysqlserv'(111)上连接到MySQL服务器”)。

如果我尝试使用“ mysql”命令进行连接,则它正在工作。下面是我使用的命令。

“ mysql -h mysqlerv -u root -p”。

但是令人惊讶的是,如果我在Django pod的/ etc / hosts文件(例如10.144.1.5 mysqlserv)中给Mysql pod IP,那么“ runserver”就可以工作了。

有人可以帮助我通过服务(群集IP)将Django pod与mysql pod连接起来。.

下面是我的sql-server yaml文件。

apiVersion: v1 
kind: Pod
metadata:
  name: sqlpod
  labels:
    app: demo
    env: test
spec:
  containers:
    - name: sqlapp-tester-custom
      image: mydockerregistry.com/mysql:5.7
      env:
        - name: SQL_HOST_NAME
          value: sqlapp-tester-custom
        - name: MYSQL_DATABASE
          value: myapp1_db
        - name: MYSQL_ROOT_PASSWORD
          value: myownPassword123
      ports:
        - name: sqlport
          containerPort: 3306
          protocol: TCP
      volumeMounts:
        - name: azurefile
          mountPath: /sql_data
  volumes:
    - name: azurefile
      azureFile:
        secretName: myazure-secret-name
        shareName: my_azure_file_share_name
        readOnly: false

1 个答案:

答案 0 :(得分:1)

如果pod重新启动或重新创建,clusterip将会更改,最好使用服务名称。

Kubernetes服务:https://kubernetes.io/docs/concepts/services-networking/service/

您可以检查mysql运行示例:https://kubernetes.io/docs/tasks/run-application/run-single-instance-stateful-application/

示例服务Yaml:

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysql
  clusterIP: None

我建议使用Wordpress https://kubernetes.io/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/

一次检查该示例。