AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1760362
Accepted
Dragno
Dragno
Asked: 2023-01-01 03:43:02 +0800 CST2023-01-01 03:43:02 +0800 CST 2023-01-01 03:43:02 +0800 CST

microk8s中的ErrImagePull

  • 772

我正在阅读“.NET 第二版中的微服务”一书。在本书的第三章中,作者尝试在本地主机上建立一个microk8s集群来托管一个web服务。Kubernetes 的配置代码是这样的:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: shopping-cart
spec:
  replicas: 1
  selector:
    matchLabels:
      app: shopping-cart
  template:
    metadata:
      labels:
        app: shopping-cart
    spec:
      containers:
        - name: shopping-cart
          image: your_unique_registry_name.azurecr.io/shopping-cart:1.0.0
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: shopping-cart
spec:
  type: LoadBalancer
  ports:
    - name: shopping-cart
      port: 5000
      targetPort: 80
  selector:
    app: shopping-cart

我发出命令 kubectl apply -f shopping-cart.yaml 当我执行 命令kubectl get all以查看是否一切运行良好时,我得到以下输出:

姓名 READY STATUS RESTARTS AGE
pod/shopping-cart-784b775b94-v5ddl 0/1 ImagePullBackOff 0 25m
pod/shopping-cart-6bd7897fd5-bnlvh 0/1 ImagePullBackOff 0 36m

名称类型集群 IP 外部 IP 端口年龄
服务/kubernetes ClusterIP 10.152.183.1 <无> 443/TCP 13d
服务/购物车 LoadBalancer 10.152.183.254 <pending> 5000:32238/TCP 36m

姓名准备好最新可用年龄
deployment.apps/购物车 0/1 1 0 36m

姓名 期望的当前准备年龄
replicaset.apps/shopping-cart-6bd7897fd5 1 1 0 36m
replicaset.apps/shopping-cart-784b775b94 1 1 0 25m

关于如何解决这个问题的任何想法?这本书的完整代码在https://github.com/horsdal/microservices-in-dotnet-book-second-edition寻找第 3 章。我使用 Manjaro linux 进行开发和.NET 7,这本书是为.NET 5。尽管它说 ImagePullBackOff 最终它变成了 ErrImagePull 正如帖子的标题所说。

我还想添加以下输出:

kubectl describe pod 购物车  INT ✘
名称:购物车-784b775b94-v5ddl
命名空间:默认
优先级:0
服务帐号:默认
节点:dso-z68xud5b3/192.168.1.9
开始时间:2022 年 12 月 31 日星期六 11:37:04 +0200
标签:app=购物车
                  pod-模板哈希=784b775b94
注解:cni.projectcalico.org/containerID:2f73bffa63650fc7bf3497b7255172f8d80f7834de0a7e2738e26579006261c2
                  cni.projectcalico.org/podIP: 10.1.59.225/32
                  cni.projectcalico.org/podIPs: 10.1.59.225/32
状态:待定
IP:10.1.59.225
IP:
  IP:10.1.59.225
控制者:ReplicaSet/shopping-cart-784b775b94
容器:
  购物车:
    集装箱编号:   
    图片:your_unique_registry_name.azurecr.io/shopping-cart:1.0.0
    图片编号:       
    端口:80/TCP
    主机端口:0/TCP
    状态:等待
      原因:ImagePullBackOff
    就绪:假
    重新启动计数:0
    环境:<无>
    坐骑:
      /var/run/secrets/kubernetes.io/serviceaccount 来自 kube-api-access-6cghz (ro)
状况:
  类型状态
  初始化为真
  准备好 假
  ContainersReady 错误
  PodScheduled 真
卷:
  kube-api-access-6cghz:
    类型:投影(包含来自多个来源的注入数据的卷)
    TokenExpirationSeconds:3607
    ConfigMap 名称:kube-root-ca.crt
    ConfigMap可选:<无>
    向下API:真
QoS 等级:尽力而为
节点选择器:<无>
容忍度:node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
事件:
  消息类型原因年龄
  ---- ------ ---- ---- --------
  警告 MissingClusterDNS 3m32s(x71 超过 18m)kubelet pod:“shopping-cart-784b775b94-v5ddl_default(1e24b5d3-d921-45a1-b5ec-2edc35e651e4)”。kubelet 没有配置 ClusterDNS IP,无法使用“ClusterFirst”策略创建 Pod。回退到“默认”策略。

名称:购物车-6bd7897fd5-bnlvh
命名空间:默认
优先级:0
服务帐号:默认
节点:dso-z68xud5b3/192.168.1.9
开始时间:2022 年 12 月 31 日星期六 11:26:03 +0200
标签:app=购物车
                  pod-模板哈希=6bd7897fd5
注解:cni.projectcalico.org/containerID:a859a48851ce4eecb8311318cc71b6057fab2ad2c74e5e41b1bff419d3f210ae
                  cni.projectcalico.org/podIP: 10.1.59.224/32
                  cni.projectcalico.org/podIPs: 10.1.59.224/32
状态:待定
IP:10.1.59.224
IP:
  IP:10.1.59.224
控制者:ReplicaSet/shopping-cart-6bd7897fd5
容器:
  购物车:
    集装箱编号:   
    图片:购物车
    图片编号:       
    端口:80/TCP
    主机端口:0/TCP
    状态:等待
      原因:ImagePullBackOff
    就绪:假
    重新启动计数:0
    环境:<无>
    坐骑:
      /var/run/secrets/kubernetes.io/serviceaccount 来自 kube-api-access-hcmnb (ro)
状况:
  类型状态
  初始化为真
  准备好 假
  ContainersReady 错误
  PodScheduled 真
卷:
  kube-api-访问-hcmnb:
    类型:投影(包含来自多个来源的注入数据的卷)
    TokenExpirationSeconds:3607
    ConfigMap 名称:kube-root-ca.crt
    ConfigMap可选:<无>
    向下API:真
QoS 等级:尽力而为
节点选择器:<无>
容忍度:node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
事件:
  消息类型原因年龄
  ---- ------ ---- ---- --------
  警告 MissingClusterDNS 3m24s(x71 超过 18m)kubelet pod:“shopping-cart-6bd7897fd5-bnlvh_default(5309b220-a258-4930-bf64-9b1cf0cbafc7)”。kubelet 没有配置 ClusterDNS IP,无法使用“ClusterFirst”策略创建 Pod。回退到“默认”策略。
kubernetes
  • 1 1 个回答
  • 30 Views

1 个回答

  • Voted
  1. Best Answer
    Daniel B
    2023-01-01T10:01:21+08:002023-01-01T10:01:21+08:00

    不确定书中的内容,但存储库包含所需的所有成分。您可能跳过了一些步骤。您需要以下内容:

    • Docker 镜像(your_unique_registry_name.azurecr.io/shopping-cart:1.0.0在模板YAML 中调用)
    • 容器注册表(your_unique_registry_name.azurecr.io在模板YAML 中调用)
    • (一个 Kubernetes 集群)

    该存储库包含一个模板脚本,用于在Microsoft Azure 云上创建容器注册表 (ACR) 和 Kubernetes 集群 (AKS)。或者,任何其他注册表(和 K8s)都可以,甚至是 Docker Hub!您还可以在 MicroK8s 中启用内置容器注册表。

    在Azure上创建容器注册中心的相关代码如下:

    az group create --name MicroservicesInDotnet --location northeurope
    az acr create --resource-group MicroservicesInDotnet --name YOUR_UNIQUE_REGISTRY_NAME --sku Basic
    

    这些命令需要安装 Azure CLI。

    要启用 MicroK8s 容器注册表,请使用此命令,然后按照文档进行操作:

    microk8s enable registry
    

    该存储库还包含一个Dockerfile用于创建将在 Kubernetes 集群中使用的 Docker 映像的文件。在本地创建映像(使用docker build适当的参数)后,您必须将其推送 ( docker push) 到您要使用的注册表。

    无论您选择哪种方式,重要的是在您的 Kubernetes YAML 文件中使用图像的确切名称(包括冒号后面的部分!)。如果你能用docker pull这个名字,它很可能在 Kubernetes 中工作。如果你做不到,它几乎肯定不会起作用。

    如果您决定使用的注册表只能通过凭据访问(通常称为“私有”,需要docker login),Kubernetes 也需要这些来拉取镜像。从关于从私有注册表中提取的文档中,使用用户名/电子邮件/密码身份验证的方法是:

    kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
    

    如果您的注册表使用不同的身份验证方案,事情会更复杂,但该指南提供了解决方案。结果是一个名为 的集群秘密regcred。您可以在部署 YAML 中引用此机密:

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: shopping-cart
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: shopping-cart
      template:
        metadata:
          labels:
            app: shopping-cart
        spec:
          imagePullSecrets: # <--
            - name: regcred # <--
          containers:
            - name: shopping-cart
              image: your_unique_registry_name.azurecr.io/shopping-cart:1.0.0
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 80
    
    • 1

相关问题

  • helm delete release 停留在删除状态

  • OpenStack 上的 Kubernetes CSI 向节点添加了错误的 nodeid 注释

  • 使用 BIG-IP 连接到 kubernetes 集群的 ssl 直通

  • Kubernetes 一个作业被移动到另一个 pod

  • 如何使用 Ansible k8s 模块?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve