gpt4 book ai didi

docker - 为什么我无法访问这个 helm chart 定义的应用程序? (在 Minikube 中)

转载 作者:行者123 更新时间:2023-12-02 12:10:03 25 4
gpt4 key购买 nike

我用过helm create helloworld-chart使用我创建的本地 docker 镜像创建应用程序。我认为问题是我的端口都搞砸了。
docker 件
--------------------------
docker 文件

FROM busybox
ADD index.html /www/index.html
EXPOSE 8008
CMD httpd -p 8008 -h /www; tail -f /dev/null
(我还有一个 index.html 文件,与我的 Dockerfile 位于同一目录中)
创建 Docker 镜像(并在本地发布)
docker build -t hello-world .
然后我用 docker run -p 8080:8008 hello-world 运行它并验证了我 上午 能够从 localhost:8080 访问它。 (然后我停止了那个 docker 容器)
我还使用 docker image ls 验证了此图像在本地 docker 中。并得到输出:
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
hello-world latest 8640a285e98e 20 minutes ago 1.23MB
Helm 件
--------------------------
通过 helm create helloworld-chart 创建了一个 Helm chart .
编辑了文件:
值.yaml
# ...elided because left the same as default...

image:
repository: hello-world
tag: latest
pullPolicy: IfNotPresent

# ...elided because left the same as default...

service:
name: hello-world
type: NodePort # Chose this because MiniKube doesn't have LoadBalancer installed
externalPort: 30007
internalPort: 8008
port: 80
服务.yaml
# ...elided because left the same as default...

spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: {{ .Values.service.internalPort }}
nodePort: {{ .Values.service.externalPort }}
部署.yaml
# ...elided because left the same as default...

spec:

# ...elided because left the same as default...

containers:
ports:
- name: http
containerPort: {{ .Values.service.internalPort }}
protocol: TCP
我用 helm lint helloworld-chart 验证了这个“看起来”正确。和 helm template ./helloworld-chart HELM 和 MINIKUBE 命令
--------------------------
# Packaging my helm
helm package helloworld-chart

# Installing into Kuberneters (Minikube)
helm install helloworld helloworld-chart-0.1.0.tgz

# Getting an external IP
minikube service helloworld-helloworld-chart
当我这样做时,它会给我一个外部 IP,例如 http://172.23.13.145:30007并在浏览器中打开,但只是说无法访问该站点。我有什么不匹配的?
更新/更多信息
---------------------------------------
当我检查 pod 时,它位于 CrashLoopBackOff 中状态。但是,我在日志中什么也没看到: kubectl logs -f helloworld-helloworld-chart-6c886d885b-grfbc 日志:
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/
我不确定它为什么退出。

最佳答案

问题在于 Minikube 实际上是在查看公共(public) Docker 镜像存储库并找到一个也称为 hello-world 的东西。 .它没有找到我的 docker 镜像,因为 minikube 的“本地”不是主机 docker 的本地。 Minikube 有自己的 docker 在内部运行。

  • 您必须将您的图像添加到 minikube 的本地 repo:minikube cache add hello-world:latest .
  • 您需要更改拉取策略:imagePullPolicy: Never
  • 关于docker - 为什么我无法访问这个 helm chart 定义的应用程序? (在 Minikube 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63893393/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com