云计算百科
云计算领域专业知识百科平台

K8S的ingress

一。ingress的介绍

对于NodePort和LoadBalance,这两种方法,都有缺点:

1.NodePort方式缺点会占用很多集群的端口,当集群服务变多的时候,缺点更加显著

2.LB的缺点就是每一个service都需要一个LB,浪费,麻烦,并且需要K8S之外的设备

基于上面两种情况,K8S提供了ingress资源对象,ingress只需要一个nodeport或者一个LB就可以满足暴露多个service需求,实际上,ingress相当于一个7层负载均衡器,是K8S对反向代理的一个抽象,他的工作原理类似于nginx,可以理解为在ingress里建立多个映射规则,ingress controller通过监听这些配置规则并且转化为nginx反向代理,然后对外提供服务,在这李有两个给核心概念:

1.ingress:K8S的一个对象,作用是定义请求如何转发到service的规则

2.ingress controller:具体实现反向代理负载均衡的程序,对ingress定义规则进行解析,根据配置的规则来实现请求转发,事项方式很多:nginx,haproxy等

二。Ingress的工作原理:

1.用户编写ingress规则,说明哪一个域对应K8S集群的哪一个服务

2.ingress控制器动态感知ingress服务规则的变化,然后生成一段相应的nginx反向代理配置

3.ingress控制器会将生成的nginx配置写入到一个运行着nginx的服务中,并动态更新

4.到此为止,其实真正的工作就是nginx了,内部配置了用户定义的请求转发规则

三。环境的准备:

1.下载配置文件:wget -c https://gitee.com/kong-xiangyuxcz/svn/releases/download/ingress-nginx-controller-v1.13.1/deploy.yaml

445         image: ingress-nginx/controller:v1.11.2

546         image: ingress-nginx/kube-webhook-certgen:v1.4.3

599         image: ingress-nginx/kube-webhook-certgen:v1.4.3

kubectl apply -f deploy.yaml:启用yaml

kubectl get -f deploy.yaml:删除yaml

四。ingress的用法:

准备工作:

kubectl create deployment myappv1 –image nginx:1.17.1 –dry-run=client -o yaml > myappv1.yaml:创建一个控制器

kubectl create service clusterip myappv1 –tcp 80:80 –dry-run=client -o yaml >> myappv1.yaml:创建servie服务

–dry-run=client模拟执行命令(客户端 dry run),不会实际创建服务,仅生成配置

 cp myappv1.yaml myappv2.yaml:创建两个yaml

运行结果:

使用ingress进行负载均衡:

1. kubectl -n ingress-nginx get ingressclasses.networking.k8s.io:查看自己所在的类

2.kubectl create ingress ingress-test –class nginx –rule="/=myappv1:80" –dry-run=client -o yaml > ingress-test.yml:生成ingress文件

3.进行检测:

4.测试:

五。ingress基于路径的访问:

1.首先删除以前的ingress,避免冲突:

2.创建基于路径的ingress文件:

3.检测结果:

六。基于域名的访问:

测试:

七。建立tls加密

1.建立私钥和证书:openssl req -newkey rsa:2048 -nodes -keyout tls.key -x509 -days 365 -subj "/CN=nginxsvc/0=nginxsvc" -out tls.crt

2.建立资源存储,假如集群:kubectl create secret tls web-tls-secret –key tls.key –cert tls.crt

3.查看secret内容: kubectl get secrets web-tls-secret -o yaml

4.查看类型:

5.进行配置:

6.测试:

七。建立auth认证:

1.下载软件: 

dnf install httpd-tools

2.建立加密用户

 htpasswd -cm auth admin
3.提取到集群空间,generic存储任意键值对形式的敏感数据

kubectl create secret generic auth-web –from-file auth

4.查看加密详细内容:

kubectl get secrets auth-web -o yaml

5.编写yml文件:

6.测试:

八:rewirte重定向:

赞(0)
未经允许不得转载:网硕互联帮助中心 » K8S的ingress
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!