当前位置: 首页 > 知识库问答 >
问题:

库伯内特斯的集装箱港口和targetport的区别?

冯枫涟
2023-03-14

集装箱港口与Kubernetes集装箱中的targetports有何不同?它们是否可以互换使用,如果是,为什么?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres-deployment
  labels:
    app: demo-voting-app
spec:
  replicas: 1
  selector:
    matchLabels:
      name: postgres-pod
      app: demo-voting-app
  template:
    metadata:
      name: postgres-pod
      labels:
        name: postgres-pod
        app: demo-voting-app

    spec:
      containers:
      - name: postgres
        image: postgres:9.4
        ports:
        - containerPort: 5432
        

据我所知,术语端口通常指的是服务(Kubernetes)上的端口。如果我不正确就纠正我。

共有1个答案

龙高超
2023-03-14

简而言之:targetportcontainerport基本上引用相同的端口(因此,如果使用两者,它们应该具有相同的值),但是它们在两个不同的上下文中使用,并且具有完全不同的目的。

它们不能互换使用,因为它们都是两个不同的kubernetes资源/对象规范的一部分:servicepod。虽然ContainerPort的用途可以被视为纯粹的信息性,但TargetPort服务所必需的,该服务公开一组Pods

必须了解,通过在pod/deployment规范中声明containerport的特定值,您不能让pod公开这个特定的端口。例如,如果您在containerport字段中声明您的nginxpod公开端口8080而不是默认的80,您仍然需要在容器中配置您的nginx服务器来侦听这个端口。

pod规范中声明containerport是可选的。即使没有它,您的服务也将根据它在targetport中声明的信息知道将请求定向到哪里。

最好记住,在service定义中不需要声明targetport。如果省略它,则默认为您为端口声明的值(这是服务本身的端口)。

 类似资料:
  • 我试图设置Kubernetes入口,将外部http流量路由到前端pod(路径/)和后端pod(路径/rest/*),但我总是得到400错误,而不是主nginx索引。html。 所以我在第https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer页尝试了谷歌库伯内特斯的例子,但我总是得到400个错误。有什么想法吗?

  • 我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他

  • 我正在尝试运行集成minikube与Jenkins。我得到以下异常: 配置如下Kubernetes url所示:192.168.99.101:8443 Kubernetes 1 希望你的协助。

  • 我怎样才能使用入口呢?我尝试使用NodePort和--Target etPort=1001,我在servicePort中添加了80在。 kubectl公开部署测试--Target-port=1001--type=NodePort 我得到了错误 找不到后端-404 我使用的是正确的方法还是需要遵循其他方法?

  • 是否可以在库伯内特斯中配置入口控制器,仅当传入请求的标头具有特定值时才将HTTP请求路由到服务? 实例 带有以下标头的HTTP请求 应该转发给服务1 带有以下标头的HTTP请求 应该被阻止 如果可能的话,你能详细一点或指向一些文档,因为我找不到这种用例的文档吗

  • 我的公司有一个伪造的CA证书。实例com和一张伪造地图的唱片。实例com连接到我们的负载平衡器的IP 负载平衡器正在将流量转发到我们的Kubernetes群集。 在集群中,我部署了nginx ingress helm图表,在30200处公开了https节点端口 我根据上述证书创建了一个名为test secret的k8s TLS机密。 我部署了一个带有服务“test”的应用程序,并安装了以下入口: