当前位置: 首页 > news >正文

二十、服务发布Ingress

Ingress

Kubernetes使用了一个Ingress策略定义和一个具体提供转发服务的Ingress Controller,两者结合,实现了基于灵活Ingress策略定义的服务路由功能。如果是对Kubernetes集群外部的客户端提供服务,那么IngressController实现的是类似于边缘路由器(Edge Router)的功能。需要注意的是,Ingress只能以HTTP和HTTPS提供服务,对于使用其他网络协议的服务,可以通过设置Service的类型(type)为NodePort或LoadBalancer对集群外部的客户端提供服务。

Ingress为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称(域名)的虚拟主机、应用的灰度发布等功能,在生产环境中常用的Ingress控制器有Treafik、Nginx、HAProxy、Istio等。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


一、 Ingress Controller 安装

官方安装文档:https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters

两种方式:

A. 官方手册,用裸金属方式,helm安装。但是镜像地址需要修改image的地址。

自己部署管理的kubernetes,建议使用helm安装。

B. 使用提供的文件
本次采用第二种方式安装
在这里插入图片描述

开始安装

[root@k8s-master01 Pra]#kubectl create -f deploy-nginx.yaml
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
serviceaccount/ingress-nginx-admission created
role.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx created
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
configmap/ingress-nginx-controller created
service/ingress-nginx-controller created
service/ingress-nginx-controller-admission created
deployment.apps/ingress-nginx-controller created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created
ingressclass.networking.k8s.io/nginx created
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
[root@k8s-master01 Pra]#kubectl get po -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-mpsc9        0/1     Completed   0          64s
ingress-nginx-admission-patch-k4gpl         0/1     Completed   0          64s
ingress-nginx-controller-674f66cf96-hznf4   1/1     Running     0          64s# 看见controller 变成1/1就完成了。

二、使用域名发布 K8s 的服务

创建一个 web 服务:

# kubectl create deploy nginx --image=registry.cn-beijing.aliyuncs.com/dotbalo/nginx:1.15.12

暴露服务:

# kubectl expose deploy nginx --port 80 --name my-service

创建 Ingress:

[root@k8s-master01 Pra] # vim web-ingress.yaml
apiVersion: networking.k8s.io/v1   # k8s >= 1.22 必须使用 v1
kind: Ingress
metadata:name: nginx-ingress              # ingress的名称,要见名知意
spec:ingressClassName: nginx          # 关于ingress的描述,表述用的nginx的controller rules:                           # 下面的一些规则- host: nginx.test.com           # 基于域名的访问,域名配置,可以不写,匹配*   *.bar.comhttp:paths:                       # 相当于nginx的lacation配合,同一个host可以配置多个path- backend:service:name: my-service       # service的名称port:number: 80           # service的端口号path: /pathType: ImplementationSpecific# 带 - 的可以重复,意识是可以有多个

生成yaml文件:

[root@k8s-master01 Pra]#kubectl create -f web-ingress.yaml
ingress.networking.k8s.io/nginx-ingress created
[root@k8s-master01 Pra]#kubectl get ingress
NAME            CLASS   HOSTS            ADDRESS   PORTS   AGE
nginx-ingress   nginx   nginx.test.com             80      11s# 查看用的什么控制器,可以看见,此处用的nginx controller
[root@k8s-master01 Pra]#kubectl get ingressclasses
NAME    CONTROLLER             PARAMETERS   AGE
nginx   k8s.io/ingress-nginx   <none>       65m

查看结果

[root@k8s-master01 Pra]#kubectl get svc -n ingress-nginx
NAME                                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.96.56.221   <none>        80:30784/TCP,443:32602/TCP   22h
ingress-nginx-controller-admission   ClusterIP   10.96.103.51   <none>        443/TCP                      22h# 可以看见 ingress-nginx的命名空间内的ingress-nginx-controller service,端口指向80:30784

注意:不是ingress-nginx-controller的CLUSTER-IP地址,因为访问不到。也不是kubectl get ingress结果的地址。是任意一台宿主机的地址。因为ingress-nginx-controller的类型是NodePort。

ingress-nginx-controller的类型是NodePort
在这里插入图片描述

主机添加dns解析

任意一台宿主机地址 + nginx.test.com

在这里插入图片描述

web登录访问,正常

在这里插入图片描述


三、Ingress相关配置解释

1、pathType解释

1). Exact(精确匹配)

  • 定义

http://www.lryc.cn/news/507686.html

相关文章:

  • 计算机网络 八股青春版
  • java全栈day18--Web后端实战(java操作数据库2)
  • electron-vite【实战】自定义标题栏【组件封装】(含异形标题栏,指定区域拖拽,窗口置顶,窗口最小化,窗口最大化,取消最大化,隐藏窗口到托盘等)
  • vue2 项目webpack 4升5
  • 前端开发性能监控中的数据采集与性能调优方法
  • S32K324 Stack异常分析及解决方案
  • [创业之路-202]:任正非管理华为的思想与毛泽东管理党、军队、国家的思想的相似性与差异性
  • SAP PP ECN CSAP_MAT_BOM_MAINTAIN
  • html中实用标签dl dt dd(有些小众的标签 但是很好用)
  • ONES 功能上新|ONES Copilot、ONES Wiki 新功能一览
  • 实现Python将csv数据导入到Neo4j
  • QML Rectangle组件
  • uniapp开发app,cover-view不能隐藏,使用v-if,v-show都不行的解决办法
  • 用adb命令给APP做压力测试,有什么不同?
  • netcore 集成Prometheus
  • 同城外卖系统源码扩展指南:搭建海外外卖APP平台详解
  • JavaScript 中常见内置对象的知识点及示例总结
  • CSSmodule的作用是什么
  • python\shell\c++语法对比
  • 优先队列【东北大学oj数据结构9-3】C++
  • 圣诞快乐(h5 css js(圣诞树))
  • 基于MATLAB的图像增强
  • 大数据之Hbase环境安装
  • javaEE--计算机是如何工作的-1
  • vue.js 指令的修饰符
  • 基于java web在线商城购物系统源码+论文
  • Autosar入门_架构(Architecture)
  • Altair: 轻松创建交互式数据可视化
  • APM32F411使用IIS外设驱动es8388实现自录自播
  • RabbitMQ消息队列的笔记