【发布时间】:2020-01-30 21:20:58
【问题描述】:
我在 Azure 上有一个 Kubernetes 集群,其中我创建了 MySQL pod 和 Django pod。我已将 MySQL pod 作为服务公开并尝试从 Django 连接。我在 Django 的 settings.py 文件中给出了服务名称,并尝试运行“runserver”,然后出现以下错误。
OperationalError: (2003, "Can't connect to MySQL server on 'mysqlserv' (111)").
如果我尝试使用“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
【问题讨论】:
-
如果 pod 重启或重新创建,clusterip 会发生变化,最好使用服务名称。
-
嗨,您能分享一下您的 MySQL 服务器部署 yaml 清单吗?
-
@PiotrMalec,感谢您的回复,我已添加到上面的主要问题中。
-
@HarshManvar,您好,感谢您的回复,这就是我来这里了解如何使用服务名称的原因。
标签: kubernetes azure-aks