Kubernetes Externalname服务-如何连接

Kubernetes Externalname服务-如何连接,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,我们有两个集群。cluster1具有命名空间test1和一个作为clusterip运行的服务 我们必须从命名空间dev1的另一个集群(cluster2)调用该服务 我在cluster2中定义了externalname服务,指向cluster1中的另一个externalname服务。 cluster1中的externalname服务指向作为clusterip运行的原始服务 第2组: kind: Service apiVersion: v1 metadata: name: service n

我们有两个集群。cluster1具有命名空间test1和一个作为clusterip运行的服务 我们必须从命名空间dev1的另一个集群(cluster2)调用该服务

我在cluster2中定义了externalname服务,指向cluster1中的另一个externalname服务。 cluster1中的externalname服务指向作为clusterip运行的原始服务

第2组:

kind: Service
apiVersion: v1
metadata:
  name: service
  namespace: dev1
  labels:
    app: service
spec:
  selector:
    app: service
  type: ExternalName
  sessionAffinity: None
  externalName: service2.test.svc.cluster.local
status:
  loadBalancer: {}
集群1中:外部名称服务

kind: Service
apiVersion: v1
metadata:
  name: service2
  namespace: test1
  labels:
    app: service
spec:
  selector:
    app: service
  type: ExternalName
  sessionAffinity: None
  externalName: service1.test1.svc.cluster.local
status:
  loadBalancer: {}
集群内1集群服务:

kind: Service
apiVersion: v1
metadata:
  name: service1
  namespace: test1
  labels:
    app: service1
spec:
  ports:
    - name: http
      protocol: TCP
      port: 9099
      targetPort: 9099
  selector:
    app: service1
  clusterIP: 102.11.20.100
  type: ClusterIP
  sessionAffinity: None
status:
  loadBalancer: {}
但是,cluster1中的服务没有受到影响。我也尝试在externalname服务中添加spec:port:9099,但仍然不起作用


原因可能是什么。日志中也没有特定内容

这不是
ExternalName
服务的用途

ExternalName
服务用于具有集群内部服务名称,该名称将流量转发到另一个(内部或外部)DNS名称。实际上,
ExternalName
所做的是创建一个将外部DNS名称映射到集群本地名称的CNAME记录。它不会暴露集群之外的任何内容。看

您需要做的是在kubernetes集群之外公开您的服务,并且它们也可以从另一个集群使用

有不同的方法可以做到这一点。 例如:

  • :使用NodePort时,您的服务将在群集中的每个节点上的随机高端口上公开(默认范围为30000-32767)。如果您的防火墙允许流量进入该端口,您可以通过该端口访问您的服务
  • :如果您在支持负载平衡器分配的环境中运行kubernetes,则可以使用负载平衡器向internet公开您的服务
  • :如果集群中运行入口控制器,则可以使用
    ingres
    公开工作负载

在另一个集群上,您只需访问公开的服务。

请忽略任何缩进或名称错误,可能只是在此处键入时发生的。但事实上事情的名称和语法是正确的。您确定两个集群都可以本地访问集群IP吗?通常,大多数提供商都会设置防火墙或类似设备来防止这种情况。集群IP在集群内部工作,而不是像名称所暗示的那样总是在集群外部。没错,今天我从其他团队成员那里得到了答案,集群位于不同的网络上,它们之间没有设置连接。因此,我计划在我的新集群上部署所需的服务。感谢您的回复。但是,如果存在连接,我们如何使用集群之间的服务呢?我们用入口吗?抱歉,如果这是一个简单或愚蠢的问题,我对devops和kubernetes是新手,所以所有这些都让我很难理解:(@abindlish这将取决于您的Kubernetes解决方案。我在问题或评论中找不到您使用的确切Kubernetes解决方案。它是一个云管理的解决方案,如
GKE
AKS
EKS
,还是内部部署的解决方案?有了云管理,我想您可能会看到这样的术语:内部负载均衡器,Int内部入口和节点端口取决于所使用的提供程序。