原理及使用"/>
kubernetes ingress原理及使用
概述
k8s提供NodePort类型的Service可以用于向集群外暴露服务,但是其具备一定局限性,如端口维护困难(一个端口只能供一个服务使用且需要提前规划),只能提供4层负载。
一个解决思路是使用具备7层路由功能的代理比如nginx作为所有外部流量的唯一入口,再由代理转发到不同的后台服务。以nginx为例,在集群部署一个nginx并以NodePort类型Service暴露给外部,然后通过添加nginx配置的形式把流量路由到不同后台服务的Service。ingress就是采用类似机制的一套解决方案。其中涉及几个概念:
ingress资源: 用来描述路由规则的资源对象
ingress-controller: ingress控制器,本质是一个代理容器(如nginx),并且在此基础上实现了k8s的控制器机制,监听ingress资源并反馈到代理配置中。以ingress-nginx-controller,它其实是一个具备控制器功能的nginx,动态监听ingress并将其转化为nginx配置。
部署(以ingress-nginx为例)
环境要求kubeVersion: >=1.19.0-0
操作目录 /root/lsd/ingress-nginx
部署ingress-nginx-controller
参考k8s ingress-nginx deploy
helm repo add ingress-nginx pull ingress-nginx/ingress-nginx
#pull不下来,直接手动下载
wget .0.10/ingress-nginx-4.0.10.tgztar zxvf ingress-nginx-4.0.10.tgz
cd ingress-nginxvi values.yaml 修改相关镜像参数registry: registry.hub.dockerimage: liangjw/ingress-nginx-controller#注释掉digest# digest: sha256:f766669fdcf3dc26347ed273a55e754b427eb4411ee075a53f30718b4499076a...registry: registry.hub.dockerimage: liangjw/kube-webhook-certgen#注释掉digestdigest: sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660registry: registry.hub.dockerimage: ibmcom/defaultbackend-amd64# helm 安装
helm delete ingress-nginx -n ingress-nginx
helm install ingress-nginx ./ --namespace ingress-nginx --create-namespace
创建ingress资源
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: prometheus-ingressnamespace: monitoring
spec:ingressClassName: nginx # ingress-controller部署成功后会产生一个默认class:nginxrules:- host: prometheus-k8s.monitoring # 用来访问的域名http:paths:- path: "/" # 路径转发规则pathType: Prefixbackend: # 后台服务,转发到prometheus的9090端口service:
更多推荐
kubernetes ingress原理及使用
发布评论