为什么无法在 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 直到你杀死容器。