【问题标题】:Getting ImagePullBackOff on EC2 instance while creating Kubernetes pods在创建 Kubernetes pod 时在 EC2 实例上获取 ImagePullBackOff
【发布时间】:2019-10-18 16:21:06
【问题描述】:

我已经通过 docker-desktop 在 kubernetes 上成功部署了简单的 react 应用程序。那里只有一位主人。现在我在 AWS Ubuntu EC2 实例上做同样的事情,它有一个主节点和两个从节点,都连接正确。此外,我的主 EC2 实例上已经成功部署了一个演示 Nginx 服务器。

我在 React 部署/服务中获得 ImagePullBackOff 状态。我必须在 EC2 中进行任何配置才能使其工作。我该如何调试这些东西,以及可能是什么原因。

我已遵循这些指南,您可以假设我的部署和服务 .yml 文件与这些链接中提供的相同。

https://dev.to/rieckpil/deploy-a-react-application-to-kubernetes-in-5-easy-steps-516j

https://stackoverflow.com/a/37306838/9465933

我正在将 pod 推送到本地 docker 注册表。是否需要任何 docker 秘密配置? 任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services docker kubernetes devops


    【解决方案1】:

    如果您使用kubectl describe 扩展日志,您可能会注意到错误是Kubernetes 无法从注册表中获取图像。

    这是由于两件事:

    1. 您需要创建一个秘密才能访问您的注册表。 https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

    2. 你说有一个本地注册表。是否可以公开访问?请注意,EC2 实例需要能够访问它。因此,请检查 LAN 中的端口转发、防火墙配置等。

    【讨论】:

    • 防火墙和 selinux 被禁用。我已经运行了这个简单的命令 docker run -d -p 5000:5000 --restart=always --name registry registry:2 。这会使注册表公开访问吗?
    • 知道了,我收到了这个错误 来自守护进程的错误响应:Get localhost:5000/v2: dial tcp 127.0.0.1:5000: connect: connection denied -- 我也可以成功连接到 localhost nc -nv 127.0 .0.1 5000 连接到 127.0.0.1 5000 端口 [tcp/*] 成功!。 --AWS中的安全组也被打开了。
    • @jeetdeveloper 您需要将路由器上的端口 5000 转发到主机上的 5000。然后您需要将image: localhost:5000/my-react-app 更改为image: <YOUR_PUBLIC_IP>:5000/my-react-app。由于您可以访问 AWS,因此将注册表移动到另一个 AWS 实例可能会更容易,这样您就不需要处理端口转发。
    • 感谢您的回复。当我尝试这个 docker push 54.165.169.10:5000/reacttest。我收到了这个错误——Get 54.165.169.10:5000/v2: http: server给了HTTPS客户端的HTTP响应——54.x.x.x是我的主ec2实例的公共IP
    • @jeetdeveloper 这是一个不同的问题。您还需要配置 HTTPS 来访问您的 docker 注册表,如果它使用自签名证书,那么您需要配置 docker 守护进程以允许 insecure-registries。按照这里的文档docs.docker.com/registry/deploying 来自Run an externally-accessible registry
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2022-07-27
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多