0
点赞
收藏
分享

微信扫一扫

k8s学习-Ingress(安装、模板、创建、删除)


目录

  • ​​什么是Ingress?​​
  • ​​使用helm安装Ingress​​
  • ​​下载、安装helm​​
  • ​​下载、安装ingress​​
  • ​​模板​​
  • ​​实战​​
  • ​​创建​​
  • ​​删除​​
  • ​​参考​​

什么是Ingress?

Ingress和之前提到的Service、Deployment一样,也是一个k8s的资源类型,ingress用于实现用域名的方式访问k8s内部应用。Ingress 可以提供负载均衡、SSL 终止和基于名称的虚拟托管。Ingress 不会公开任意端口或协议。 将 HTTP 和 HTTPS 以外的服务公开到 Internet 时,通常使用 Service.Type=NodePort 或 Service.Type=LoadBalancer 类型的 Service。

k8s学习-Ingress(安装、模板、创建、删除)_kubernetes

使用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

k8s学习-Ingress(安装、模板、创建、删除)_学习_02

下载、安装ingress

添加仓库

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

k8s学习-Ingress(安装、模板、创建、删除)_ingress_03


下载ingress

helm pull ingress-nginx/ingress-nginx

解压
修改配置

  • hostNetwork设置为true
  • dnsPolicy设置为 ClusterFirstWithHostNet
  • nodeSelector添加ingress: “true”
  • 部署至指定节点 类型更改为kind: DaemonSet
  • LoadBalancer 改为 ClusterIP

nodeSelector的修改如下图所示:

k8s学习-Ingress(安装、模板、创建、删除)_kubernetes_04


其他的我就不一一截图了。

安装ingress

kubectl label node k8s-master ingress=true
kubectl create ns ingress-nginx
helm install ingress-nginx -n ingress-nginx .

k8s学习-Ingress(安装、模板、创建、删除)_html_05

模板

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

实战

创建

为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

k8s学习-Ingress(安装、模板、创建、删除)_学习_06


在ingress的po中可以看到如何修改了nginx的配置文件,来实现302

k8s学习-Ingress(安装、模板、创建、删除)_nginx_07

删除

命令

kubectl delete -f ingress-app-root.html

结果

k8s学习-Ingress(安装、模板、创建、删除)_学习_08

参考

​​helm安装​​​​k8s-使用helm安装ingress​​​​k8s-Ingress​​​​k8s-Ingress控制器​​​​ingress安装​​​​ingress-nginx user guide​​​​github - ingress issue​​​​ingress - rewrite​​


举报

相关推荐

0 条评论