【问题标题】:what does --port option do in a k8s pod--port 选项在 k8s pod 中做什么
【发布时间】:2023-02-20 19:36:36
【问题描述】:

如果我像这样强制创建一个 pod,--port 选项有什么作用?

kubectl run mypod --image=nginx --port 9090

默认情况下,nginx 应用程序将监听端口 80。为什么我们需要这个选项? 文件说

--port='':这个容器暴露的端口。

如果它是使用kubectl expose pod mypod --port 9090 公开的,它将在端口 9090 和目标端口 9090 上创建服务。但在上述情况下,它既不创建服务

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    ...nginx application by default is going to listen on port 80. Why do we need this option?

    如果您在规范中编写,--port 80 的使用意义相同:

    ...
    containers:
    - name: ...
      image: nginx
      ports:
      - containerPort: 80
    ...
    

    它不做任何端口映射,但通知此容器将公开端口 80。

    ...in the above case it neither creates a service

    您可以将 --expose 添加到 kubectl run ,这将创建一个服务,在这种情况下,如果您在规范中编写是相同的:

    kind: Service
    ...
    spec:
      ports:
      - port: 80
        targetPort: 80
    ...
    

    注意你可以仅有的--port指定一个端口,即使写多个--port,也只有最后一个生效。

    【讨论】:

      【解决方案2】:

      当已经为 pod 提供端口选项时,

      1. expose 可以在没有 --port 选项的情况下运行,它将使用为 pod 定义的内容
      2. expose 可以使用 --port 选项运行,它将覆盖 pod 中给出的选项

        当 --port 选项既没有在 pod 中定义也没有在 expose 中定义时,它将是一个错误。

        https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#ports

      【讨论】:

      • 我认为这不应该是该帖子的答案,相反,您可以将此注释添加为附加信息的评论。
      猜你喜欢
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      相关资源
      最近更新 更多