【问题标题】:Kubernetes - Best strategy for pods with same port?Kubernetes - 具有相同端口的 pod 的最佳策略?
【发布时间】:2018-04-12 12:30:40
【问题描述】:

我有一个带有 2 个从站的 Kubernetes 集群。我有 4 个 docker 容器,它们都使用一个 tomcat 映像并公开端口 8080 和 8443。当我现在将每个容器放入一个单独的 pod 时,我遇到了端口问题,因为我只有 2 个工作节点。 什么是我的方案的最佳策略?

当前错误消息是:1 PodToleratesNodeTaints,2 PodFitsHostPorts。

将所有容器放入一个 pod?这是我当前的设置(4 次)

kind: Deployment
apiVersion: apps/v1beta2
metadata:
  name: myApp1
  namespace: appNS
  labels:
    app: myApp1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myApp1
  template:
    metadata:
      labels:
        app: myApp1
    spec:
      dnsPolicy: ClusterFirstWithHostNet
      hostNetwork: true
      containers:
      - image: myregistry:5000/myApp1:v1
        name: myApp1
    ports:
        - name: http-port
          containerPort: 8080
        - name: https-port
          containerPort: 8443
        readinessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
          failureThreshold: 6
---
kind: Service
apiVersion: v1
metadata:
  name: myApp1-srv
  namespace: appNS
  labels:
    version: "v1"
    app: "myApp1"
spec:
  type: NodePort
  selector:
    app: "myApp1"
  ports:
  - protocol: TCP
    name: http-port
    port: 8080
  - protocol: TCP
    name: https-port
    port: 8443

【问题讨论】:

  • 服务暴露的端口可以不同,从而重新映射您的内部端口。这种端口风格的方法也有点针对 VM,因此您可能必须更改您的应用程序,或使用具有 IP 地址重新映射的负载均衡器才能使您的应用程序在此设置中工作。

标签: kubernetes


【解决方案1】:

除非绝对必要,否则不应使用 hostNetwork。如果没有主机网络,您可以让多个 pod 监听同一个端口号,因为每个 pod 都有自己的专用网络命名空间。

【讨论】:

  • 啊好吧,这就是为什么,好吧。我认为我需要它,因为我的 pod 访问集群外部的数据库。我试试看能不能去掉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-26
  • 2020-01-01
  • 2019-04-13
  • 2022-11-14
  • 2020-06-16
  • 2014-05-26
相关资源
最近更新 更多