【问题标题】:Why do we need a port/containerPort in a Kuberntes deployment/container definition?为什么我们在 Kubernetes 部署/容器定义中需要一个端口/容器端口?
【发布时间】:2019-12-03 10:39:52
【问题描述】:

当我定义例如Kubernetes 中的部署有一个包含容器列表的部分,每个容器都包含一个端口数组,例如:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80

现在文档here 明确表示它不会影响连接:

要从容器公开的端口列表。在这里暴露一个端口会给 系统有关网络连接的附加信息 容器使用,但主要是信息性的。未指定端口 这里不会阻止该端口被暴露。任何端口 侦听容器内的默认“0.0.0.0”地址将是 可从网络访问。无法更新。

现在看来它并没有真正影响任何东西,只是提供信息,但这究竟意味着什么,在哪里使用?

我发现它的一种用途是,如果端口定义了一个名称,则可以通过该名称从服务中引用它。

是这个规范还是有其他用途?

【问题讨论】:

  • 就是这样。用于文档。

标签: kubernetes kubernetes-service kubernetes-deployment kubernetes-container kubernetes-networking


【解决方案1】:

当您引用文档时,

要从容器公开的端口列表。在此处公开端口可为系统提供有关容器使用的网络连接的附加信息,但主要是信息性的。此处不指定端口不会阻止该端口被暴露。任何侦听容器内默认“0.0.0.0”地址的端口都可以从网络访问。无法更新。

定义containerPorts 的目的纯粹是为了记录。它仅供其他开发人员用于了解容器侦听的端口。 Kubernetes 借鉴了 docker 的这个想法,它对 EXPOSE 命令的作用与提到的 here 相同。

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 2020-01-30
    • 1970-01-01
    • 2020-12-06
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2022-01-13
    相关资源
    最近更新 更多