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中的容器可以直接访问主机上的网络资源
netstat -antp |?grep nginx
8181端口,nginx-controller默认配置的一个bachend。反向代理的端口。
tcp
0 0.0.0,0:443
所有请求的当中,只要是不符合ingress配置的请求会转发到8181.相当于一个error的页面
3、deployment+NodePort
wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml
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