目录

1:Service:将一组Pods公开为网络服务的抽象方法。

2: Ingress:service统一的网关入口,总网关入口

测试:

1:环境准备

2:域名访问

3.路径重写

4.流量限制


1:Service:将一组Pods公开为网络服务的抽象方法。

#暴露Deploy,集群内部能够访问8080,来进入pod的80达到负载均衡
kubectl expose deploy my-dep --port=8000 --target-port=80#暴露Deploy,集群内外部能够访问8080,来进入pod的80达到负载均衡
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=NodePort#使用标签检索Pod
kubectl get pod -l app=my-dep#删除暴露端口
kubectl delete service my-dep# 查看pod标签,相同的deployment 有同一个标签
kubectl get pod --show-labels

配置文件创建

apiVersion: v1
kind: Service
metadata:labels:app: my-depname: my-dep
spec:selector:app: my-depports:- port: 8000protocol: TCPtargetPort: 80

2: Ingress:service统一的网关入口,总网关入口

# 下载ingress
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/baremetal/deploy.yaml#修改镜像
vi deploy.yaml
#将image的值改为如下值:
registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/ingress-nginx-controller:v0.46.0# 检查安装的结果
kubectl get pod,svc -n ingress-nginx# 最后别忘记把svc暴露的端口要放行

80:31378/TCP,443:31782/TCP    http访问31378端口         http访问31782端口

测试:

1:环境准备

部署两个Deployment,每个Deployment的pod有两个副本 ,部署两个网格分别管理两组pod

[root@k8s-master ~]# vim test.yaml
添加如下内容apiVersion: apps/v1
kind: Deployment
metadata:name: hello-server
spec:replicas: 2selector:matchLabels:app: hello-servertemplate:metadata:labels:app: hello-serverspec:containers:- name: hello-serverimage: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/hello-serverports:- containerPort: 9000
---
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-demoname: nginx-demo
spec:replicas: 2selector:matchLabels:app: nginx-demotemplate:metadata:labels:app: nginx-demospec:containers:- image: nginxname: nginx
---
apiVersion: v1
kind: Service
metadata:labels:app: nginx-demoname: nginx-demo
spec:selector:app: nginx-demoports:- port: 8000protocol: TCPtargetPort: 80
---
apiVersion: v1
kind: Service
metadata:labels:app: hello-servername: hello-server
spec:selector:app: hello-serverports:- port: 8000protocol: TCPtargetPort: 9000

然后执行    [root@k8s-master ~]# kubectl apply -f test.yaml

2:域名访问

[root@k8s-master ~]# vim ingress-rule.yaml
添加如下内容apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-host-bar
spec:ingressClassName: nginxrules:- host: "hello.atguigu.com"http:paths:- pathType: Prefixpath: "/"backend:service:name: hello-serverport:number: 8000- host: "demo.atguigu.com"http:paths:- pathType: Prefixpath: "/nginx"  # 把请求会转给下面的服务,下面的服务一定要能处理这个路径,不能处理就是404backend:service:name: nginx-demo  ## java,比如使用路径重写,去掉前缀nginxport:number: 8000

注:修改电脑的hosts域名映射关系,集群任意一台主机ip即可

47.104.182.107   hello.atguigu.com
47.104.182.107   demo.atguigu.com

 ​​​​​​​

path: "/nginx" 与 path: "/" 虽然都为404,但是path: "/" 是ingress直接返回不处理,path: "/nginx" 是ingress把请求转给了nginx-demo服务处理,但nginx-demo没有对该路径处理

3.路径重写


[root@k8s-master ~]# rm -rf ingress-rule.yaml
[root@k8s-master ~]# vim ingress-rule.yaml
[root@k8s-master ~]# kubectl apply -f ingress-rule.yaml
ingress.networking.k8s.io/ingress-host-bar configured
[root@k8s-master ~]# kubectl get ingress
NAME               CLASS   HOSTS                                ADDRESS         PORTS  AGE
ingress-host-bar   nginx   hello.atguigu.com,demo.atguigu.com   192.168.0.137   80      22m# vim ingress-rule.yaml的内容
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:nginx.ingress.kubernetes.io/rewrite-target: /$2name: ingress-host-bar
spec:ingressClassName: nginxrules:- host: "hello.atguigu.com"http:paths:- pathType: Prefixpath: "/"backend:service:name: hello-serverport:number: 8000- host: "demo.atguigu.com"http:paths:- pathType: Prefixpath: "/nginx(/|$)(.*)"  # 把请求会转给下面的服务,下面的服务一定要能处理这个路径,不能处理就是404backend:service:name: nginx-demo  ## java,比如使用路径重写,去掉前缀nginxport:number: 8000

4.流量限制

47.104.182.107   haha.atguigu.com

[root@k8s-master ~]# vim ingress-rule2.yaml
[root@k8s-master ~]# kubectl apply -f ingress-rule2.yaml
ingress.networking.k8s.io/ingress-limit-rate created
[root@k8s-master ~]# kubectl get ingress
NAME                 CLASS   HOSTS                                ADDRESS         PORTS   AGE
ingress-host-bar     nginx   hello.atguigu.com,demo.atguigu.com   192.168.0.137   80      27m
ingress-limit-rate   nginx   haha.atguigu.com                                     80      3s# vim ingress-rule2.yaml的内容
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-limit-rateannotations:nginx.ingress.kubernetes.io/limit-rps: "1"  #每秒放行一个请求
spec:ingressClassName: nginxrules:- host: "haha.atguigu.com"http:paths:- pathType: Exactpath: "/"backend:service:name: nginx-demoport:number: 8000

记得疯狂刷新哦

K8s实战一:基本概念与命令二相关推荐

  1. 【k8s实战一】Jenkins 部署应用到 Kubernetes

    [k8s实战一]Jenkins 部署应用到 Kubernetes 01 本文主旨 目标是演示整个Jenkins从源码构建镜像到部署镜像到Kubernetes集群过程. 为了简化流程与容易重现文中效果, ...

  2. Flutter实战一Flutter聊天应用(二十)

    在上一篇文章<Flutter实战一Flutter聊天应用(十九)>中,我们完成了删除用户的逻辑,就是将会话的有效性设置为false就可以了.那么当会话的有效性为false时,用户再次添加该 ...

  3. Flutter实战一Flutter聊天应用(二十一)

    在这一系列的前二十篇文章里,我们已经完成了最主要的添加.删除好友,并与好友聊天,还可以发送图片的功能.这一篇文章会完成个人资料与设置相关的功能,并将应用发布上线. 之前设置了个人资料的入口按钮,现在我 ...

  4. Flutter实战一Flutter聊天应用(二)

    随着项目的代码越来越多,我们会碰到各种问题,所以我们需要学习一下如何使用IntelliJ定位并解决问题.我们可以在IntelliJ IDE上调试在模拟器/仿真器或真机设备上运行的Flutter应用程序 ...

  5. Flutter实战一Flutter聊天应用(汇总)

    纸聊 这个应用程序使用Google的Flutter移动框架开发,是一个实时聊天应用程序,为了能专注于APP设计,应用程序的服务端使用Googler的Firebase平台.程序程序的名称为纸聊,意为像传 ...

  6. 【Kubernetes】k8s的svc所有概念和实操详细说明(含镜像和代码)【2】【svc作用是端口转发相关】【含LB和ingress【反向代理】-部署使用】

    文章目录 service[svc]所有概念 环境准备 端口映射常规测试 创建pod 主机端口映射测试 修改pod副本数并测试 svc[service] 关于Service 定义Service的意义 没 ...

  7. 云原生(二十七) | Kubernetes篇之自建高可用k8s集群前置概念与操作

    文章目录 自建高可用k8s集群前置概念与操作 一.内核升级 二.k8s集群架构

  8. UnrealEngine5实操--基础概念(持续补充)

    UnrealEngine5实操--基础概念 Unreal 术语 UE5 上手指南 关卡快速搭建 视口标准按键操作 Editor 视角移动速度调节 Unreal Editor 快速测距 Actor 操作 ...

  9. Neo4j系统实战一

    Neo4j系统实战一 Neo4j是一个高性能的图形数据库,查询的语言使用_Cypher_语言,通过创建节点和关系形成强大的节点网络. 目录: Neo4j基本概念: 标签Label:类比于数据中的一张数 ...

  10. 46.逻辑卷管理1,lvm架构,概念,常用命令介绍

    LVM架构 LVM(Logical Volume Manager)可以让分区变得弹性,可以随时随地的扩大和缩小分区大小,前提是该分区是LVM格式的.lvm需要使用的软件包为lvm2.它的架构 相关概念 ...

最新文章

  1. Python 初学者进阶的九大技能(附代码)
  2. Cordic算法——verilog实现
  3. PX4 - position_estimator_inav
  4. 使用xslt批量修改xml 节点name
  5. 对于Ping的过程,你真的了解吗?
  6. 屏幕分析师确认两款iPhone 13将采用LTPO屏幕 支持120Hz刷新率
  7. 移动互联消亡者及原因分析
  8. vue 父子组件传值以及方法调用,平行组件之间传值以及方法调用大全
  9. EOSIO 指南(浏览源码)
  10. Elasticsearch 读时分词、写时分词
  11. C#:Access数据库的连接、读取,字段的增加、删除、更新、查询操作
  12. 温度采集系统(开源 原理图、PCB文件+源码+云平台+app端设计方案)
  13. 对ID3算法的理解及其优缺点
  14. 树莓派Ubuntu21.04 罗技键盘和鼠标重启后失效问题解决
  15. 面试5173的奇葩经历——老板与员工的博弈论
  16. Vulkan 多线程渲染
  17. C语言打印多颜色字体,多功能打印,协助开发调试
  18. vscode下载太慢,快速下载vscode方法!
  19. C语言候老师,两本留言册背后的C语言老师
  20. SQL server Date函数之DATEADD()函数

热门文章

  1. 小心利用大家的爱国热情来传播Worm.Win32.AutoRun.dgk的网页
  2. SCI论文分区有两种方法
  3. LIO-SAM_based_relocalization运行kitti回环序列并保存轨迹评估(一)——————源码的分析
  4. 前端程序员为何焦虑?web前端未来终将是什么样?
  5. druid监控页面SQL不显示问题
  6. Node-RED中建立Websocket客户端连接
  7. Clean Code 读书笔记四
  8. 树莓派中的 IM 私有云支持多少并发?
  9. 嘉应大学黄林鑫计算机学院,嘉应学院学子参加第十届全国大学生数学竞赛获佳绩...
  10. mac pro 安装双系统与windows下解决右键问题