簡體   English   中英

將 openshift pod 連接到外部 mysql 數據庫

[英]Connect openshift pod to external mysql database

我正在嘗試在 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"  

我只是使用安裝了標准軟件包(net-tools、openjdk 等)的通用映像進行測試

我正在通過以下命令進入部署的 pod 進行測試:

$ 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 主機(在 pod 內),我也無法訪問它。 但是我可以從 pod 外部訪問主機,並且從 pod 內部,我可以 ping 諸如 google.com 或 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 db,而是通過在 openshift 中部署 mysql 進行測試,並且 pod 可以連接。 由於我無法控制組織中的防火牆,並且配置在兩個部署之間沒有更改,因此我將其標記為已解決,因為我無法對其進行測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM