Ingress配置轉發端口本質
Ingress配置轉發端口本質,還是利用service nodePort能力,通過暴露ingress的本地端口來轉發。
Ingress默認不支持TCP or UDP services。因此Ingress controller使用--tcp-services-configmap和--udp-services-configmap這兩個配置達到轉發端口的目的。
(文中采用阿里云kubernetes v1.16.9)
檢查一下這兩個配置是否開啟:
kubectl get deployment Nginx-ingress-controller -n kube-system -o yaml
如圖所示,已經開啟了,同時表明了,后面需要修改對應 tcp-services configmap
創建hello Tomcat
創建一個 namespaces,這個namespaces跟后面的 deployment和service,還有tcp-services configmap都有關系。
kubectl create ns dev
部署一個tomat應用kubectl create -f deployment-hello.yaml
# cat deployment-hello.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello
namespaces: dev
spec:
replicas: 4
template:
metadata:
labels:
run: hello
spec:
containers:
- name: hello
image: tomcat:8
imagePullPolicy: Always
ports:
- name: http
containerPort: 8080
創建一個service,kubectl create -f service-hello.yaml
#cat service-hello.yaml
apiVersion: v1
kind: Service
metadata:
name: hello
labels:
name: hello
namespaces: dev
spec:
clusterIP: "None"
ports:
- port: 8080
targetPort: 8080
protocol: TCP
selector:
run: hello
ingress-nginx-lb service
修改 namespace 為 kube-system 下的 ingress-nginx-lb service:
注意:
port可以改成其他端口,比如18080
targetPort要跟后面的tcp-services configmap配置保持一致,都是8080
kubectl edit svc/nginx-ingress-lb -n kube-system
- name: hello
port: 18080
protocol: TCP
targetPort: 8080
再去看這個nginx-ingress-lb,發現回自動給你添加一個nodePort: 32031。
看看是不是配置成功kubectl get svc -n kube-system
修改 tcp-services configmap
修改 namespace kube-system 下的 tcp-service configmap,添加配置:
kubectl edit configmap/tcp-services -n kube-system
data:
8080: dev/hello:8080
在配置data之前,你需要一個deploy+service來
其中 configmap data 的格式為: <namespace/service name>:<service port>:[PROXY]:[PROXY]
通過阿里云提供的 EXTERNAL-IP,也就是 對應阿里云負載均衡的外網IP,即可訪問:
http://EXTERNAL-IP:18080
同時檢查一下阿里云對應的負載均衡,發現對應的端口已經自動監聽了,不用再手工在頁面上處理。
參考
- ingress-nginx Exposing TCP and UDP https://blog.csdn.net/hxpJAVA1/article/details/86756970
- k8s ingress配置轉發tcp流量 https://blog.csdn.net/w851685279/article/details/115911686
- nginx ingress controller 之 TCP service https://zhuanlan.zhihu.com/p/102857596
- kubernetes發布tomcat服務,通過deployment,service布署 https://www.cnblogs.com/pu20065226/p/10644272.html