前言:
今天姐妹们对“nginxservice配置内容”大约比较着重,你们都想要剖析一些“nginxservice配置内容”的相关内容。那么小编在网上网罗了一些关于“nginxservice配置内容””的相关内容,希望小伙伴们能喜欢,同学们快快来学习一下吧!kubernetes服务service暴露的几种方式:
1.ClusterIP:默认值,k8s系统自动分配的虚拟IP,只在集群内部使用。
2.NodePort:将service通过指定的node上的端口暴露给外部,通过此方法,就可以在集群外部访问,通过NodeIP:NodePort的方式访问服务。
3.Load Balancer:使用外接负载均衡器完成到服务的负载分发,此模式需要外部云环境支持。
4.Ingress:可以实现类似负载均衡和反向代理的作用。
5.ExternalName:把集群外部的服务引入集团内部,直接使用。
service类型获取命令:
kubectl get svc --all-namespaces --no-headers | awk -F ' ' '{print $3}' | sort -n |uniq
①:ClusterIP:只在集群内部使用
②:ingress相当于service的service,可以将外部的请求通过不同规则的筛选后,转发到不同的service。ingress的作用是定义请求转发的规则,可以理解为配置模板或者配置文件。ingress-controller 是巨头实现反向代理和负载均衡的程序,通过对ingress中定义的规则进行解析,根据其规则来实现转发。用户可以选择不同的ingress-controller实现功能。
③:可以使用ingress来公开服务,ingress不是服务类型,但是它充当服务的入口点,它可以在同一个IP地址下公开多个服务。
ingress-controller的部署方式分成三种:
Deployment+Load Balancer模式的服务service
Deployment+Node Port模式的服务service
Daemonset + Host Network + node selector
kube-proxy支持三种工作模式:
1.userspace
2.iptables 可以通过iptables -nL查看规则
3.ipvs 可以通过ipvsadm -Ln查看
在使用service之前,需要使用deployment创建出pod,并且给pod设置好标签,比如设置app=nginx-pod的标签。
clusterIP是service的IP地址,如果不写,会默认生成一个。
Port:是服务service的端口。
TargetPort:是pod的端口。
NodePort: 指定绑定的node的端口。
查看service的信息:
kubectl describe svc ${svc_name} -n ${namespace}
这里有一个Endpoints的列表,就是当前service 可以负载到的服务入口。Endpoint是kubernetes中的一个资源对象,存储在etcd中,它用来记录一个service对应的所有pod的访问地址,它是根据service配置文件中Selector描述产生的。
一个service由一组pod组成,这些pod通过Endpoint暴露出来,Endpoints是实现实际服务的端点集合。service和pod之间是通过endpoints实现的,是通过pod的label和service的selector创建关联的。一般是app=xxx的标签。
NodePort的工作原理就是把service的一个端口映射到Node的一个端口上。然后就可以通过NodeIP:NodePort来访问service啦。通过浏览器去访问集群中任意一个节点IP的NodePort端口号,就可以访问pod了。缺点:会占用很多集群机器的端口,当集群服务变多的时候,这个缺点就特别明显。
Load Balancer和NodePort很相似,目的都是向外暴露一个端口。区别在于Load Balancer会在集群的外部再来做一个负载均衡设备,而这个设备需要外部环境的支持。外部设备发送到这个设备的请求,会被设备负载之后转发到集群中。缺点:每个service需要一个LB,浪费、麻烦,并且需要kubernetes集群之外的设备支持。
一般service是作为四层路由的负载,一般ingress作为七层路由的负载。
Ingress相当于一个七层负载均衡器,是kubernetes反向代理的一个抽象。它的工作原理类似于Nginx,可以理解成在Nginx里面建立很多映射规则,ingress-controller通过监听这些配置规则并且转化成nginx的反向代理配置,然后对外部提供服务。
Ingress:kubernetes中的一个对象,作用是定义请求如何转发到service的规则。
ingress-controller:具体实现反向代理和负载均衡的程序,对ingress的规则进行解析。根据配置的规则来实现请求的转发,实现方式有很多,比如Nginx、Haproxy等。
Ingress的工作原理如下:
①:用户编写ingress规则,说明哪个域名对应kubernetes集群中的哪个service。
②:Ingress控制器动态感知ingress服务规则的变化,并且生成一段对应的nginx反向代理配置。
③:Ingress控制器会将生成的nginx配置写入一个运行着的nginx服务中,并且动态更新。
④:到此为止,其实真正工作的就一个nginx了,内部配置了用户定义的请求转发规则。
鼓励的话语:嘚瑟到不能嘚瑟,是生命的终点;嘚瑟到别人不敢嘚瑟,是嘚瑟的境界!
标签: #nginxservice配置内容