在加入企业 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/