【问题标题】:Kubernetes pod access without mentioning container portKubernetes pod 访问不提容器端口
【发布时间】:2019-01-28 08:26:54
【问题描述】:

我制作了一个客户 pod(包括在端口 8080 上运行 Spring Boot 应用程序的映像)。

** 在 yaml 文件中,我没有明确写容器端口号,例如 spec:containers:port:8080。

kind: Pod  
apiVersion: v1
metadata:
name: customer-pod
spec:
  containers:
    - name: customer-pod
      image: docker.temp.com/customer-service:8

我可以用“$ kubectl get pods commands -o wide”来检查它

=============================================

NAME READY STATUS RESTARTS AGE IP 节点

customer-pod 1/1 Running 0 43m 10.43.1.17 默认

=============================================

之后,

$ curl 10.43.1.17:8080
{"timestamp":"2018-08-22T05:58:58.938+0000","status":404,"error":"Not Found","message":"No message available","path":"/ "}

我想知道如何在不打开端口的情况下访问客户端口(8080)。
如果是 Docker,我知道我应该在运行命令中明确写一个端口来连接它。
在 Kubernetes 中,端口是自动打开的吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    您没有在 Kubernetes 中打开端口。默认情况下,所有 pod 都可以相互通信,在大多数设置中,也允许节点到端口。提到 Docker,您的意思是端口映射 -p 选项,这也不是端口开放(如果您使用容器 IP,即使未映射到容器外部,您也可以访问 docker 容器端口)。

    如果您想限制跨 pod 网络,您需要使用 Network Policies 和能够强制执行它们的网络解决方案。

    【讨论】:

    • 那么可能在部署文件中指定这个的原因是什么?如果反正Ports都是打开的,为什么文件里面的这个指令可以设置?
    • 因为您没有打开,但您正在定义它们,以便其他元素知道如何引用它们,即。按名字。其他基础设施可以期望定义端口并遵循特定的模板(视频:Istio)等等。
    • 容器ip是指pod ip吗?我认为单个容器在 k8s 中没有 ip
    猜你喜欢
    • 1970-01-01
    • 2019-12-31
    • 2022-01-15
    • 2015-08-21
    • 2021-08-29
    • 1970-01-01
    • 2019-05-02
    • 2020-04-12
    相关资源
    最近更新 更多