如何与Kubernetes集群外部的DB通信

时间:2020-10-15 18:46:41

标签: docker kubernetes

下午好,我有一个问题,我是Kubernetes的新手,我需要连接到集群之外的数据库,我只能使用hostNetwork = true连接到该数据库,但是,不建议这样做,在这种情况下,有一种与外部数据库通信的方法吗?

我将当前使用的Yaml留给您,我的吊舱中包含一个可与Spring Boot配合使用的容器

apiVersion: apps/v1
kind: Deployment
metadata:
  name: find-complementary-account-info
  labels:
    app: find-complementary-account-info
spec:
  replicas: 2
  selector:
    matchLabels:
      app: find-complementary-account-info
  template:
    metadata:
      labels:
        app: find-complementary-account-info
    spec:
      hostNetwork: true
      dnsPolicy: Default
      containers:
      - name: find-complementary-account-info
        image:find-complementary-account-info:latest
        imagePullPolicy: IfNotPresent
        resources:
          limits:
            memory: "350Mi"
          requests:
            memory: "300Mi"
        ports:
        - containerPort: 8081
        env:
        - name: URL_CONNECTION_BD
          value: jdbc:oracle:thin:@11.160.9.18:1558/DEFAULTSRV.WORLD
        - name: USERNAME_CONNECTION_BD
          valueFrom:
            secretKeyRef:
              name: credentials-bd-pers
              key: user_pers
        - name: PASSWORD_CONNECTION_BD
          valueFrom:
            secretKeyRef:
              name: credentials-bd-pers
              key: password_pers
              key: password_pers
---
apiVersion: v1
kind: Service
metadata:
  name: find-complementary-account-info
spec:
  type: NodePort
  selector:
    app: find-complementary-account-info
  ports:
    - protocol: TCP
      port: 8081
      targetPort: 8081
      nodePort: 30020

任何人都知道如何与外部DB通信吗?这不是云集群,而是OnPremise

1 个答案:

答案 0 :(得分:1)

hostNetwork参数用于从集群外部访问Pod,您不需要。

集群内部的Pod可以进行外部通信,因为它们已被NAT。如果没有,则外部原因可以阻止它,例如防火墙或缺少路由。

更快找到它的方法是ssh到您的Kubernetes集群节点之一并尝试

telnet 11.160.9.18 1558

无论如何,该IP地址似乎是公共地址,因此您必须检查公司防火墙的恕我直言