提问者:小点点

在库伯内特斯的集群外使用nginx-入口暴露TCP端口


所以我已经使用库伯内特斯在Google云上设置了我的应用程序。我有一个Pod,我想从需要TCP请求的集群中公开它。

我通过ingress nginx了解到这是可能的,并对此进行了研究。如本文所述,可以通过如下方式设置configMap来完成:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-configmap-example
data:
  9000: "default/my-service-name:7051

,但它的完整用法没有明确描述,也没有在文档中找到完整的示例。

我已经安装了《安装指南》中提到的ingress nginx,但我不确定下一步将如何暴露我的Pod。

额外信息

  • Pod中要从集群中公开的端口是7051
  • 我有一个NodePort服务,它以我的Pod端口为目标,该端口可用于暴露入口

共2个答案

匿名用户

因此,为了实现这一点,您可以这样做:

  1. 首先创建添加到帖子中的configMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-configmap-example
data:
  9000: "default/my-service-name:7051

然后通过将此标志添加到容器参数来编辑nginx入口控制器部署,如下所示:

...
containers:
- name: nginx-ingress-controller
  image: "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.1"
  imagePullPolicy: "IfNotPresent"
  args:
    - /nginx-ingress-controller
    - --default-backend-service=nginx-ingress/nginx-ingress-default-backend
    - --election-id=ingress-controller-leader
    - --ingress-class=nginx
    - --configmap=nginx-ingress/nginx-ingress-controller
    - --tcp-services-configmap=default/tcp-configmap-example
    ...

通过向LoadBalancer添加端口来编辑LoadBalancer服务

...
ports:
- name: http
  port: 80
  protocol: TCP
  targetPort: http
- name: https
  port: 443
  protocol: TCP
  targetPort: https
- name: some-service-port
  port: 7051
  protocol: TCP

希望有帮助!

匿名用户

如果使用helm安装,可以通过设置值来公开tcp端口。

# add helm repo
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

驾驶仪显示值ingress nginx/ingress nginx将显示值。yaml文件供参考,有两个用于公开端口的字典:tcp和udp:

# TCP service key:value pairs
# Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md
##
tcp: {}
#  8080: "default/example-tcp-svc:9000"

# UDP service key:value pairs
# Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md
##
udp: {}
#  53: "kube-system/kube-dns:53"

要从命令行设置值,请执行以下操作:

# set `tcp` dictionary in values (other `helm install` options omitted, only left options regarding to exposing tcp ports)
helm install ingress-nginx ingress-nginx/ingress-nginx --set tcp.12345=some-namespace/some-service:80