企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] # Ingress 资源 这个实现的是一种“HTTP负载均衡器” 其实就是一组路有规则的集合 ### 创建Ingress Ingress 资源是基于HTTP 虚拟主机或URL的转发规则 ##### 示例 ~~~ apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-ingress annotations: # 用于识别ingress控制器类型,在同一集群中有多个ingress控制器时很重要 kubernetes.io/ingress.class: "nginx" spec: rules: #定义当前ingress资源的转发规则列表,未被匹配到的将被转发到backend后端 - host: www.ilinux.io #不支持使用IP地址,也不支持跟随端口号,此字段留空表示通配所有主机名 http: paths: - backend: serviceName: myapp-svc servicePort: 80 ~~~ ### 暴露单个service ~~~ apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-ingress spec: backend: serviceName: my-svc servicePort: 80 ~~~ ### 基于URL路径的流量转发 对“www.ilinux.io/wap” 和 "www.ilinux.io/api"分别进行转发到“wap” 和 “api” 服务上 ~~~ apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test annotations: ingress.kubernetes.io/rewrite-target: / spec: rules: - host: www.ilinux.io http: paths: - path: /wap backend: serviceName: wap servicePort: 80 - path: /api backend: serviceName: api servicePort: 80 ~~~ ### 基于主机名称的虚拟主机 将“wap.ik8s.io” 和 “api.ik8s.io” 这两个主机名解析到external LB 的IP地址上去,分别转发到集群内部wap和api两个service上去 ~~~ apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test spec: rules: - host: api.ik8s.io http: paths: - backend: serviceName: api servicePort: 80 - host: wap.ik8s.io http: paths: - backend: serviceName: wap servicePort: 80 ~~~ ### 部署Ingress控制器(nginx) 创建环境 ~~~ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml ` ~~~ 因为部署在了裸金属服务器上,所以根据[官方文档](https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal)内容,执行以下命令 ~~~ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/ ~~~