首页 > 解决方案 > kubernetes 使用 YAML 时如何知道镜像在哪里?

问题描述

我正在关注本教程https://kubernetes.io/docs/tutorials/configuration/configure-java-microservice/configure-java-microservice-interactive/

打包 mvn 项目后,我被要求使用以下 YAML 文件和以下命令来部署它们

kubectl apply -f kubernetes.yaml

这是 kubernetes.yaml 的内容:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: system-deployment
  labels:
    app: system
spec:
  selector:
    matchLabels:
      app: system
  template:
    metadata:
      labels:
        app: system
    spec:
      containers:
      - name: system-container
        image: system:1.0-SNAPSHOT
        ports:
        - containerPort: 9080
        readinessProbe:
          httpGet:
            path: /health/ready
            port: 9080
          initialDelaySeconds: 30
          periodSeconds: 10
          timeoutSeconds: 3
          failureThreshold: 1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: inventory-deployment
  labels:
    app: inventory
spec:
  selector:
    matchLabels:
      app: inventory
  template:
    metadata:
      labels:
        app: inventory
    spec:
      containers:
      - name: inventory-container
        image: inventory:1.0-SNAPSHOT
        ports:
        - containerPort: 9080
        readinessProbe:
          httpGet:
            path: /health/ready
            port: 9080
          initialDelaySeconds: 30
          periodSeconds: 10
          timeoutSeconds: 3
          failureThreshold: 1
---
apiVersion: v1
kind: Service
metadata:
  name: system-service
spec:
  type: NodePort
  selector:
    app: system
  ports:
  - protocol: TCP
    port: 9080
    targetPort: 9080
    nodePort: 31000
---
apiVersion: v1
kind: Service
metadata:
  name: inventory-service
spec:
  type: NodePort
  selector:
    app: inventory
  ports:
  - protocol: TCP
    port: 9080
    targetPort: 9080
    nodePort: 32000

我对这种 YAML 文件没有任何经验。我没有看到 mvn /target 文件夹的任何路径。但是这两个应用程序现在都在 kubernetes 中运行,我可以在内部 curl 不同的应用程序并获得回复。

毫无疑问,它以某种方式链接,因为如果我不打包 mvn 项目,它就不起作用,但我想知道 YAML 的哪个部分找到了工件。

标签: kubernetes

解决方案


如果你输入

docker info

你会看到类似的东西

 Name: minikube

在输出中:这意味着您的 docker 构建是由 minikube 守护进程完成的。这是为 kubernetes 部署运行容器的同一个守护进程,所以发生的情况是,当您kubectl apply进行 YAML 配置时,该守护进程已经在本地拥有映像:它不需要从注册表中提取它。


推荐阅读