我创建了一个带有2个INIT容器的JOB窗格 在创建pod时,我的作业已成功完成,但没有初始化容器的迹象
对我来说,作业应该在启动之前等待2个init容器的完成
我的工作蓝图(取自Kubernetes文档),以防您想重现问题
apiVersion: batch/v1
kind: Job
metadata:
name: pi
annotations:
pod.beta.kubernetes.io/init-containers: '[
{
"name": "init-myservice",
"image": "busybox",
"command": ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"]
},
{
"name": "init-mydb",
"image": "busybox",
"command": ["sh", "-c", "until nslookup mydb; do echo waiting for mydb; sleep 2; done;"]
}
]'
spec:
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
检查我的工作吊舱时
$ kubectl describe pod pi-v2dn9
Name: pi-v2dn9
Namespace: default
Security Policy: anyuid
Node: 192.168.111.4/192.168.111.4
Start Time: Thu, 19 Oct 2017 08:58:39 +0000
Labels: controller-uid=b3091c77-b4ab-11e7-a3ea-fa163ea1c70b
job-name=pi
Status: Succeeded
IP: 10.131.0.46
Controllers: Job/pi
Containers:
pi:
Container ID: docker://4bc5bb4c9fc65c1aa1999c3bdc09b01e54043dcdd464410edd0c9cad334c9c67
Image: perl
Image ID: docker-pullable://docker.io/perl@sha256:80bd8136a0f3e2c7d202236fc5d8f1192dbfa9ec661ecdd5e96a446e9c7913a8
Port:
Command:
perl
-Mbignum=bpi
-wle
print bpi(2000)
State: Terminated
Reason: Completed
Exit Code: 0
Started: Thu, 19 Oct 2017 08:58:53 +0000
Finished: Thu, 19 Oct 2017 08:58:58 +0000
Ready: False
Restart Count: 0
Volume Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-fxdf1 (ro)
Environment Variables:
Conditions:
Type Status
Initialized True
Ready False
PodScheduled True
Volumes:
default-token-fxdf1:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-fxdf1
QoS Class: BestEffort
Tolerations:
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
26s 26s 1 {default-scheduler } Normal Scheduled Successfully assigned pi-v2dn9 to 192.168.111.4
25s 25s 1 {kubelet 192.168.111.4} spec.containers{pi} Normal Pulling pulling image "perl"
12s 12s 1 {kubelet 192.168.111.4} spec.containers{pi} Normal Pulled Successfully pulled image "perl"
12s 12s 1 {kubelet 192.168.111.4} spec.containers{pi} Normal Created Created container with docker id 4bc5bb4c9fc6; Security:[seccomp=unconfined]
12s 12s 1 {kubelet 192.168.111.4} spec.containers{pi} Normal Started Started container with docker id 4bc5bb4c9fc6
没有标志的INIT集装箱!!!
我的环境: --- Kubernetes版本(使用kubectl版本): 客户端版本:version.Info {Major:“1”,Minor:“5”,GitVersion:“v1.5.2 + 43a9be4”,GitCommit:“43a9be4”,GitTreeState:“clean”,BuildDate:“2017-04-20T15: 38:11Z“,GoVersion:”go1.7.4“,编译:”gc“,平台:”linux / amd64“} 服务器版本:version.Info {Major:“1”,Minor:“5”,GitVersion:“v1.5.2 + 43a9be4”,GitCommit:“43a9be4”,GitTreeState:“clean”,BuildDate:“2017-04-20T15: 38:11Z“,GoVersion:”go1.7.4“,编译:”gc“,平台:”linux / amd64“}
我在OpenStack的集群中工作
操作系统是Red Hat Enterprise Linux Server 7.3(Maipo)
提前感谢您的帮助。
答案 0 :(得分:1)
尝试将注释添加到规范模板而不是Job对象:
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
metadata:
name: pi
annotations:
pod.beta.kubernetes.io/init-containers: '[
{
"name": "init-myservice",
"image": "busybox",
"command": ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"]
},
{
"name": "init-mydb",
"image": "busybox",
"command": ["sh", "-c", "until nslookup mydb; do echo waiting for mydb; sleep 2; done;"]
}
]'
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
答案 1 :(得分:0)
您的注释位置错误。特别是对于init容器,它们应该在pod元数据中定义,而您已将其添加到作业元数据中。
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
metadata:
name: pi
annotations:
pod.beta.kubernetes.io/init-containers: '[
{
"name": "init-myservice",
"image": "busybox",
"command": ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"]
},
{
"name": "init-mydb",
"image": "busybox",
"command": ["sh", "-c", "until nslookup mydb; do echo waiting for mydb; sleep 2; done;"]
}
]'
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
答案 2 :(得分:0)
作业中的初始化容器在1.6版本之前不起作用。您必须升级到1.6+版本才能使其正常工作