我正在尝试将一个pod连接到另一个pod,但获得连接拒绝错误。
我只运行:
>
RavenDB服务器
RavenDB客户端
什么不起作用:
什么有效:
docker-it…--bash,
- 我可以ping服务
- 和远程登录
奇怪的是,当访问docker时,我能够连接到它,尽管运行的脚本本身拒绝连接到目标pod。
它将pod连接到pod,并使用没有服务IP地址的服务标记目标服务器(RavenDB),以将域名解析为pod的当前IP地址。
知道我做错了什么吗?
完整配置:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: ravendb-cluster01
tier: backend
name: ravendb-cluster01
namespace: staging
spec:
replicas: 1
selector:
matchLabels:
app: ravendb-cluster01
tier: backend
template:
metadata:
labels:
app: ravendb-cluster01
tier: backend
name: ravendb-cluster01
namespace: staging
spec:
containers:
- env:
- name: RAVEN_ARGS
value: --ServerUrl=http://ravendb-cluster01-service.staging.svc.cluster.local:8080
--ServerUrl.Tcp=tcp://ravendb-cluster01-service.staging.svc.cluster.local:38888
--PublicServerUrl=http://localhost:8080 --PublicServerUrl.Tcp=tcp://localhost:38888
--DataDir=/ravendb/ --Setup.Mode=None --License.Eula.Accepted=true
image: ravendb/ravendb-nightly:4.0.6-nightly-20180720-0400-ubuntu.16.04-x64
name: ravendb
ports:
- containerPort: 8080
name: http
protocol: TCP
- containerPort: 38888
name: tcp
protocol: TCP
resources:
limits:
memory: 26000Mi
requests:
memory: 26000Mi
volumeMounts:
- mountPath: /ravendb/
name: ravendb-cluster01-storage
volumes:
- gcePersistentDisk:
fsType: ext4
pdName: ravendb-cluster01-storage
name: ravendb-cluster01-storage
---
apiVersion: v1
kind: Service
metadata:
labels:
app: ravendb-cluster01-service
tier: backend
name: ravendb-cluster01-service
namespace: staging
spec:
clusterIP: None
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
- name: tcp
port: 38888
protocol: TCP
targetPort: 38888
selector:
app: ravendb-cluster01
tier: backend
sessionAffinity: None
type: ClusterIP
DB的服务主机名错误,是不是输入错误?
ravendb-cluster01-service.namespace.svc.cluster.local
-> ravendb-cluster01-service.staging.svc.cluster.local
您最好检查运行DB吊舱的节点主机上的FW规则。
问题似乎是您的PublicServerUrl
设置。
--PublicServerUrl=http://localhost:8080 --PublicServerUrl.Tcp=tcp://localhost:38888
根据RavenDB留档:
将URL设置为可由客户端和其他节点访问,无论使用哪个IP在内部访问服务器。当通过https URL或在代理服务器后面使用安全连接时,这很有用。
您要么需要将其配置为服务名称,要么完全删除该选项。在查看了ServerUrl的文档后,我个人建议将您的参数更新为以下内容:
value: --ServerUrl=http://0.0.0.0:8080
--ServerUrl.Tcp=tcp://0.0.0.0:38888
--PublicServerUrl=http://ravendb-cluster01-service.staging.svc.cluster.local:8080 --PublicServerUrl.Tcp=tcp://ravendb-cluster01-service.staging.svc.cluster.local:38888
--DataDir=/ravendb/ --Setup.Mode=None --License.Eula.Accepted=true
理想情况下,您希望服务器URL侦听所有端口,因此设置为0.0.0.0对PublicUrl来说是有意义的。
它与端口转发
和本地docker容器一起工作的原因可能是因为RavenDB正在侦听环回设备,并且这两种连接方法都为您提供了容器内的本地进程,因此可以访问环回设备。
当使用NodePort服务和Kubernetes入口公开时,SFTP服务器不可访问。但是,如果使用LoadBalancer类型的服务公开相同的部署,它就可以正常工作。 然而,我尝试使用GKE Ingress公开相同的部署,但它不起作用。以下是入口的清单: 将外部IP分配给入口后(我知道完全设置需要几分钟),开始工作,但不工作。 下面是我从服务器得到的错误: 在上面的设置中,我做错了什么?为什么Lo
我有两个集群, 一个集群安装了我的应用程序微服务,另一个集群安装了Strimzi kafka。两者都是私有的GKE集群。 我的挑战是如何从我的应用程序连接到这个 kafka。大约有 10 个微服务正在运行,每个微服务都必须连接到 kafka。 我现在有一种方法,将Strimzi kafka作为Nodeport服务,并在应用程序代码中提供Ip和nodeIp。 这种方法的问题在于,如果 GKE 节点自
WebDAV的全称是“Web-base Distributed Authoring and Versioning”。它是HTTP协议的扩展,允许我们在远程管理和编辑Web服务器上的文件。现在很多Web服务器都支持WebDAV,包括最有名的Apache和Zope。要访问WebDAV服务,需要安装客户端,这里介绍的一个工具叫Cadaver,它是一个字符界面的工具,类似于FTP。支持文件的上传、下载和在
我有两个不同的微服务,将尤里卡作为服务注册表,现在我正在尝试从另一个微服务调用微服务,解析带有功能区的endpoint以进行客户端负载平衡。 服务A: 此服务公开一个终结点,并且应用程序.yml 如下所示: 调用服务A的服务B具有以下应用程序类: 控制器 服务 但我在尝试访问服务时遇到了一个异常: 对此有什么建议吗?
在开发机的Web服务器上托管一个站点,然后在Android设备上访问站点内容。 通过USB数据线和Chrome DevTools,您可以在开发机上运行站点,然后在Android设备上查看该网站。 TL;DR 端口转发可以使你在Android设备上查看开发机Web服务器中的内容。 如果你的Web服务器使用自定义域,您可以将Android设备设置为使用自定义域映射访问该域中的内容。 设置端口转发 端口
我在GKE上设置了Istio(Kubernetes入口模式,而不是Istio网关)。但是,我无法使用curl从外部访问 istio ingressgateway LoadBalancer 10.48.11.240 35.222.111.100 15020:30115/TCP,80:31420/TCP,443:32019/TCP,31400:31267/TCP,15029:30180/TCP,150