我有一个简单的入口网络,我想从这个入口网络访问不同名称空间的服务。
我怎么能做到这一点?我的入口网络yaml文件:
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文件:
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发布于 2018-08-18 00:09:59
DNS服务是一种特例,它没有选择器,而是使用
名称。
您可以在官方Kubernetes documentation中找到有关ExternalName服务的更多信息
当您想要访问来自不同名称空间的服务时,对于example,您的yaml可能如下所示:
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的官方示例一致,因为它包含了一些不一致的内容:
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-dns1.7版和更高版本。
如果你不会成功,请分享你所遇到的问题。
发布于 2021-02-02 21:05:16
nginx服务创建名称空间服务类型为nginx- service-ns
注意:演示代码不能在生产环境中运行。我只是想给出它如何跨名称空间工作的概念
---
#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发布于 2021-01-09 15:47:23
创建ExternaNames服务时不应使用任何选择器选项。因此,在创建入口资源的名称空间中创建ExternaNames服务,并指向外部名称服务,以解析托管在不同名称空间中的应用程序的名称。
https://stackoverflow.com/questions/51878195
复制相似问题