我在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。因为不允许(。)。
非常感谢任何帮助
由于您正在使用多个名称空间,因此需要使用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;']
参考: