所以我已经使用Kubernetes在Google云上设置了我的应用程序。我有一个Pod,我想将其暴露在期望TCP请求的群集之外。
我开始知道可以通过ingress-nginx进行研究。如docs here中所述,可以通过设置如下的configMap来完成:
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-configmap-example
data:
9000: "default/my-service-name:7051
,但是它的完整用法没有明确描述,我也无法在文档中找到完整的示例。
我已经按照Installation Guide中的说明安装了ingress-nginx,但是我不确定下一步要暴露我的Pod。
其他信息
7051
答案 0 :(得分:0)
在Google Cloud Platform内部,您可以使用type: LoadBalancer
以便在
簇。您可以在Exposing Applications using Services这里查看示例。
这是一个简单的例子:
$ kubectl run hello --image=test/hello-world
deployment "hello" created
$ kubectl expose deployment hello --port=8080 --type=LoadBalancer
service "hello" exposed
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello LoadBalancer 10.11.251.34 35.192.25.112 8080:33107/TCP 2m
$ curl 35.192.25.112:8080
<html><head><title>hello world</title></head><body>hello world!</body></html>
您还可以按照Kubernetes文档Exposing an External IP Address to Access an Application in a Cluster
中的说明进行操作。答案 1 :(得分:0)
因此,要实现此目的,您可以执行以下操作:
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-configmap-example
data:
9000: "default/my-service-name:7051
然后通过将此标志添加到容器args来编辑您的nginx-ingress-controller部署,如下所示:
...
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
希望有帮助!