玖叶教程网

前端编程开发入门

kubernetes ingress配置转发端口(kubernetes ingress controller)

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


同时检查一下阿里云对应的负载均衡,发现对应的端口已经自动监听了,不用再手工在页面上处理。




参考

  1. ingress-nginx Exposing TCP and UDP https://blog.csdn.net/hxpjava1/article/details/86756970
  2. k8s ingress配置转发tcp流量 https://blog.csdn.net/w851685279/article/details/115911686
  3. nginx ingress controller 之 TCP service https://zhuanlan.zhihu.com/p/102857596
  4. kubernetes发布tomcat服务,通过deployment,service布署 https://www.cnblogs.com/pu20065226/p/10644272.html

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言