首页 > 解决方案 > 将 kubernetes pod 与外部端点(rest services、sql server、kafka、redis 等)通信的问题

问题描述

我有一个节点的 Kubernetes 集群。我有 java 服务 dockerized,可以访问其余服务、sql server、kafka 和 kubernetes 集群之外的另一个端点,但在同一个谷歌云网络中。

我寻求帮助的主要原因是我无法将 pod 内的 java 服务连接到前面提到的外部端点。

我以前尝试过使用 flannel 网络,但现在我已经重置了集群,并且我安装了 calico 网络,但没有得到积极的结果。

默认运行的 custer 的 Pod: 集群 pod

集群节点:

集群节点

我将一些 dockerized 的 java 服务部署为 cronjobs,其他的部署为部署。为了将此 cronjobs 或部署与 Kafka、Sql Server 等外部端点通信,我使用服务。

他们每个人的一个例子:Cronjob:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
   name: cronjob-name
spec:
  schedule: "*/5 * * * *"
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            cronjob1: cronjob-name
        spec:
          containers:
            - image: repository/repository-name:service-name:version
              imagePullPolicy: ""
              name: service-name
              resources: {}
          restartPolicy: OnFailure
  selector:
    matchLabels:
      cronjob1: cronjob-name

部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    deployment1: deployment_name
  name: deployment_name
spec:
  replicas: 1
  selector:
    matchLabels:
      deployment1: deployment_name
  strategy: {}
  template:
    metadata:
      labels:
        deployment1: deployment_name
    spec:
      containers:
      - image: repository/repository-name:service-name:version
        imagePullPolicy: ""
        name: service-name
        resources: {}
      imagePullSecrets:
       - name: dockerhub
      restartPolicy: Always
      serviceAccountName: ""
      volumes: null
status: {}

服务:

apiVersion: v1
kind: Service
metadata:
  name: sqlserver
spec:
  type: ClusterIP
  selector:
    cronjob1: cronjob1
    deployment1: deployment1
  ports:
    - protocol: TCP
      port: 1433
      targetPort: 1433

我的问题是,我无法从 java 服务连接,例如,使用 Sql Server Instance。我已经验证了 DNS 和 calico pods 日志并且没有错误。我尝试在运行时通过 ssh 连接到 pod,并且从内部的 pod 我无法远程登录到 Sql Server 实例。

¿ 你能给我一些关于这个问题的想法吗?或¿我可以做哪些测试?

非常感谢!

标签: kuberneteskubernetes-networking

解决方案


我再次解决了配置 Kubernetes 集群的问题,但使用的是 calico 而不是 fannel。感谢您的回复。我希望这对其他人有帮助。


推荐阅读