Amazon web services 处于CrashLoopBackOff状态的Kubernetes复制控制器
我执行了以下步骤 使用以下配置文件创建了复制控制器:Amazon web services 处于CrashLoopBackOff状态的Kubernetes复制控制器,amazon-web-services,docker,kubernetes,kubernetes-health-check,Amazon Web Services,Docker,Kubernetes,Kubernetes Health Check,我执行了以下步骤 使用以下配置文件创建了复制控制器: { "kind":"ReplicationController", "apiVersion":"v1", "metadata":{ "name":"fsharp-service", "labels":{ "app":"fsharp-service" } }, "spec":{ "replicas":1, "selector":{
{
"kind":"ReplicationController",
"apiVersion":"v1",
"metadata":{
"name":"fsharp-service",
"labels":{
"app":"fsharp-service"
}
},
"spec":{
"replicas":1,
"selector":{
"app":"fsharp-service"
},
"template":{
"metadata":{
"labels":{
"app":"fsharp-service"
}
},
"spec":{
"containers":[
{
"name":"fsharp-service",
"image":"fsharp/fsharp:latest",
"ports":[
{
"name":"http-server",
"containerPort":3000
}
]
}
]
}
}
}
}
运行以下命令:
kubectl create -f fsharp-controller.json
以下是输出:
$ kubectl get rc
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
cassandra cassandra gcr.io/google-samples/cassandra:v8 app=cassandra 3
fsharp-service fsharp-service fsharp/fsharp:latest app=fsharp-service 1
$ kubectl get pods
NAME READY REASON RESTARTS AGE
cassandra 1/1 Running 0 28m
cassandra-ch1br 1/1 Running 0 28m
cassandra-xog49 1/1 Running 0 27m
fsharp-service-7lrq8 0/1 Error 2 31s
$ kubectl logs fsharp-service-7lrq8
F# Interactive for F# 4.0 (Open Source Edition)
Freely distributed under the Apache 2.0 Open Source License
For help type #help;;
$ kubectl get pods
NAME READY REASON RESTARTS AGE
cassandra 1/1 Running 0 28m
cassandra-ch1br 1/1 Running 0 28m
cassandra-xog49 1/1 Running 0 28m
fsharp-service-7lrq8 0/1 CrashLoopBackOff 3 1m
$ kubectl describe po fsharp-service-7lrq8
W0417 15:52:36.288492 11461 request.go:302] field selector: v1 - events - involvedObject.name - fsharp-service-7lrq8: need to check if this is versioned correctly.
W0417 15:52:36.289196 11461 request.go:302] field selector: v1 - events - involvedObject.namespace - default: need to check if this is versioned correctly.
W0417 15:52:36.289204 11461 request.go:302] field selector: v1 - events - involvedObject.uid - d4dab099-04ee-11e6-b7f9-0a11c670939b: need to check if this is versioned correctly.
Name: fsharp-service-7lrq8
Image(s): fsharp/fsharp:latest
Node: ip-172-20-0-228.us-west-2.compute.internal/172.20.0.228
Labels: app=fsharp-service
Status: Running
Replication Controllers: fsharp-service (1/1 replicas created)
Containers:
fsharp-service:
Image: fsharp/fsharp:latest
State: Waiting
Reason: CrashLoopBackOff
Ready: False
Restart Count: 3
Conditions:
Type Status
Ready False
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
Sun, 17 Apr 2016 15:50:50 -0700 Sun, 17 Apr 2016 15:50:50 -0700 1 {default-scheduler } Scheduled Successfully assigned fsharp-service-7lrq8 to ip-172-20-0-228.us-west-2.compute.internal
Sun, 17 Apr 2016 15:50:51 -0700 Sun, 17 Apr 2016 15:50:51 -0700 1 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Created Created container with docker id d44c288ea67b
Sun, 17 Apr 2016 15:50:51 -0700 Sun, 17 Apr 2016 15:50:51 -0700 1 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Started Started container with docker id d44c288ea67b
Sun, 17 Apr 2016 15:50:55 -0700 Sun, 17 Apr 2016 15:50:55 -0700 1 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Started Started container with docker id 688a3ed122d2
Sun, 17 Apr 2016 15:50:55 -0700 Sun, 17 Apr 2016 15:50:55 -0700 1 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Created Created container with docker id 688a3ed122d2
Sun, 17 Apr 2016 15:50:58 -0700 Sun, 17 Apr 2016 15:50:58 -0700 1 {kubelet ip-172-20-0-228.us-west-2.compute.internal} FailedSync Error syncing pod, skipping: failed to "StartContainer" for "fsharp-service" with CrashLoopBackOff: "Back-off 10s restarting failed container=fsharp-service pod=fsharp-service-7lrq8_default(d4dab099-04ee-11e6-b7f9-0a11c670939b)"
Sun, 17 Apr 2016 15:51:15 -0700 Sun, 17 Apr 2016 15:51:15 -0700 1 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Started Started container with docker id c2e348e1722d
Sun, 17 Apr 2016 15:51:15 -0700 Sun, 17 Apr 2016 15:51:15 -0700 1 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Created Created container with docker id c2e348e1722d
Sun, 17 Apr 2016 15:51:17 -0700 Sun, 17 Apr 2016 15:51:31 -0700 2 {kubelet ip-172-20-0-228.us-west-2.compute.internal} FailedSync Error syncing pod, skipping: failed to "StartContainer" for "fsharp-service" with CrashLoopBackOff: "Back-off 20s restarting failed container=fsharp-service pod=fsharp-service-7lrq8_default(d4dab099-04ee-11e6-b7f9-0a11c670939b)"
Sun, 17 Apr 2016 15:50:50 -0700 Sun, 17 Apr 2016 15:51:44 -0700 4 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Pulling pulling image "fsharp/fsharp:latest"
Sun, 17 Apr 2016 15:51:45 -0700 Sun, 17 Apr 2016 15:51:45 -0700 1 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Created Created container with docker id edaea97fb379
Sun, 17 Apr 2016 15:50:51 -0700 Sun, 17 Apr 2016 15:51:45 -0700 4 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Pulled Successfully pulled image "fsharp/fsharp:latest"
Sun, 17 Apr 2016 15:51:46 -0700 Sun, 17 Apr 2016 15:51:46 -0700 1 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} Started Started container with docker id edaea97fb379
Sun, 17 Apr 2016 15:50:58 -0700 Sun, 17 Apr 2016 15:52:27 -0700 7 {kubelet ip-172-20-0-228.us-west-2.compute.internal} spec.containers{fsharp-service} BackOff Back-off restarting failed docker container
Sun, 17 Apr 2016 15:51:48 -0700 Sun, 17 Apr 2016 15:52:27 -0700 4 {kubelet ip-172-20-0-228.us-west-2.compute.internal} FailedSync Error syncing pod, skipping: failed to "StartContainer" for "fsharp-service" with CrashLoopBackOff: "Back-off 40s restarting failed container=fsharp-service pod=fsharp-service-7lrq8_default(d4dab099-04ee-11e6-b7f9-0a11c670939b)"
怎么了
如何找出控制器无法正确启动的原因
更新
我尝试将简单的“fsharp/fsharp:latest”图像更改为另一个图像,其中将有一个服务侦听端口,这就是我希望如何使用容器
该映像名为“username/someservice:mytag”,并且有一个监听端口3000的服务
我以以下方式运行服务:
mono Service.exe
当我查看日志时,我看到:
$ kubectl logs -p fsharp-service-wjmpv
Running on http://127.0.0.1:3000
Press enter to exit
因此,即使进程不应退出,容器仍处于相同的状态:
$ kubectl get pods
NAME READY REASON RESTARTS AGE
fsharp-service-wjmpv 0/1 CrashLoopBackOff 9 25m
我还尝试使用-I标志从我的图像运行容器,以使容器不退出,但kubectl似乎无法识别-I标志:\
有什么想法吗?您正在启动一个立即退出的容器。kubelet注意到,重新启动,然后再次退出。这种情况发生几次后,kubelet会减慢它尝试启动容器的速率(这是CrashLoopBackOff状态) 表示使用
-i
标志运行容器,这会给出一个交互式提示。如果你这么做的话
docker run fsharp/fsharp:latest
您会注意到容器立即退出并将您重新转储到本地shell中。这就是您试图在集群中调用容器的方式,它同样会立即退出 您正在启动一个立即退出的容器。kubelet注意到,重新启动,然后再次退出。这种情况发生几次后,kubelet会减慢它尝试启动容器的速率(这是CrashLoopBackOff状态) 表示使用
-i
标志运行容器,这会给出一个交互式提示。如果你这么做的话
docker run fsharp/fsharp:latest
您会注意到容器立即退出并将您重新转储到本地shell中。这就是您试图在集群中调用容器的方式,它同样会立即退出 我会使用
kubectl日志
尝试找出您的容器发生了什么,如下所示:
kubectl logs -p fsharp-service-7lrq8
-p
标志允许您获取上一次启动的日志,这在这种情况下是必要的,因为容器正在崩溃
更多信息:我会使用
kubectl日志
来尝试找出您的容器发生了什么,如下所示:
kubectl logs -p fsharp-service-7lrq8
-p
标志允许您获取上一次启动的日志,这在这种情况下是必要的,因为容器正在崩溃
更多信息:我在我的F#服务(Unix特定代码)中添加了以下行,以确保进程不会退出:
let signals = [| new UnixSignal (Signum.SIGINT);
new UnixSignal (Signum.SIGTERM);
new UnixSignal (Signum.SIGQUIT)
|]
let which = UnixSignal.WaitAny (signals, -1);
之后,我的复制控制器将正常运行。我已将以下行添加到我的F#服务(Unix特定代码)中,以确保进程不会退出:
let signals = [| new UnixSignal (Signum.SIGINT);
new UnixSignal (Signum.SIGTERM);
new UnixSignal (Signum.SIGQUIT)
|]
let which = UnixSignal.WaitAny (signals, -1);
之后,我的复制控制器将正常运行。谢谢,但是日志是空的,只是一条F#交互式提示消息您正在尝试实现什么?从您添加的端口判断,您打算运行某种web服务,但对我来说,容器中似乎不存在此类web服务,因为您只是在执行普通的F#容器。虽然我对F#一无所知,但请原谅我的无知。根据@RobertBaily的说法,你的图像所做的一切似乎就是启动一个交互提示,然后退出,除非是在交互模式下启动。为什么要启动一个在Kubernetes中不做任何事情的容器?如果你真的这么做,我建议你从无限睡眠开始。例如,在容器定义中添加类似的内容:
命令:[“bin/bash”、“-c”、“sleep”、“10000d”]
没错,这是我的hello world试用版,所以我尝试运行任何容器。在现实生活中,我将有一个基于fsharp image的定制映像,并带有一个web服务,在那里我必须传递必要的参数。这个特定的容器退出,但我想检查它是否有效。我将以互动的方式尝试,然后使用我的定制image@TobiasGustafsson请您将您的评论提升为回答。这一条帮助解决了我的问题。谢谢,但是日志是空的,只是一条F#交互式提示消息。你想实现什么?从您添加的端口判断,您打算运行某种web服务,但对我来说,容器中似乎不存在此类web服务,因为您只是在执行普通的F#容器。虽然我对F#一无所知,但请原谅我的无知。根据@RobertBaily的说法,你的图像所做的一切似乎就是启动一个交互提示,然后退出,除非是在交互模式下启动。为什么要启动一个在Kubernetes中不做任何事情的容器?如果你真的这么做,我建议你从无限睡眠开始。例如,在容器定义中添加类似的内容:命令:[“bin/bash”、“-c”、“sleep”、“10000d”]
没错,这是我的hello world试用版,所以我尝试运行任何容器。在现实生活中,我将有一个基于fsharp image的定制映像,并带有一个web服务,在那里我必须传递必要的参数。这个特定的容器退出,但我想检查它是否有效。我将以互动的方式尝试,然后使用我的定制image@TobiasGustafsson请您将您的评论提升为回答。这个有助于解决我的问题。我已经更新了我的问题。添加了我尝试使用另一个映像的结果(我运行侦听端口3000的服务的映像,基于fsharp映像),我更新了我的问题。添加了我尝试使用另一个映像的结果(我运行侦听端口3000的服务的映像,基于fsharp映像)