为什么无法在 AWS EC2 上的 k8s 集群上正确部署容器?
Why can't deploy containers on k8s cluster on AWS EC2 correctly?
当我使用AWS EC2部署k8s集群时,在上面部署一个测试容器:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app-deployment-test
spec:
replicas: 2
template:
metadata:
labels:
app: app-test
tier: frontend
spec:
containers:
- name: app
image: ubuntu
ports:
- containerPort: 80
imagePullPolicy: Always
得到
Back-off restarting failed container
Error syncing pod
pods 出错。当描述特殊 pod 时:kubectl describe pod app-deployment-test-ccddf7bcc-dqltq
,在输出的尾部得到这些消息:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 41s default-scheduler Successfully assigned app-deployment-test-ccddf7bcc-dqltq to app-instance
Normal SuccessfulMountVolume 41s kubelet, app-instance MountVolume.SetUp succeeded for volume "default-token-zrf98"
Normal Pulling 14s (x3 over 40s) kubelet, app-instance pulling image "ubuntu"
Normal Pulled 12s (x3 over 32s) kubelet, app-instance Successfully pulled image "ubuntu"
Normal Created 12s (x3 over 31s) kubelet, app-instance Created container
Normal Started 11s (x3 over 31s) kubelet, app-instance Started container
Warning BackOff 11s (x3 over 27s) kubelet, app-instance Back-off restarting failed container
Warning FailedSync 11s (x3 over 27s) kubelet, app-instance Error syncing pod
失败的原因是什么?
default command 到 ubuntu 容器是 bash
。此 bash
命令将 运行 一次并将停止容器,这是预期的行为。
如果要保留容器 运行ning 添加下面的命令和参数。
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
我建议你 运行 nginx 容器,它将保持 运行ning 直到你杀死容器。
当我使用AWS EC2部署k8s集群时,在上面部署一个测试容器:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app-deployment-test
spec:
replicas: 2
template:
metadata:
labels:
app: app-test
tier: frontend
spec:
containers:
- name: app
image: ubuntu
ports:
- containerPort: 80
imagePullPolicy: Always
得到
Back-off restarting failed container
Error syncing pod
pods 出错。当描述特殊 pod 时:kubectl describe pod app-deployment-test-ccddf7bcc-dqltq
,在输出的尾部得到这些消息:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 41s default-scheduler Successfully assigned app-deployment-test-ccddf7bcc-dqltq to app-instance
Normal SuccessfulMountVolume 41s kubelet, app-instance MountVolume.SetUp succeeded for volume "default-token-zrf98"
Normal Pulling 14s (x3 over 40s) kubelet, app-instance pulling image "ubuntu"
Normal Pulled 12s (x3 over 32s) kubelet, app-instance Successfully pulled image "ubuntu"
Normal Created 12s (x3 over 31s) kubelet, app-instance Created container
Normal Started 11s (x3 over 31s) kubelet, app-instance Started container
Warning BackOff 11s (x3 over 27s) kubelet, app-instance Back-off restarting failed container
Warning FailedSync 11s (x3 over 27s) kubelet, app-instance Error syncing pod
失败的原因是什么?
default command 到 ubuntu 容器是 bash
。此 bash
命令将 运行 一次并将停止容器,这是预期的行为。
如果要保留容器 运行ning 添加下面的命令和参数。
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
我建议你 运行 nginx 容器,它将保持 运行ning 直到你杀死容器。