ingress是Kubernetes 暴露服务的一种方式。
Ingress由两部分组成:Ingress Controller 和 Ingress 服务。
Ingress Contronler 通过与 Kubernetes API 交互,动态的去感知集群中 Ingress 规则变化,然后读取它,按照自定义的规则(规则就是写明了哪个域名对应哪个service),生成一段 Nginx 配置,再写到 Nginx-ingress-control的 Pod 里,这个 Ingress Contronler 的pod里面运行着一个nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,然后 reload 一下 使用配置生效。以此来达到域名分配置及动态更新的问题。
ingress控制器有两种:nginx和haproxy 这里是以nginx为讲解。
1:查看ingress
kubectl get ing -n default
2: 编辑ingress,而后会自动重启。
kubectl edit ing XXXXXXXXX
3: 查看pod
kubectl get pods -n namespace
4: 查看log
kubectl logs -f pod_name -n namespace
5: 查看ingress详情
Kubectl get ing –o yaml
6: Ingress 配置详解
apiVersion/kind/metadata是必须的。
Ingress spec用来配置loadbalancer(负载均衡)或者proxy server(代理服务器).更重要的是它包含了一系列的规则来匹配请求.
每个http规则包含了如下的信息, 一个host(比如foo.bar.com, 默认为*), 路径的列表(比如/testpath)每个关联一个后端(test:80), 如果host和path都匹配上了 请求,将会通过loadbalancer转发到后端.
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test-ingress spec: rules:
- host:foo.bar.com http: paths: - path: /testpath backend: serviceName: test servicePort: 80