k8s入门之Ingress(七)
Ingress 的功能其实很容易理解:所谓 Ingress,就是 Service 的“Service”,代理不同后端 Service 而设置的负载均衡服务。

一、安装ingress
1.查找ingress安装文件
从github上查看ingress对应k8s版本的deploy文件,链接地址是:
https://github.com/kubernetes/ingress-nginx/tree/main/deploy/static/provider/baremetal


2.点击Raw按钮可得到该文件的url链接

3.在master节点上下载该文件
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/baremetal/1.21/deploy.yaml
4.更改文件名
mv deploy.yaml ingress-nginx.yaml
5.替换镜像
由于国内访问不了谷歌,需要更改ingress-nginx.yaml文件中的镜像,从docker hub上搜索相关镜像进行替换
k8s.gcr.io/ingress-nginx/controller:v1.1.2@sha256:28b11ce69e57843de44e3db6413e98d09de0f6688e33d4bd384002a44f7
8405c 替换成 liangjw/ingress-nginx-controller:v1.1.2
k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a
91b20cc67868660 替换成 liangjw/kube-webhook-certgen:v1.1.1
6.创建nginx ingress
kubectl apply -f ingress-nginx.yaml
7.查看资源
kubectl get pod,svc -n ingress-nginx

8.在集群外通过集群内任意一台节点的IP+Port就可以访问

由于还没有配置被代理的服务,所以返回404

二、配置
1.参考前面的章节部署nginx的deploy与service
服务名为:svc-nginx

2.配置ingress
创建ingress-svc.yaml文件
vi ingress-svc.yaml
编写文件内容
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-demo
# 名称空间不要忘了
namespace: dev
spec:
ingressClassName: nginx
rules:
- host: "demo.k8s.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
# 代理的服务名称
name: svc-nginx
port:
# 服务端口
number: 8000
3.创建ingress对象
kubectl apply -f ingress-svc.yaml
4.查看ingress对象的信息

5.配置域名访问
在windows宿主机上找到hosts文件:
C:\Windows\System32\drivers\etc\hosts,
添加一条映射记录(从三台节点中任选一台的IP进行映射):
192.168.59.112 demo.k8s.com
然后通过该域名加上ingress controller服务自己暴露的端口就可以访问了,千万要注意不是你代理的服务的端口。如下图所示获取ingress服务的端口

在浏览器就可以访问被ingress代理的k8s服务了


三、路径重写
1.更新yaml文件
vi ingress-svc.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
# 加上此重写配置
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: ingress-demo
namespace: dev
spec:
ingressClassName: nginx
rules:
- host: "demo.k8s.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: svc-nginx
port:
number: 8000
- host: "demo2.k8s.com"
http:
paths:
- pathType: Prefix
path: "/nginx(/|$)(.*)"
backend:
service:
name: svc-nginx
port:
number: 8000
2.更新ingress对象
kubectl apply -f ingress-svc.yaml
3.查看ingress对象

4.配置域名
在windows宿主机上找到hosts文件:
C:\Windows\System32\drivers\etc\hosts,添加一条映射记录:
192.168.59.112 demo2.k8s.com
在浏览器中访问


四、限流配置
1.更新yaml文件
vi ingress-svc.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
# 加上此重写配置
nginx.ingress.kubernetes.io/rewrite-target: /$2
# 限流
nginx.ingress.kubernetes.io/limit-rps: "1"
name: ingress-demo
namespace: dev
spec:
ingressClassName: nginx
rules:
- host: "demo.k8s.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: svc-nginx
port:
number: 8000
- host: "demo2.k8s.com"
http:
paths:
- pathType: Prefix
path: "/nginx(/|$)(.*)"
backend:
service:
name: svc-nginx
port:
number: 8000
2.更新ingress对象
kubectl apply -f ingress-svc.yaml
3.测试
快速刷新访问会报异常,你可以自定义错误页面

五、总结
目前,Ingress 只能工作在七层,而 Service 只能工作在四层。所以当你想要在 Kubernetes 里为应用进行 TLS 配置等 HTTP 相关的操作时,都必须通过 Ingress 来进行。

k8s入门之Ingress(七)的更多相关文章
- K8s 入门
中文文档:https://www.kubernetes.org.cn/kubernetes%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84 小结大白话 Portainer 挺好 ...
- k8s入门你至少需要会哪些
body { margin: 0; overflow: auto; font: normal 14px Verdana; background: rgba(255, 255, 255, 1); pad ...
- k8s入门系列之guestbook快速部署
k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...
- Docker入门教程(七)Docker API
Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...
- k8s入门系列之扩展组件(一)DNS安装篇
DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...
- k8s入门系列之集群安装篇
关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...
- k8s 入门系列之集群安装篇
关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...
- Photoshop入门教程(七):蒙版
学习心得:蒙版在Photoshop中也是很常用的,学会使用蒙版,可以提高图像处理能力,并且可以保护原片不被破坏,建议多使用一些蒙版. 蒙板是灰度的,是将不同灰度色值转化为不同的透明度,并作用到它所在的 ...
- [转帖]在 k8s 中通过 Ingress 配置域名访问
在 k8s 中通过 Ingress 配置域名访问 https://juejin.im/post/5db8da4b6fb9a0204520b310 在上篇文章中我们已经使用 k8s 部署了第一个应用,此 ...
随机推荐
- mybatis缓存-二级缓存
1.2 二级缓存 [官方声明] => 如何开启[二级缓存] 默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存. 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行 ...
- jvm-learning-类加载子系统
类加载子系统的作用 类加载器ClassLoader角色 类的加载过程(广义加载) 加载 加载.class文件的方式 连接Linker 初始化 注意:如果类种没有变量赋值动作和静态代码块的语句是不 ...
- Mybatis框架基础入门(七)--关联查询
1.一对一查询 1.1 使用resultType接收查询结果 修改pojo类 public class OrderUser extends order { private String usernam ...
- 转载:2017百度春季实习生五道编程题[全AC]
装载至:https://blog.csdn.net/zmdsjtu/article/details/70880761 1[编程题]买帽子 时间限制:1秒空间限制:32768K度度熊想去商场买一顶帽子, ...
- 更改IE中的jdk版本
一丶打开IE设置: 快捷键:Ctrl+Shift+Alt+S 二丶在设置中调设已经安装的jdk版本(前提已安装):
- eclipse开发工具之"导入项目"
1.选择菜单栏"file""下的"import" 2.选择Maven 在选中"Existing Maven Projects",然 ...
- HTML5 Canvas学习之路(六)
一个炫酷的计时器 在慕课网看到一个canvas的课,感觉很炫酷,就把它看完了,然后记下来.http://www.imooc.com/learn/133 第一步:绘制要显示的时间 拿小球来绘制具体的数字 ...
- AS修改text内容+显示不同页面
新创建一个project,命名为myclass. 一:修改 在res中找到layout打开xml文件,右上角有一个code,点击进入可以写代码的文件,并在里面进行修改.(老版本写代码的界面在下面与de ...
- leetcode 1962. 移除石子使总数最小
题目描述: 给你一个整数数组 piles ,数组 下标从 0 开始 ,其中 piles[i] 表示第 i 堆石子中的石子数量.另给你一个整数 k ,请你执行下述操作 恰好 k 次: 选出任一石子堆 p ...
- java中请给出例子程序:找出n到m之间的质数。
9.1 找出100到200之间的质数. public class Test { public static void main(String[] args){ for (in ...