【发布时间】:2021-12-18 16:25:00
【问题描述】:
在使用 helm 图表(由 helm create <name> 生成)并在 values.yaml 中指定一个 docker 镜像时,例如镜像“kubernetesui/dashboard:v2.4.0”,其中暴露的端口写为EXPOSE 8443 9090 我发现很难知道如何在实际的 helm 图表文件中正确指定这些端口,并且想知道是否有人可以进一步解释该主题。
据我了解,EXPOSE 8443 9090 表示 hostPort "8443" 映射到 containerPort "9090"。在这种情况下,service.yaml 似乎应该以类似于以下方式指定端口:
spec:
type: {{ .Values.service.type }}
ports:
- port: 8443
targetPort: 9090
但是,deployment.yaml 文件只有“containerPort”字段,没有 8443 端口的端口字段(如下所示)我是否应该在 deployment.yaml 中添加一些字段以包含端口 8443?
spec:
template:
spec:
containers:
- name: {{ .Chart.Name }}
ports:
- name: http
containerPort: 9090
protocol: TCP
截至目前,当我尝试安装 helm 图表时,它给了我一条错误消息:"Container image "kubernetesui/dashboard:v2.4.0" already present on machine",我听说这意味着 service.yaml 中的端口未配置为与 docker 映像公开的端口相匹配。我已经使用更简单的 docker 映像对此进行了测试,该映像仅公开了一个端口,并且只是在各处添加了该端口,并且错误消息消失了,所以这似乎是真的,但我仍然对如何使用两个公开的端口进行操作感到困惑。
非常感谢您的帮助,如果您对此有任何经验并愿意分享,请提前感谢您。
【问题讨论】:
标签: docker kubernetes kubernetes-helm docker-image