You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁止同命名空间内服务使用带命名空间的域名通信?

禁止同一命名空间内服务使用带命名空间域名通信的方法

同一命名空间下的Kubernetes服务默认支持两种访问方式:短服务名(如service-b)和带命名空间的服务名(如service-b.dev),二者都会解析到同一个Service IP,因此L4网络策略无法区分这两种请求。要实现仅允许短服务名访问,可通过以下几种方案:

方案1:修改CoreDNS配置拦截特定域名解析

通过调整CoreDNS的规则,让同一命名空间内的Pod无法解析带命名空间后缀的服务域名。

  1. 编辑kube-system命名空间下的CoreDNS ConfigMap:
kubectl edit configmap coredns -n kube-system
  1. 在cluster.local域的配置块中添加拦截规则,以dev命名空间为例,拦截*.dev.svc.cluster.local格式的域名解析:
cluster.local {
    k8s cluster.local in-addr.arpa ip6.arpa {
        pods insecure
        fallthrough in-addr.arpa ip6.arpa
    }
    # 拦截同一命名空间的带后缀域名,返回无效IP
    template IN A *.dev.svc.cluster.local {
        answer "{{ .Name }} 30 IN A 0.0.0.0"
    }
    forward . /etc/resolv.conf
    cache 30
    loop
    reload
    loadbalance
}
  1. 保存配置后,CoreDNS会自动重载生效。此方法需注意:会影响跨命名空间对dev服务的正常访问,若有跨命名空间需求需调整规则范围。

方案2:用服务网格做L7流量控制(以Istio为例)

若集群部署了Istio等服务网格,可通过授权策略限制请求的Host头,仅允许短服务名访问。

  1. 确保service-a和service-b已注入Istio Sidecar。
  2. 在dev命名空间创建AuthorizationPolicy:
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: restrict-service-b-host
  namespace: dev
spec:
  selector:
    matchLabels:
      app: service-b # 替换为service-b的实际标签
  rules:
  - from:
    - source:
        namespaces: ["dev"]
    to:
    - operation:
        hosts: ["service-b"]
        ports: ["3000"]
  action: ALLOW

该策略仅允许Host为service-b的请求访问service-b,其他Host(如service-b.dev)的请求会被直接拒绝。

方案3:应用层校验Host头

如果不想依赖外部组件,可直接在service-b的应用代码中添加Host头校验逻辑,拒绝不符合要求的请求。

比如Node.js应用示例:

const express = require('express');
const app = express();

// 校验Host头,仅允许service-b
app.use((req, res, next) => {
  const allowedHost = 'service-b';
  if (req.hostname !== allowedHost) {
    return res.status(403).send('Forbidden');
  }
  next();
});

// 其他业务路由
app.get('/', (req, res) => {
  res.send('Hello from service-b');
});

app.listen(3000, () => {
  console.log('Service-b running on port 3000');
});

此方法无需额外组件,但需要修改应用代码,适合小型场景。

内容的提问来源于stack exchange,提问作者onegun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:55:26