Kubernetes Pods如何访问外部域名
Pods如何访问外网域名
在Kubernetes环境中,并不是所有服务都适合部署中集群中,如数据库服务,在这种情况下集群中的Pods如何访问集群外的服务,有以下几种方式
CoreDNS方式
新增一段配置,如下范例
- 范例
.:53 { errors health { lameduck 15s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods verified ttl 30 fallthrough in-addr.arpa ip6.arpa } prometheus :9153 forward . /etc/resolv.conf { prefer_udp } cache 30 loop reload loadbalance } internal.local:53 { forward . 192.168.56.247 192.168.44.204 cache 30 }
Endpoints类型的服务
ExternalName类型的服务
- 范例
**> mkdir -p ~/mysql-endpoint > cd ~/mysql-endpoin > cat <<EOF > my-mysql-external.yaml apiVersion: v1 kind: Service metadata: name: my-mysql-external #此名字随便起 namespace: my-first-app #在固定的命名空间下 spec: type: ExternalName externalName: www.baidu.com ##提供方的服务完全限定域名,如rds域名等。 ports: - port: 80 ### ExternalName类型的服务创建后,pod可以通过my-mysql-external.default.svc.cluster.local域名连接到外部服务, #### 或者通过my-mysql-external。当需要指向其他外部服务时,只需要修改spec.externalName的值即可。 EOF
参考文献