k8s学习-Ingress(安装模板创建删除)
Posted lady_killer9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s学习-Ingress(安装模板创建删除)相关的知识,希望对你有一定的参考价值。
目录
什么是Ingress?
Ingress和之前提到的Service、Deployment一样,也是一个k8s的资源类型,ingress用于实现用域名的方式访问k8s内部应用。Ingress 可以提供负载均衡、SSL 终止和基于名称的虚拟托管。Ingress 不会公开任意端口或协议。 将 HTTP 和 HTTPS 以外的服务公开到 Internet 时,通常使用 Service.Type=NodePort 或 Service.Type=LoadBalancer 类型的 Service。
使用helm安装Ingress
下载、安装helm
下载地址-github-helm
博主下载的3.6.3
解压
tar -zxf helm-v3.6.3-linux-amd64.tar.gz
安装
mv linux-amd64/helm /usr/local/bin/helm
查看
helm version
下载、安装ingress
添加仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
下载ingress
helm pull ingress-nginx/ingress-nginx
解压
修改配置
- hostNetwork设置为true
- dnsPolicy设置为 ClusterFirstWithHostNet
- nodeSelector添加ingress: “true”
- 部署至指定节点 类型更改为kind: DaemonSet
- LoadBalancer 改为 ClusterIP
nodeSelector的修改如下图所示:
其他的我就不一一截图了。
安装ingress
kubectl label node k8s-master ingress=true
kubectl create ns ingress-nginx
helm install ingress-nginx -n ingress-nginx .
模板
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx-example
rules: # 一个Ingress可以配置多个rules
- host: foo.bar.com # 域名配置,可以不写,匹配*, *.bar.com
http:
paths: # 相当于nginx的location配合,同一个host可以配置多个path: /、/abc
- path: /testpath
pathType: Prefix
backend:
service:
name: test
port:
number: 80
当前支持的路径类型有三种:
- ImplementationSpecific:对于这种路径类型,匹配方法取决于 IngressClass。 具体实现可以将其作为单独的 pathType 处理或者与 Prefix 或 Exact 类型作相同处理。
- Exact:精确匹配 URL 路径,且区分大小写。
- Prefix:基于以 / 分隔的 URL 路径前缀匹配。匹配区分大小写,并且对路径中的元素逐个完成。 路径元素指的是由 / 分隔符分隔的路径中的标签列表。 如果每个 p 都是请求路径 p 的元素前缀,则请求与路径 p 匹配。
实战
创建
为ing-internal命名空间下的service hi创建一个ingress,使用app-root类型的annotations,代理端口80,域名为app.hi.com。最终实现302的效果。
ingress-app-root.html
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/app-root: /app1
name: approot
namespace: ing-internal
spec:
ingressClassName: nginx
rules:
- host: app.hi.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: http-svc
port:
number: 80
kubectl create -f ingress-app-root.html
在ingress的po中可以看到如何修改了nginx的配置文件,来实现302
删除
命令
kubectl delete -f ingress-app-root.html
结果
参考
helm安装
k8s-使用helm安装ingress
k8s-Ingress
k8s-Ingress控制器
ingress安装
ingress-nginx user guide
github - ingress issue
ingress - rewrite
以上是关于k8s学习-Ingress(安装模板创建删除)的主要内容,如果未能解决你的问题,请参考以下文章