首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes跨命名空间入口网络

Kubernetes跨命名空间入口网络
EN

Stack Overflow用户
提问于 2018-08-16 21:25:50
回答 4查看 26.3K关注 0票数 14

我有一个简单的入口网络,我想从这个入口网络访问不同名称空间的服务。

我怎么能做到这一点?我的入口网络yaml文件:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
 - host: api.myhost.com
 http:
 paths:
  - backend:
      serviceName: bookapi-2
      servicePort: 8080
    path: /booking-service/

我已经将ExternalNames服务类型设置为yaml文件:

代码语言:javascript
复制
 apiVersion: v1
 kind: Service
 metadata:
   name: bookapi-2
   namespace: booking-namespace
 spec:
   type: ExternalName
   externalName: bookapi-2
   ports:
     - name: app
     protocol: TCP
      port: 8080
      targetPort: 8080
   selector:
      app: bookapi-2
      tier: backend-2
EN

回答 4

Stack Overflow用户

发布于 2018-08-18 00:09:59

DNS服务是一种特例,它没有选择器,而是使用

名称。

您可以在官方Kubernetes documentation中找到有关ExternalName服务的更多信息

当您想要访问来自不同名称空间的服务时,对于example,您的yaml可能如下所示:

代码语言:javascript
复制
kind: Service
apiVersion: v1
metadata:
  name: test-service-1
  namespace: namespace-a
spec:
  type: ExternalName
  externalName: test-service-2.namespace-b.svc.cluster.local
  ports:
  - port: 80

至于你的Ingress文件,请重新检查并确保它与example的官方示例一致,因为它包含了一些不一致的内容:

代码语言:javascript
复制
apiVersion: extensions/v1beta1  
kind: Ingress  
metadata:  
  name: my-ingress  
spec:  
  rules:  
  - host: www.mysite.com  
    http:  
      paths:  
      - backend:  
          serviceName: website  
          servicePort: 80  
  - host: forums.mysite.com  
    http:  
      paths:  
      - path:  
        backend:  
          serviceName: forums  
          servicePort: 80

还请重新检查ExternalName yaml,因为它具有在此类型的Service中不使用的TargetPorts和选择器,并确保:

ExternalName服务仅适用于kube-dns 1.7版和更高版本。

如果你不会成功,请分享你所遇到的问题。

票数 30
EN

Stack Overflow用户

发布于 2021-02-02 21:05:16

nginx服务创建名称空间服务类型为nginx- service-ns

  • create的服务侦听名称空间中的端口80 service-ns

  • create service-ns

  • create名称空间中的nginx部署ingress-ns

  • create类型为ExternalName的-ns中的服务,并指向nginx-
  1. 的ClusterIP,将其指向nginx-internal.service-ns.svc.cluster.local
  2. create ingress

注意:演示代码不能在生产环境中运行。我只是想给出它如何跨名称空间工作的概念

代码语言:javascript
复制
---
#1
apiVersion: v1
kind: Namespace
metadata:
  name: service-ns
---
#2
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: nginx-internal
  namespace: service-ns
spec:
  ports:
  - name: "80"
    port: 80
    targetPort: 80  
  selector:
    app: nginx
---
#3
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
  namespace: service-ns
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        image: nginx
        name: nginx
        ports:
        - containerPort: 80
      restartPolicy: Always
---
#4
apiVersion: v1
kind: Namespace
metadata:
  name: ingress-ns
---
#5
kind: Service
apiVersion: v1
metadata:
  name: nginx
  namespace: ingress-ns
spec:
  type: ExternalName
  externalName: nginx-internal.service-ns.svc.cluster.local
  ports:
  - port: 80
---
#6
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: main-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
  namespace: ingress-ns    
spec:
  rules:
    - host: whatever.domain.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx
                port:
                  number: 80
票数 3
EN

Stack Overflow用户

发布于 2021-01-09 15:47:23

创建ExternaNames服务时不应使用任何选择器选项。因此,在创建入口资源的名称空间中创建ExternaNames服务,并指向外部名称服务,以解析托管在不同名称空间中的应用程序的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51878195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档