sql-server - 拉取公共(public)镜像时 Kubernetes 中的 ImagePullBack pod 状态 (MS SQL Server Express)

标签 sql-server docker kubernetes

我正在关注 Les Jackson 的 tutorial到微服务并在 05:30:00 为 ms sql server 创建部署时卡住了。我已经按照 yt 视频中所示编写了部署文件:

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 以 ImagePullBackOff 状态结束:

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

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 error: code = Unknown desc = context deadline exceeded"

但它没有告诉我任何关于解决此错误的资源不包括此类错误。

我在本地的 docker 上使用 kubernetes。 我研究过从私有(private)注册表中提取图像时可能会发生此问题,但这是公共(public)注册表,对吧 here .我复制粘贴了图像路径以确保,我尝试了不同的 ms sql 版本,但无济于事。

有人可以如此友善地告诉我应该走的正确方向/我应该怎么做才能让它发挥作用?它在视频上运行得很好 :(

最佳答案

我通过 docker pull mcr.microsoft.com/mssql/server:2017-latest 手动拉取图像,然后删除并重新应用部署来修复它。

关于sql-server - 拉取公共(public)镜像时 Kubernetes 中的 ImagePullBack pod 状态 (MS SQL Server Express),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73150640/

相关文章:

sql-server - 删除 SQL Server 中的隐式转换

kubernetes - kubelet FailedSync 同步 pod 时出错,跳过 : API error 400

java - kubernetes 中的 Selenium - 只允许本地连接

sql - sql server中日期转换是如何完成的

日期之间的 SQL 但在特定时间中断并在特定时间继续

c# - 使用类对象在 SQL 中添加申请人信息

angular - 提供静态文件时,nginx docker 容器出现 Forbidden 403 错误

ruby - 为什么在运行ruby应用程序的docker容器中大约60秒后Phusion Passenger会超时?

node.js - Dockerized NGINX 配置与在 Azure 上运行的 ReactJS 应用程序(容器实例)

mongodb - Istio 0.8 中的 Mongo 状态集