![拉取 MS SQL Server 的公共映像时,Kubernetes 中的 pod 上出现“上下文截止时间已过”错误](https://linux22.com/image/779146/%E6%8B%89%E5%8F%96%20MS%20SQL%20Server%20%E7%9A%84%E5%85%AC%E5%85%B1%E6%98%A0%E5%83%8F%E6%97%B6%EF%BC%8CKubernetes%20%E4%B8%AD%E7%9A%84%20pod%20%E4%B8%8A%E5%87%BA%E7%8E%B0%E2%80%9C%E4%B8%8A%E4%B8%8B%E6%96%87%E6%88%AA%E6%AD%A2%E6%97%B6%E9%97%B4%E5%B7%B2%E8%BF%87%E2%80%9D%E9%94%99%E8%AF%AF.png)
关注 Les Jackson教程在微服务上,在启用了 Kubernetes 的 Docker 本地安装上,我想在 Kubernetes 中创建一个新的 pod,其中包含可用的 ms sql server express 映像这里。部署文件与视频中的完全相同,但我无法让它工作。每次 pod 都以状态 ImagePullBack 结束。运行后kubectl 描述 pod:
Name: mssql-depl-5cd6d7d486-nrrkn
Namespace: default
Priority: 0
Node: docker-desktop/192.168.65.4
Start Time: Thu, 28 Jul 2022 12:09:34 +0200
Labels: app=mssql
pod-template-hash=5cd6d7d486
Annotations: <none>
Status: Pending
IP: 10.1.0.27
IPs:
IP: 10.1.0.27
Controlled By: ReplicaSet/mssql-depl-5cd6d7d486
Containers:
mssql:
Container ID:
Image: mcr.microsoft.com/mssql/server:2017-latest
Image ID:
Port: 1433/TCP
Host Port: 0/TCP
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment:
MSSQL_PID: Express
ACCEPT_EULA: Y
SA_PASSWORD: <set to the key 'SA_PASSWORD' in secret 'mssql'> Optional: false
Mounts:
/var/opt/mssql/data from mssqldb (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube- api-access-xqzks (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
mssqldb:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: mssql-claim
ReadOnly: false
kube-api-access-xqzks:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not- ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 3m42s default-scheduler Successfully assigned default/mssql-depl-5cd6d7d486-nrrkn to docker-desktop
Warning Failed 102s kubelet Failed to pull image "mcr.microsoft.com/mssql/server:2017-latest": rpc error: code = Unknown desc = context deadline exceeded
Warning Failed 102s kubelet Error: ErrImagePull
Normal BackOff 102s kubelet Back-off pulling image "mcr.microsoft.com/mssql/server:2017-latest"
Warning Failed 102s kubelet Error: ImagePullBackOff
Normal Pulling 87s (x2 over 3m41s) kubelet Pulling image "mcr.microsoft.com/mssql/server:2017-latest"
我发现了潜在的错误
“rpc 错误:代码 = 未知 desc = 超出上下文截止时间”
而且我不确定如何进一步解决此问题,我将非常感谢任何帮助。
我最初在 stackoverflow 上发布了此内容这里并将我的问题重定向到此站点,因为这可能是网络问题。
答案1
我通过运行docker pull mcr.microsoft.com/mssql/server:2017-latest
、删除并重新应用部署来修复它。
答案2
同样的问题,但我需要先将图像拉到 minikube
minikube ssh docker pull <the_image>
然后部署就可以了