java - kubernetes:无法拉取图像

标签 java spring-boot docker kubernetes

在加入企业 k8s/AWS EKS 之前,我正在使用 docker-desktop使用以下 Dockerfile 在 Mac 上进行本地 k8s 测试:

FROM openjdk:11-jre-slim
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
使用以下部署步骤到 docker-desktop :
docker build . -t cpchung/rema

kubectl create deployment rema --image=cpchung/rema --dry-run -o=yaml > deployment.yaml
echo --- >> deployment.yaml
kubectl create service clusterip rema --tcp=8080:8080 --dry-run -o=yaml >> deployment.yaml
kubectl apply -f deployment.yaml
这将生成 deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: rema
  name: rema
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rema
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: rema
    spec:
      containers:
      - image: cpchung/rema
        name: rema
        resources: {}
status: {}
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: rema
  name: rema
spec:
  ports:
  - name: 8080-8080
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: rema
  type: ClusterIP
status:
  loadBalancer: {}
并使用以下运行状况检查测试部署:
kubectl port-forward svc/rema 8080:8080
curl localhost:8080/actuator/health
但我收到此错误:
robinhood $ kubectl get all
NAME                        READY   STATUS             RESTARTS   AGE
pod/rema-57df6cf5fc-px8pc   0/1     ImagePullBackOff   0          4m29s

NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP    18h
service/rema         ClusterIP   10.100.78.60   <none>        8080/TCP   152m

NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/rema   0/1     1            0           4m29s

NAME                              DESIRED   CURRENT   READY   AGE
replicaset.apps/rema-57df6cf5fc   1         1         0       4m29s


robinhood $ kubectl logs rema-57df6cf5fc-px8pc
Error from server (BadRequest): container "rema" in pod "rema-57df6cf5fc-px8pc" is waiting to start: image can't be pulled
但我真的有来自 jetty worker 的形象:
robinhood $ docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
cpchung/rema                                    latest              14a4957873cd        2 hours ago         224MB

这里可能有什么问题?我正在将 mac 与 docker-desktop 一起使用。

最佳答案

https://stackoverflow.com/a/52763242/3514300应该为你解决问题

在您的部署中添加 imagePullPolicy: Never
默认情况下,没有标记的图像被赋予 latest docker 中的标签。默认情况下,Kubernetes 会尝试为 latest 拉取镜像标签,它无法在 dockerhub 中找到图像。 https://kubernetes.io/docs/concepts/containers/images/#updating-images

另一种方法是将您的图像也推送到 dockerhub。

关于java - kubernetes:无法拉取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60551591/

相关文章:

spring - CallableTaskletAdapter Spring Batch

java - Spring Boot Rest api 更新列

mysql - docker.io - 应用程序和数据库容器之间的 Docker 链接

java - 温度计算代码Java

java - 扫描仪错误

java - 如何转换富:calender date to mysql Date

docker - 为什么 docker 无法将 COPY 文件构建到/dev 文件夹?

java - query.list 和 query.iterate 的区别

java - Spring Boot 多模块测试

Azure 管道 Docker 镜像 ACR URI 前缀不适用于单独的构建、自定义命令、推送任务