0

我一直在尝试让 kuberentes pod 访问数据库中的外部 oracle。当 pod 启动时,与访问外部 oracle 数据库相关的 PID 会挂起并且不会超时。

这是我的yaml:

apiVersion: batch/v1
kind: Job
metadata:
  name: neuron-oracle-producer-clinrpt
  namespace: pubsub
spec:
  template:
    metadata:
      labels:
        app: neuron-oracle-producer-clinrpt
    spec:
      restartPolicy: Never
      hostNetwork: true
      containers:
      - name: neuron-oracle-producer-clinrpt
        image: ndtregistry.azurecr.io/neuron-oracle-producer-clinrpt:latest
        imagePullPolicy: Always
        command: ["neuron-oracle-producer-clinrpt"]
        ports:
          - containerPort: 1521
            hostPort: 1521
        env:
        - name: ORA_USERNAME
          valueFrom:
            secretKeyRef:
              name: clinrpt
              key: username
        - name: ORA_PASSWORD
          valueFrom:
            secretKeyRef:
              name: clinrpt
              key: password
        - name: QUEUE_HOST
          value: "broker.kafka.svc.cluster.local"
        - name: QUEUE_PORT
          value: "9092"
        - name: QUEUE_CATEGORIES
          value: "json"
        - name: LOG_FILE
          value: "/var/log/neuron-oracle-producer-clinrpt.txt"
        - name: MESSAGE_SOURCE
          value: "ClinRpt"
        - name: MESSAGE_FORMAT
          value: "json"
        - name: DEBUG
          value: "TRUE"
        resources:
          requests:
            cpu: 500m
            memory: 1Gi
          limits:
            cpu: 500m
            memory: 1Gi
        volumeMounts:
        - name: logs
          mountPath: /var/log/producer
      imagePullSecrets:
      - name: azureregistry
      volumes:
      - name: logs
        emptyDir: {}

如何让我的 pod 访问外部 oracle 数据库?

4

1 回答 1

1

这可能为时已晚,但您可能想尝试添加:

  1. 一个 k8s 服务,让 pod 知道有一个 DB 可以调用
  2. 将外部 IP 地址映射到服务的 k8s 端点

理由:默认情况下,K8s 搜索本地服务。这将创建一个映射到外部服务 URI 的本地服务。更多信息:https ://cloud.google.com/blog/products/gcp/kubernetes-best-practices-mapping-external-services

于 2020-06-10T09:51:09.963 回答