Kubernetes “ExternalName”服务能否指向主机?
我正在本地(Docker for Mac内部)的Kubernetes集群上工作,该集群最终将部署到云端。我们计划在该环境中使用数据库服务。为了模拟这种情况,我想让集群中的服务连接到我笔记本电脑上集群外部运行的数据库 我可以这样做吗?这是我想尝试的Kubernetes “ExternalName”服务能否指向主机?,kubernetes,Kubernetes,我正在本地(Docker for Mac内部)的Kubernetes集群上工作,该集群最终将部署到云端。我们计划在该环境中使用数据库服务。为了模拟这种情况,我想让集群中的服务连接到我笔记本电脑上集群外部运行的数据库 我可以这样做吗?这是我想尝试的 使用type:ExternalName和ExternalName:somedb.local 将127.0.0.1 somedb.local添加到笔记本电脑上的/etc/hosts 对吗?有更好的办法吗?在与一些同事讨论后,我找到了一个解决方案 在D
- 使用
和type:ExternalName
ExternalName:somedb.local
- 将
添加到笔记本电脑上的127.0.0.1 somedb.local
/etc/hosts
对吗?有更好的办法吗?在与一些同事讨论后,我找到了一个解决方案
在Docker for Mac中,
host.Docker.internal
指向主机,这样我就可以连接到运行在那里的数据库,甚至可以从K8s集群中运行的容器连接到数据库。Kubernetes文档似乎提供了如何实现这一点的说明。
注意:端点IP不能是:环回(对于IPv4为127.0.0.0/8,对于IPv6为:1/128)或链接本地(对于IPv4为169.254.0.0/16和224.0.0.0/24,对于IPv6为fe80::/64)。通过创建具有匹配名称的端点对象,您可能拥有指向SDN外地址的服务
----
apiVersion: v1
kind: Service
metadata:
name: external-db
namespace: my-namespace
spec:
ports:
- name: exporter-3306
port: 3306
selector:
name: external-db
---
apiVersion: v1
kind: Endpoints
metadata:
name: external-db
namespace: my-namespace
subsets:
- addresses:
- ip: 10.42.253.110
ports:
- name: exporter-3306
port: 3306
您可以在部署定义中添加主机覆盖:
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
containers:
...
hostAliases:
- ip: 10.42.253.110
hostnames:
- external-db
主机上的本地主机和pod中的本地主机不相同localhost@VasiliAngapov是的,我知道,但是集群内的DNS查找会“冒泡”到主机吗?如果没有,是否有其他方法可以从集群中指向主机?Quilify作为注释。如果主机没有127.0.0.1以外的ip,这是否有效?查询127.0.0.1的Kubernetes容器不会离开其netnamespace。作为虚拟/物理服务器或容器的一般规则:127.0.0.1永远不会让您访问远程主机。如果您的外部数据库只有一个环回地址,那么您就有另一个问题了。您知道这在k3d集群中是否可行吗?因为K8s是在docker中运行的