Kubernetes之Ingress服务
我们一起学习 Kubernetes 的 Ingress 服务发现吧!
Kubernetes 中为了实现服务实例间的负载均衡和不同服务间的服务发现,创造了 Service 对象,同时又为从集群外部访问集群创建了 Ingress 对象。


1. 原理介绍
介绍关于 K8S 中 Ingress 的基本知识和要点!
我们都知道传统的 SVC 只支持四层上面的代码,而对于七层上的代码而无能为力。比如:我们使用 K8S 集群对外提供 HTTPS 的服务,为了方便和便捷,我们需要在对外的 Nginx 服务上面配置 SSL 加密,但是将请求发送给后端服务的时候,进行证书卸载的操作,后续都是用 HTTP 的协议进行处理。而面对此问题,K8S 中给出了使用 Ingress (K8S在1.11版本中推出了)来进行处理。


Kubernetes Workstation +---------------------------------------------------+ +------------------+ | | | | | +-----------+ apiserver +------------+ | | +------------+ | | | | proxy | | | | | | | | | apiserver | | ingress | | | | ingress | | | | | | controller | | | | controller | | | | | | | | | | | | | | | | | | | | | | | | | service account/ | | | | | | | | | | kubeconfig | | | | | | | | | +<-------------------+ | | | | | | | | | | | | | | | | | +------+----+ kubeconfig +------+-----+ | | +------+-----+ | | |<--------------------------------------------------------| | | | | | +---------------------------------------------------+ +------------------+
2. 服务安装
介绍关于 Ingress 服务的安装方式!
安装 Ingress-Nginx 首先需要在官网下载对应的安装 yaml 文件,如果你也是 Mac 用户的话,可以使用该 下载文件 进行安装。 安装的过程中,根据部署文件其会自行定义一个名为 ingress-nginx 的名称空间,由来保存其对应的 Pod 和内容。而 Deployments 中会自动部署一个名为 nginx-ingress-controller 的服务,用于管理和控制 Ingress 服务。当然,还有对应 Deployment 的 ingress-nginx 的 SVC 也会一同创建的。同时,还有相关的角色、ConfigMap 等等。
# 直接运行即可安装 $ kubectl apply -f deploy.yaml
可以看到其底层的暴露类型就是 NodePort 模式,会在每个 Node 节点上面开放的 80 端口和 443 端口映射的地址。
# 查看对应SVC服务 $ kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx NodePort 10.97.243.16180:31345/TCP,443:31802/TCP 22s 1. 查看对应POD服务 $ kubectl get pod -n ingress-nginx NAME READY STATUS RESTARTS AGE nginx-ingress-controller-761212d12f-11864 1/1 Running 0 54s
3. 配置 HTTP 代理
配置关于 Ingress 服务的 HTTP 代理访问!
- Deployment/Service/Ingress
- 我们这里可以使用 kubectl apply -f ingress-http.yml 来直接部署服务。