初始化容器nslookup问题

问题描述 投票:-1回答:1

我在kubernetes部署文件中有一个Init容器,我看到init容器无法使用Helm验证不同命名空间中存在的服务的可用性。 ns1下面是一个名称空间

      initContainers:
        - name: init-service1 #here I cannot give init-service1.<namespace> as (.) is not allowd
          image: busybox
          command: ['sh', '-c', 'until nslookup service1.<namespace>; do echo waiting for service1.<namespace>; sleep 10; done;']

我在相同的名称空间上尝试了相同的方法,并且在舵机下工作得很好

第二个initcontainer的名称应与我正在查找的服务的名称匹配?

另一个问题是掌舵人,我无法给出名称init-service1。因为不允许(。)。

非常感谢任何帮助

kubernetes kubernetes-helm
1个回答
0
投票

由于您正在使用多个名称空间,因此需要使用FQDN来获得服务:

[创建Service时,会创建相应的DNS entry。此项的格式为<service-name>.<namespace-name>.svc.cluster.local,这意味着如果容器仅使用<service-name>,它将解析为名称空间本地的服务。这对于在多个名称空间(例如开发,登台和生产)中使用相同的配置很有用。如果要跨命名空间访问,则需要使用标准域名(FQDN)

您的情况:service1.svc.myapp.svc.cluster.local

第二个initontainer的名称应与我正在查找的服务的名称匹配?

没有initContainer名称在此字段中无关紧要,您可以使用所需的名称。

在您的情况下,它应该可以工作:

      initContainers:
        - name: my-init
          image: busybox:1.28
          command: ['sh', '-c', 'until nslookup service1.svc.myapp.svc.cluster.local; do echo waiting for service1.svc.myapp.svc.cluster.local; sleep 10; done;']

参考:

Understanding namespaces and DNS

© www.soinside.com 2019 - 2024. All rights reserved.