
blakec/external-mdnsExternal-mDNS 基于 flix-tech/k8s-mdns 项目开发,受 External DNS 启发,通过多播 DNS(RFC 6762)在局域网中广播 Kubernetes Services 和 Ingresses 地址,使这些资源无需额外 DNS 服务器即可在本地网络中被发现。
-namespace 标志限制为单个命名空间<hostname/service_name>.<namespace>.local;-default-namespace 指定的命名空间资源还会额外广播短格式 <hostname/service_name>.local适用于需要在本地网络中无需部署独立 DNS 服务器即可访问 Kubernetes 服务和 Ingress 的场景,例如开发测试环境、小型局域网内的 K8s 集群部署等。
External-mDNS 支持通过命令行参数或环境变量进行配置,环境变量格式为 EXTERNAL_MDNS_<参数名大写>,例如:
--namespace 对应环境变量 EXTERNAL_MDNS_NAMESPACE--record-ttl 对应环境变量 EXTERNAL_MDNS_RECORD_TTLyaml--- apiVersion: apps/v1 kind: Deployment metadata: name: external-mdns spec: strategy: type: Recreate selector: matchLabels: app: external-mdns template: metadata: labels: app: external-mdns spec: hostNetwork: true containers: - name: external-mdns image: blakec/external-mdns:latest args: - -source=ingress - -source=service
yaml--- apiVersion: v1 kind: ServiceAccount metadata: name: external-mdns --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: external-mdns rules: - apiGroups: [""] resources: ["services"] verbs: ["list", "watch"] - apiGroups: ["extensions","networking.k8s.io"] resources: ["ingresses"] verbs: ["list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: external-mdns-viewer roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: external-mdns subjects: - kind: ServiceAccount name: external-mdns namespace: default --- apiVersion: apps/v1 kind: Deployment metadata: name: external-mdns spec: strategy: type: Recreate selector: matchLabels: app: external-mdns template: metadata: labels: app: external-mdns spec: hostNetwork: true serviceAccountName: external-mdns containers: - name: external-mdns image: blakec/external-mdns:latest args: - -source=ingress - -source=service
使用以下命令部署 External-mDNS:
bashkubectl apply --filename external-mdns.yaml
部署完成后,可通过以下命令在局域网内测试 DNS 记录是否解析正常:
console$ dns-sd -Q example.local a in DATE: ---Sun 16 Aug 2020--- 22:50:37.797 ...STARTING... Timestamp A/R Flags if Name Type Class Rdata 22:50:37.959 Add 2 4 example.local. Addr IN 192.0.2.10
console$ avahi-resolve-address -4 --name example.local example.local 192.0.2.10



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务