如何创建一个Kubernetes服务,从另一个命名空间中选择pod?

idv4meu8  于 2023-04-20  发布在  Kubernetes
关注(0)|答案(1)|浏览(202)

在某些情况下,我想将我的服务的所有流量重定向到另一个命名空间中的pod。我如何做到这一点?
我在my-namespace-1中有这些pod:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  namespace: my-namespace-1
  labels:
    app: my-app
spec:
  containers:
    - name: nginx
      image: nginx
      ports:
        - containerPort: 80

my-namespace-2中的服务:

apiVersion: v1
kind: Service
metadata:
  name: my-service
  namespace: my-namespace-2
spec:
  selector:
    app: my-app
  ports:
    - name: http
      port: 80
      targetPort: 80
  type: ClusterIP

但是当我调用服务时,我从入口控制器得到HTTP状态503。
我是否需要在my-namespace-2中也设置一个服务?或者还缺少什么?

gtlvzcf8

gtlvzcf81#

服务不能选择其他命名空间的pod,只能选择自己命名空间的pod,问题是为什么不能直接在其他命名空间创建服务?
作为一种解决方法,您可以在my-namespace-1中创建服务my-service,并从my-namespace-2中的服务创建代理,例如,在my-namespace-2中创建服务,如下所示

kind: Service
apiVersion: v1
metadata:
  name: my-service
  namespace: my-namespace-2
spec:
  type: ExternalName
  externalName: my-service.my-namespace-1.svc.cluster.local
  ports:
  - port: 80

相关问题