ingress

configmap:

存储数据

data:

key: value

挂载的方式,把配置信息传给容器。

deployment

容器的探针

资源限制

configmap

存储卷

service

ingress

k8s的对外服务,ingress

service作用体现在两个方面:

1、集群内部: 不断跟踪pod的变化,更新endpoint中的pod对象,基于pod的IP地址不断变化的一种服务发现机制

2、集群外部:类似负载均衡器,把流量IP+端口, 涉及转发url(http  https),把请求转发到pod当中

service:

NodePort:容器端口 --- service端口 --- NodePort。设定了nodeport,每个节点都会有一个端口被打开,30000-32767

IP+端口:节点IP+30000-32767,实现负载均衡

loadbalancer:云平台上的一种service服务,云平台提供负载均衡的IP地址

extrenal:域名映射。

ingress基于域名进行映射,把url(http https)请求转发到service,再由service把请求转发到每一个pod

ingress只要一个或者是少量的公网IP或者LB,可以把多个http请求露到外网,七层反向代理

service的service。是一组基于域名和url路径,把一个或者多个请求转发到service的规则

先是 七层代理-------四层代理 ------- pod

ingress        nginx       service

ingress的组成:

ingress是一个api对象,通过yaml文件来进行配置。ingress的作用是定义请求如何转发到service的规则。配置模板

ingress通过http和https暴露集群内部的service,给service提供一个外部的url,负载均衡,ssl/tls (https)的能力,实现一个基于域名的负载均衡

ingress-controller:具体的实现反向代理和负载均衡的程序,以及对ingress定义的规则进行解析,根据ingress配置规则进行请求的转发

ingress-controller不是K8S自带的组件功能,ingress-controller是一个统称

nginx-ingress-controller和traefik 都是ingress-controller,开源

ingress资源的定义项:

1、定义外部流量的路由规则

2、定义服务的暴露方式、主机名、访问路径和其他的选项

3、负载均衡(ingress-controller)

ingress-controller的运行方式是pod方式运行在集群当中

nginx-ingress-controller:

ingress暴露服务的方式:

1、deployment+LoadBalancer

ingress部署在公有云。ingress配置文件里面会有一个type,type: LoadBalancer

公有云平台会为个loadbalancer的service创建一个负载均衡器。绑定一个公网地址

通过域名指向这个公网地址就可以实现集群对外暴露

2、DaemonSet+hostnetwork+nodeSelector

DaemonSet:在每个节点都会创建一个pod

hostnetwork:pod共享节点主机的网络命名空间。容器内直接使用节点主机的ip+端口。pod中的容器可以直接访问主机上的网络资源

ingress_第1张图片

netstat -antp | grep nginx

8181端口,nginx-controller默认配置的一个bachend。反向代理的端口。

tcp

0 0.0.0,0:443

所有请求的当中,只要是不符合ingress配置的请求会转发到8181.相当于一个error的页面

3、deployment+NodePort

ingress_第2张图片

wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml

ingress_第3张图片

ingress_第4张图片

nginx-ingress-controller和traefik

都是开源ingress--controller

deployment+loadbalancer:需要云台提供一个负载均衡的公网地址,公有云上做(money)

daemonset+hostnetwork+nodeselector:指定节点部署controller,缺点就是和宿主机共享网络,只能是一个controll的pod

hostnetwork:会和宿主机共享网络

deployment+NodePort:最常见,最常用,也是最简单的方式

集中一个nodeport端口,所有的ingress的请求都会转发到nodeport,然后service把流量转到pod

个ingress的nodeport,可以实现访问多个虚拟主机

和nginx一样的。

80

www.test1.com

www.test2.com

你可能感兴趣的:(kubernetes,容器)