我已经使用 Kubernetes 本地设置部署了我的 Ni-Fi 应用程序。现在,我用来启动 docker 容器的映像来自 docker 私有注册表,当我使用 Daemon 集服务部署时可以看到它,因为我的要求是每个节点只启动一个 Pod,并且如果它被杀死/终止,我不想复制我的 pod。话虽如此,我想在某些端口上监听这个应用程序...所以我的问题如下 1) 如何为在单个 pod 上的多个节点上运行的应用程序打开多个端口。2) 我有一些配置文件,它们在一个 shell 脚本中,其中定义了环境变量..如何将此脚本注入到我已经运行的应用程序中。
答案1
欢迎来到 StackExchange @Ravikumar
广告 1 - 如何为在单个 pod 上的多个节点上运行的应用程序打开多个端口
- 您需要在 Pod 规范中定义在容器中打开哪些端口。例如:
apiVersion: v1 kind: Pod metadata: labels: app: example-app name: example-app namespace: default spec: containers: name: multi-port image: perl command: - perl - -Mbignum=bpi - -wle - print bpi(2000) ports: - containerPort: 8080 - containerPort: 8081
- 使用以下方式向外部公开您的工作负载服务例如
apiVersion: v1 kind: Service metadata: name: my-app-svc spec: selector: app: example-app ports: - name: http protocol: TCP port: 8080 targetPort: 8080 - name: monitoring protocol: TCP port: 8081 targetPort: 8081
从现在开始,您可以使用服务 DNS 名称 + 端口引用分布在不同节点(Pod 副本)上的应用程序:例如 my-app-svc:8080 或 my-app-svc:8081。请记住,这仅在集群内有效,如果您想在 Kubernetes 集群之外公开您的应用程序,请检查其他选项,例如 LoadBalancer 或 NodePort 的 ServiceType,如官方文档中所述这里。
补充 2 - 定义 Pod 容器的环境变量,请参阅官方文档这里。