摘要:kubernetes使用helm安装ingress controller,需要修改values.yaml文件。
kubernetes使用helm安装ingress controller,需要修改values.yaml文件。
1.把hostNetwork从false改成true。
2.把dnsPolicy改成ClusterFirstWithHostNet
3.把kind类型改成DaemonSet
4.关闭镜像的digest。
5.设置ingressClassResource.default=true
通过nginx实现ingress的接口,类型默认为nginx。
6.设置service服务的类型type为NodePort
一般ingress的控制器类型分成:
nginx-controller
ingress-istio-controller
apisix-ingress-controller
traefik
使用ingress.class指定控制器类型,默认值是:
1.nginx
2.istio
3.apisix
4.traefik
helm部署ingress的方法:
helm install ingress-nginx -n ingress . -f values.yaml
查看pod:
kubectl get pod -n ingress
七层负载均衡的访问路径:
最外层是客户端,然后客户端访问一个服务,这个服务是ingress实现的,作用是把30080和30443这种外网端口转发到内部的80和443端口,接着为了解决pod挂掉后IP地址变化的情况,添加一层service。由这个service后端连接两个真实服务器的后端pod来提供web服务。
ingress 控制器,比如nginx controller作为独立组件部署在集群内部,其ClusterIP是服务service的虚拟IP地址,用于集群内部流量转发。当外部流量通过ingress规则转发至nginx controller时,请求首先到达集群内部,再由nginx controller根据规则处理并且转发到后端服务。
服务service跟后端的pod变化是实时的,如果后端pod地址变了,就会把新的地址添加到负载均衡中里。
相对于nginx来说,减少了重载,增加了它的稳定性。
kubernetes创建四层负载均衡服务的命令:
kubectl create service $service_type $namespace --tcp=port:targetPort
七层负载均衡服务通过ingress和ingress controller 实现了配置的自动生成,允许动态修改配置。
ingress是描述七层负载均衡的,nginx去通过api server监听ingress对象的变化,监听到变化后,去修改本地的配置文件并且触发重启,自动去生成配置文件。
用户可以直接通过接口调用api server去执行kubectl create ingress $ingress_name --rule=host/path=service:port[,tls[=secret]] 之后,这个配置文件就可以在nginx controller中自动生成,并且应用了。
这就是ingress实现七层负载均衡的逻辑。
负载均衡控制器类型:
nginx-controller
traefik
云原生:专门为云开发出来的一个应用程序。
使用nginx-controller的ingress总量是最多的。
nginx在尽可能保障它自己尽可能的少次数的重启。nginx它不像是traefik,traefik是一个新的web服务器。
traefik它自动监听配置文件,如果配置文件发生变化之后,它会自动应用。
nginx不行,nginx修改配置之后,必须重载,也就是需要重新加载配置文件,并且重启nginx相关进程,重载就会涉及到一些用户请求的丢失,重载是一个有代价的过程。
为了减少重载这种代价,就是需要使用nginx controller这种方式去自动更新配置。
央视大裤衩
鼓励的话语:深处沟壑,依然可以仰望星空!
来源:游戏小宝