我正在阅读“.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。回退到“默认”策略。