kubernetes pod 与外部端点通信的问题(休息服务、sql 服务器、kafka、redis 等...)
Problems to communicate kubernetes pod with external endpoints (rest services, sql server, kafka, redis etc...)
我有一个只有一个节点的 kubernetes 集群。我有 java 服务 dockerized 可以访问休息服务、sql 服务器、kafka 和 kubernetes 集群之外但在同一个 google 云网络中的另一个端点。
我寻求帮助的主要原因是我无法将 pod 内 dockerized 的 java 服务连接到前面提到的外部端点。
我之前尝试过使用 flannel 网络,但现在我重置了集群并安装了 calico 网络,但没有得到积极的结果。
默认情况下 运行 的 Pods:
集群节点:
我部署了一些 java 服务 dockerized 作为 cronjobs,其他作为部署。为了将此 cronjobs 或部署与 Kafka、Sql 服务器等外部端点进行通信,我使用服务。
每个例子:
定时作业:
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 服务器实例。我已经验证了 DNS 和 calico pods 日志并且没有错误。我尝试通过 ssh 连接到 pods 而它是 运行 并且从 pod 内部我不能 telnet 到 Sql 服务器实例。
¿你能给我一些关于问题的想法吗?或者我可以做什么测试?
¡非常感谢!
我再次解决了配置 Kubernetes 集群的问题,但使用 calico 而不是 fannel.Thanks 进行回复。我希望这对其他人有帮助。
我有一个只有一个节点的 kubernetes 集群。我有 java 服务 dockerized 可以访问休息服务、sql 服务器、kafka 和 kubernetes 集群之外但在同一个 google 云网络中的另一个端点。
我寻求帮助的主要原因是我无法将 pod 内 dockerized 的 java 服务连接到前面提到的外部端点。
我之前尝试过使用 flannel 网络,但现在我重置了集群并安装了 calico 网络,但没有得到积极的结果。
默认情况下 运行 的Pods:
集群节点:
我部署了一些 java 服务 dockerized 作为 cronjobs,其他作为部署。为了将此 cronjobs 或部署与 Kafka、Sql 服务器等外部端点进行通信,我使用服务。
每个例子: 定时作业:
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 服务器实例。我已经验证了 DNS 和 calico pods 日志并且没有错误。我尝试通过 ssh 连接到 pods 而它是 运行 并且从 pod 内部我不能 telnet 到 Sql 服务器实例。
¿你能给我一些关于问题的想法吗?或者我可以做什么测试?
¡非常感谢!
我再次解决了配置 Kubernetes 集群的问题,但使用 calico 而不是 fannel.Thanks 进行回复。我希望这对其他人有帮助。