所以我已经使用库伯内特斯在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。
额外信息
因此,为了实现这一点,您可以这样做:
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