You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes拉取MS SQL Server Express公共镜像时遇ImagePullBackOff问题

问题描述

跟随Les Jackson的微服务教程部署MS SQL Server时,Pod始终处于ImagePullBackOff状态。执行kubectl describe pod后显示拉取镜像时出现rpc error: code = Unknown desc = context deadline exceeded错误。使用本地Docker Desktop Kubernetes,镜像为公共镜像,确认路径正确,更换版本也无效。

部署文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mssql-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mssql
  template:
    metadata:
      labels:
        app: mssql
    spec:
      containers:
        - name: mssql
          image: mcr.microsoft.com/mssql/server:2017-latest
          ports:
            - containerPort: 1433
          env:
          - name: MSSQL_PID
            value: "Express"
          - name: ACCEPT_EULA
            value: "Y"
          - name: SA_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mssql
                key: SA_PASSWORD
          volumeMounts:
            - mountPath: /var/opt/mssql/data
              name: mssqldb
      volumes:
      - name: mssqldb
        persistentVolumeClaim:
          claimName: mssql-claim

---
apiVersion: v1
kind: Service
metadata:
  name: mssql-clusterip-srv
spec:
  type: ClusterIP
  selector:
    app: mssql
  ports:
  - name: mssql
    protocol: TCP
    port: 1433 # this is default port for mssql
    targetPort: 1433 

---
apiVersion: v1
kind: Service
metadata:
  name: mssql-loadbalancer
spec:
  type: LoadBalancer
  selector:
    app: mssql
  ports:
  - protocol: TCP
    port: 1433 # this is default port for mssql
   targetPort: 1433 

持久卷声明

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mssql-claim
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 200Mi

Pod状态

commands-depl-688f77b9c6-vln5v    1/1     Running            0          2d21h
mssql-depl-5cd6d7d486-m8nw6       0/1     ImagePullBackOff   0          4m54s
platforms-depl-6b6cf9b478-ktlhf   1/1     Running            0          2d21h

关键事件

Warning  Failed     102s                 kubelet                Failed to pull image "mcr.microsoft.com/mssql/server:2017-latest":     rpc error: code = Unknown desc = context deadline exceeded
排查方向与解决方法
  • 本地手动拉取镜像:直接在终端执行docker pull mcr.microsoft.com/mssql/server:2017-latest,确认是否能成功拉取。如果本地拉取也超时,说明是网络问题,需要检查网络连接,或者配置Docker镜像加速源。
  • 检查Docker Desktop网络配置:进入Docker Desktop设置 -> Resources -> Network,确认代理配置是否正确,是否开启VPN导致网络异常,尝试关闭VPN后重新拉取。
  • 测试Kubernetes镜像拉取功能:部署一个简单的镜像(比如nginx:alpine),验证Kubernetes的镜像拉取通道是否正常。如果这个镜像也拉取不到,说明Kubernetes的网络配置存在问题。
  • 调整镜像拉取策略:在Deployment的容器配置中添加imagePullPolicy: IfNotPresent,让K优先使用本地已有的镜像,避免重复拉取。
  • 修改PVC访问模式:当前PVC使用ReadWriteMany模式,Docker Desktop默认存储类可能不支持该模式,尝试改为ReadWriteOnce,单节点Kubernetes集群通常只需要单节点读写权限,修改后重新部署PVC和Deployment。

内容的提问来源于stack exchange,提问作者Ceres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:24:14