为了对外发布仓内的应用,k8支持两种负载均衡机制
1,一种是服务,用于实现四层TCP负载均衡
服务主要实现集群内部通信、以及基于四层的内外通信(如端口)
2,另一种是入口,用户实现七层HTTP负载均衡
进入主要实现基于七层的内外通信(如URL)
入口仅仅是一组路由规则的集合,它需要借助进入控制器才能发挥作用
进入控制器不受controller-manager管理,它作为一个附件直接运行在k8集群上
进入控制器本身也是以豆荚形式运行,它与被代理的豆荚运行在同一个网络
和服务不同的是,要使用入口,必须先创建ingress-controller这个吊舱和基于该吊舱的svc
对于小规模的应用我们使用NodePort或许能够满足我们的需求,但是当你的应用越来越多的时候,你就会发现对于NodePort的管理就非常麻烦了,这个时候使用入口就非常方便的了,可以避免管理大量的端口。
igress类型
1,单服务资源型
2,基于URL路径进行转发
3,基于虚拟主机进行转发
4, TLS类型
进入控制器可以由如下反向代理程序实现:
1, haproxy
2, nginx
3,特使
4, traefik
5, Vulcand
<>强创建基于treafik的入口强>
1,创建rbac认证
<代码> apiVersion: v1 :ServiceAccount 元数据: 名称:traefik-ingress-controller 名称空间:kube-system --- :ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 元数据: 名称:traefik-ingress-controller 规则: - apiGroups: ——“” 资源: ——服务 ——端点 ——秘密 动词: ——得到 ——列表 - - - - - -看 - apiGroups: ——扩展 资源: - - - - - -进入 动词: ——得到 ——列表 - - - - - -看 --- :ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 元数据: 名称:traefik-ingress-controller roleRef: apiGroup: rbac.authorization.k8s.io :ClusterRole 名称:traefik-ingress-controller 主题: 类型:ServiceAccount 名称:traefik-ingress-controller 名称空间:kube-system 代码>
美元kubectl创建- f rbac。yaml
serviceaccount“traefik-ingress-controller"创建
clusterrole.rbac.authorization.k8s。io“traefik-ingress-controller"创建
clusterrolebinding.rbac.authorization.k8s。io“traefik-ingress-controller"创建
2,创建基于treafik的入口控制器pod及svc
将该控制器舱部署在主人上
美元码头工人拉traefik vim traefik.yaml美元
<代码>:部署/v1beta1 apiVersion:扩展 元数据: 名称:traefik-ingress-controller 名称空间:kube-system 标签: k8s-app: traefik-ingress-lb 规范: 副本:1 选择器: matchLabels: k8s-app: traefik-ingress-lb 模板: 元数据: 标签: k8s-app: traefik-ingress-lb 名称:traefik-ingress-lb 规范: serviceAccountName: traefik-ingress-controller terminationGracePeriodSeconds: 60 纵容: 接线员:“存在”#允许污点 nodeSelector: kubernetes。io/主机名:大师#部署在掌握上 容器: ——图片:traefik 名称:traefik-ingress-lb 港口: ——名称:http containerPort: 80 hostPort: 80 #外网访问时不用使用nodePort端口,直接使用域名即可 ——名称:管理员 containerPort: 8080 参数: - - - - api ————kubernetes ————logLevel=INFO --- 类型:服务 apiVersion: v1 元数据: 名称:traefik-ingress-service 名称空间:kube-system 规范: 选择器: k8s-app: traefik-ingress-lb 港口: ——协议:TCP 端口:80 名称:网络 ——协议:TCP 端口:8080 名称:管理员 类型:NodePort 代码>
因为traefik容器中有两个端口,80年和8080年(管理端口),所以其对应的服务中也需要两个端口80和8080。
美元kubectl应用- f traefik.yaml
部署。扩展“traefik-ingress-controller"创建
服务“traefik-ingress-service"创建
kubectl得到美元svc - n kube-system
traefik-ingress-service NodePort 10.100.222.78 & lt; none>80:31657/TCP, 8080:31572/TCP 79 d
通过svc访问traefik的管理界面
http://192.168.1.243:31572
3,为上述入口控制器及其svc本身(8080)创建进入实例
<代码> apiVersion:扩展/v1beta1 :入口 元数据: 名称:traefik-web-ui 名称空间:kube-system 注释: kubernetes.io/入口。类:traefik 规范: 规则: (主持人:traefik.example.com http: 道路: 后端: 名:traefik-ingress-service servicePort: 8080k8集群中的入口——基于traefik