当前位置: 首页 > 知识库问答 >
问题:

在Kubernetes运行一个pod

宰鸿博
2023-03-14

我有以下由Dockerfile文件创建的图像:

REPOSITORY   TAG      IMAGE ID       CREATED       SIZE 
ruby/lab     latest   f1903b1508cb   2 hours ago   729.6 MB

我有以下YAML文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: ruby-deployment
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: ruby
    spec:
      containers:
      - name: ruby-app
        image: ruby/lab
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 4567

当我创建部署时,我在窗格中获得了以下信息:

ruby-deployment-3830038651-sa4ii   0/1       ImagePullBackOff   0          7m
ruby-deployment-3830038651-u1tvc   0/1       ImagePullBackOff   0          7m

并且错误无法拉取图像“红宝石/实验室:最新”:错误:从下面找不到图像红宝石/实验室

 8m            2m              6       {kubelet minikube}      spec.containers{ruby}   Normal          Pulling         pulling image "ruby/lab:latest"
 8m            2m              6       {kubelet minikube}      spec.containers{ruby}   Warning         Failed          Failed to pull image "ruby/lab:latest": Error: image ruby/lab not found
 8m            2m              6       {kubelet minikube}                              Warning         FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "ruby" with ErrImagePull: "Error: image ruby/lab not found"

真的有必要在docker中为此注册吗?我只想在本地进行测试,并将我的代码/存储库传递给朋友以进行测试

谢谢

共有3个答案

薛云瀚
2023-03-14

要在不上传的情况下使用图像,您可以按照以下步骤操作:因为您正在设置环境变量,所以在同一个shell中很重要!

  1. 使用 eval $(minikube docker-env) 设置环境变量
  2. 构建映像(例如,泊坞窗构建 -t 我的映像 。
  3. 在容器规范中设置图像,如构建标记(例如我的图像)
  4. 将镜像“取消策略”设置为“从不”,否则,Kubernetes 将尝试下载该镜像。
何辰沛
2023-03-14

AFAIR迷你库贝在VM中运行,因此它不会看到您在主机上本地构建的图像,但是...如 https://github.com/kubernetes/minikube/blob/master/docs/reusing_the_docker_daemon.md 您可以使用eval $(迷你库贝泊坞站env)来实际利用在迷你库贝上运行的码头工人守护进程,并从此在迷你库贝斯泊床上构建您的映像,从而期望它可用于迷你库贝斯k8s引擎,而无需从外部注册表中提取

蒋原
2023-03-14

您可以通过运行将docker客户端指向VM的docker守护程序

eval $(minikube docker-env)

然后您就可以正常地构建您的映像,并使用kubectl正常地创建您的kubernetes资源。确保你有

imagePullPolicy: IfNotPresent

在您的YAML或JSON规范中。

此外,还有一个标志将不安全的注册表传递给minikube VM。但是,这必须在第一次创建机器时指定。

minikube start --insecure-registry

当使用私人注册http://kubernetes.io/docs/user-guide/images/时,您可能也想阅读此信息

 类似资料:
  • 我已经安装了火花图表在我的k8s集群掌舵,我有3个豆荚运行1个主和2个执行,但仍然能够提交火花作业...在“提交应用程序”一节https://github.com/bitnami/charts/tree/master/bitnami/spark中提到我们可以使用。/bin/spark-submit--class org.apache.spark.examples.sparkpi--master s

  • 编辑:问题解决了,这是我的错误,我只是使用了错误的cron设置。我假设“*2***”在2点时每天只运行一次,但实际上它在2点后每分钟运行一次。所以Kubernetes的行为是正确的。 我一直在一个 cron 执行点运行多个作业。但似乎只有当这些作业的运行时间非常短时。知道为什么会发生这种情况以及如何防止它吗?我使用策略:禁止,和。 一个cron作业的示例,该作业应该每天运行一次,但在其预定运行时间

  • 如果您有一个Kubernetes集群,或者仅仅是运行Minikube,则将Linkerd部署为服务网格是开始的最快方式。它不仅部署非常简单,还适用于大多数生产用例,提供服务发现,仪器仪表,智能客户端负载均衡,熔断器和开箱即用的动态路由。 Linkerd服务网格被部署为Kubernetes DaemonSet,在集群的每个节点上运行一个Linkerd pod。在Kubernetes中运行的应用程序可

  • 我对库伯内特斯集群管理非常陌生。我已经完成了库伯内特斯集群设置,有2个节点启动并运行。所以为了开始,我决定在集群上运行NodeBB应用程序。所以我没有构建自己的映像,而是在Docker HUb上获得了官方的NodeBB docker容器 所以为了从那个容器启动NodeBB,我向库伯内特斯master发射了命令。 等待一段时间后,它启动了具有两个副本的容器。但问题是它不断重新启动我的容器。 知道为什

  • 我有一个后端nodeJS应用程序运行在kubernetes集群。现在我想运行两个cron作业计划每个月。cron作业在一个JS文件中。如何使用库伯内特斯创建一个作业,在每个月运行该服务的pod中运行这些JS文件? 此链接提供了对其工作原理的基本理解,但我对如何为特定服务和特定Pod运行它有点困惑 https://kubernetes.io/docs/concepts/workloads/contr