Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes “ExternalName”服务能否指向主机?_Kubernetes - Fatal编程技术网

Kubernetes “ExternalName”服务能否指向主机?

Kubernetes “ExternalName”服务能否指向主机?,kubernetes,Kubernetes,我正在本地(Docker for Mac内部)的Kubernetes集群上工作,该集群最终将部署到云端。我们计划在该环境中使用数据库服务。为了模拟这种情况,我想让集群中的服务连接到我笔记本电脑上集群外部运行的数据库 我可以这样做吗?这是我想尝试的 使用type:ExternalName和ExternalName:somedb.local 将127.0.0.1 somedb.local添加到笔记本电脑上的/etc/hosts 对吗?有更好的办法吗?在与一些同事讨论后,我找到了一个解决方案 在D

我正在本地(Docker for Mac内部)的Kubernetes集群上工作,该集群最终将部署到云端。我们计划在该环境中使用数据库服务。为了模拟这种情况,我想让集群中的服务连接到我笔记本电脑上集群外部运行的数据库

我可以这样做吗?这是我想尝试的

  • 使用
    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中运行的