Kubernetes设置

时间:2019-05-14 18:24:51

标签: kubernetes kubernetes-helm

我想在kubernetes中建立我的微服务生态系统。我有一个环境,可以说是在TEST中部署了app1,app2,app3和DB。数据库在服务之间共享。假设我所有的服务都部署在名为“稳定”的命名空间中。现在,我有了另一个名为“ dev”的命名空间,其中仅部署了app1。
现在,我想从“ dev”命名空间中的app1访问“ stable”命名空间中的app2和DB,如果两者都未部署在“ dev”中。也就是说,当我尝试从dev名称空间访问任何服务时,它应尝试在同一名称空间中进行连接,如果不存在,则应进入``稳定''状态。

我想实现跨名称空间通信,条件是如果当前名称空间中不存在该名称,则重定向到下一个名称空间。有可能吗?

2 个答案:

答案 0 :(得分:1)

您需要一个为所有此类故障转移定义了所有上游的负载平衡器服务。如果您希望集中配置,可以使用Istio实现。

答案 1 :(得分:0)

Kubernetes支持两种查找服务的主要模式-“环境变量”和“ DNS” 。尝试在不同名称空间中连接服务时,应使用完整的合格svc名称(带名称空间的sv名称),例如 your_svc1.namespace2.svc.cluster.local

根据文档:

  

创建服务时,它会创建一个相应的DNS条目。此项的格式为..svc.cluster.local,这意味着如果容器仅使用,它将解析为名称空间本地的服务。这对于在多个名称空间(例如开发,登台和生产)中使用相同的配置很有用。如果要跨命名空间访问,则需要使用完全限定的域名(FQDN)。有关“ Namespaces and DNS”的更多信息。

您还可以使用“ Services without selectors ”,其中端点可以由用户定义。另一个示例是带有<{3}}的“ Service Type ExternalName ”。

根据第二个问题,请参阅“ Pod的DNS政策

  

当您需要调整在resolv.conf中配置的上游名称服务器或搜索域后缀时,这很有用。您可以在pod创建期间使用dnsConfig选项执行此操作,如下面的示例所示。您可以找到更多信息example

apiVersion: v1
kind: Pod
metadata:
  namespace: default
  name: dns-example
spec:
  containers:
    - name: test
      image: nginx
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 1.2.3.4
    searches:
      - ns1.svc.cluster.local
      - ns2.svc.cluster.local
    options:
      - name: ndots
        value: "2"
      - name: edns0