- K8S 对外暴露服务的方式有三种:loadblancer、nodeport、ingress
- ingress 由 ingress controller 和 ingress 服务组成
- controller 主要有两种:nginx、traefik
nginx ingress controller 分为k8s社区、nginx公司两个版本
ingress的工作原理
ingress具体的工作原理如下:
ingress contronler通过与k8s的api进行交互,动态的去感知k8s集群中ingress服务规则的变化,然后读取它,并按照定义的ingress规则,转发到k8s集群中对应的service。
而这个ingress规则写明了哪个域名对应k8s集群中的哪个service,然后再根据ingress-controller中的nginx配置模板,生成一段对应的nginx配置。
然后再把该配置动态的写到ingress-controller的pod里,该ingress-controller的pod里面运行着一个nginx服务,控制器会把生成的nginx配置写入到nginx的配置文件中,然后reload一下,使其配置生效。以此来达到域名分配置及动态更新的效果。
Ingress安装
1. 下载kubernetes nginx的yaml文件
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.18.0/deploy/mandatory.yaml
2. 创建 Ingress - Nginx
kubectl apply -f ./mandatory.yaml
kubectl get pods -n ingress-nginx
kubectl get service -n ingress-nginx
3. 测试
curl http://10.98.51.155 //ip来自上一步
如果返回404则表示安装成功