将openshift pod连接到外部mysql数据库



我正在尝试在OpenShift 4上设置一个通用pod,它可以连接到在OpenShift集群之外的单独VM上运行的mysql服务器(使用本地OpenShift crc进行测试(。然而,在创建部署时,我无法从pod内部连接到mysql服务器(出于测试目的(。

以下是我使用的部署:

kind: "Service"
apiVersion: "v1"
metadata:
name: "mysql"
spec:
ports:
- name: "mysql"
protocol: "TCP"
port: 3306
targetPort: 3306 
nodePort: 0
selector: {}
---
kind: "Endpoints"
apiVersion: "v1"
metadata:
name: "mysql" 
subsets: 
- addresses:
- ip: "***ip of host with mysql database on it***" 
ports:
- port: 3306 
name: "mysql"
---
apiVersion: v1
kind: DeploymentConfig
metadata:
name: "deployment"
spec: 
template:
metadata:
labels:
name: "mysql"
spec:
containers:
- name: "test-mysql"
image: "***image repo with docker image that has mysql package installed***"
ports:
- containerPort: 3306
protocol: "TCP"
env:
- name: "MYSQL_USER"
value: "user" 
- name: "MYSQL_PASSWORD"
value: "******" 
- name: "MYSQL_DATABASE"
value: "mysql_db"  
- name: "MYSQL_HOST"
value: "***ip of host with mysql database on it***" 
- name: "MYSQL_PORT"
value: "3306"  

我只是使用一个通用映像进行测试,它安装了标准包(nettools、openjdk等(

我通过命令进入部署的吊舱进行测试:

$ oc rsh {{ deployed pod name }}

但是,当我尝试运行以下命令时,我无法连接到运行mysql-server 的服务器

$ mysql --host **hostname** --port 3306 -u user -p

我得到这个错误:

ERROR 2003 (HY000): Can't connect to MySQL server on '**hostname**:3306' (111)

我还试图创建一条从服务出发的路线,并将其作为";fqdn";别无选择,但仍然没有运气。

如果我试图ping主机(当我在吊舱内时(,我也无法到达它。但我可以从吊舱外联系到主机,从吊舱内,我可以ping谷歌或github.com 等网站

作为参考,所使用的图像本质上是以下dockerfile

FROM ubi:8.0
RUN dnf install -y python3 
wget 
java-1.8.0-openjdk  
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm 
postgresql-devel
WORKDIR /tmp

RUN wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm && 
rpm -ivh mysql-community-release-el7-5.noarch.rpm && 
dnf update -y && 
dnf install mysql -y && 
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.48.tar.gz && 
tar zxvf mysql-connector-java-5.1.48.tar.gz && 
mkdir -p /usr/share/java/ && 
cp mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar /usr/share/java/mysql-connector-java.jar
RUN dnf install -y tcping 
iputils 
net-tools 

我想我对从OpenShift内部连接到外部数据库有一些根本性的误解,和/或我的部署配置需要在某个地方进行一些调整。如有任何帮助,我们将不胜感激。

正如文章对话中提到的,这看起来是一个防火墙问题。我用同样的配置再次进行了测试,但我没有使用外部mysql数据库,而是通过在openshift中部署mysql进行了测试。由于我无法控制组织中的防火墙,并且配置在两次部署之间没有变化,我将把它标记为已解决,因为我无法再做更多的事情来测试它

最新更新