K8s学习七(服务发现_2)

Ingress

  • Service 主要用于集群内部的通信和负载均衡,而 Ingress 则是用于将服务暴露到集群外部,并提供灵活的 HTTP 路由规则。在实际应用中,它们通常结合使用,Service 提供内部通信和负载均衡,Ingress 提供外部访问和路由。
基本概述与传统的对比
  • nginx是ingress的实现之一,ingress是一个抽象的概念,也就是,可以不仅仅实现nginx,需要安装ingress-nginx

  • 下图为对比图:
    在这里插入图片描述

安装ingress-nginx
1.先安装helm,下载二进制文件
https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gz2.解压(tar -zxvf helm-v3.10.2-linux-amd64.tar.gz)
tar: 用于处理 tar 文件的命令。
-zxvf: 参数用于指定解压缩的选项,具体含义如下:
z: 表示要使用 gzip 解压缩。
x: 表示解压缩。
v: 表示详细输出,显示解压缩的过程。
f: 后面紧跟着要解压的文件名。
3.将解压目录下的 helm 程序移动到 usr/local/bin/helm
进入linux-amd64,然后复制过去  cp helm /usr/local/bin/
4.下载ingress包
# 添加仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
这个命令的目的是将指定的 URL https://kubernetes.github.io/ingress-nginx 添加到你的 Helm 仓库列表中,并为该仓库取名为 ingress-nginx。
Helm 是一个用于简化和管理 Kubernetes 应用部署的工具。它允许你定义、安装和升级 Kubernetes 应用,称为 charts。Charts 是预定义的 Kubernetes 资源的打包方式,包括 Deployment、Service、ConfigMap 等,使得应用的部署和管理变得更加方便。
# 查看仓库列表
helm repo list# 搜索 ingress-nginx
helm search repo ingress-nginx
执行  helm search repo ingress-nginx 的命令将在你已添加的所有 Helm 仓库中搜索包含关键字 "ingress-nginx" 的 Charts。这使你能够快速找到与 Ingress 相关的 Charts,并可以通过 Helm 安装它们到你的 Kubernetes 集群中。# 下载安装包
helm pull ingress-nginx/ingress-nginx# 解压缩
tar -xf ingress-nginx-4.9.1.tgz 5.配置参数# 解压后,进入解压完成的目录
cd ingress-nginx# 修改 values.yaml
镜像地址:修改为国内镜像
搜索image,找到对应的地方换
registry: registry.cn-hangzhou.aliyuncs.com
image: google_containers/nginx-ingress-controller
image: google_containers/kube-webhook-certgen
tag: v1.3.0hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet修改部署配置的 kind: DaemonSet
nodeSelector:ingress: "true" # 增加选择器,如果 node 上有 ingress=true 就部署
将 admissionWebhooks.enabled 修改为 falseservice 中的 type 由 LoadBalancer 修改为 ClusterIP,如果服务器是云平台才用 LoadBalancer6.安装ingress
# 为 ingress 专门创建一个 namespace
kubectl create ns ingress-nginx# 为需要部署 ingress 的节点上加标签
kubectl label node k8s-node1 ingress=true# 安装 ingress-nginx
helm install ingress-nginx  -n ingress-nginx .
  • 注意:我这里遇见了一些问题,就是
root@master:~/k8s/helm/ingress-nginx# helm install ingress-nginx  -n ingress-nginx .
Error: template: ingress-nginx/templates/controller-role.yaml:48:9: executing "ingress-nginx/templates/controller-role.yaml" at <ne (index .Values.controller.extraArgs "update-status") "false">: error calling ne: invalid type for comparison
# 这里说我的values.yaml文件里面controller.extraArgs "update-status"这个参数没有,于是我在values.yaml中加上了,如下图

在这里插入图片描述

  • 然后好像就成功了
    在这里插入图片描述

  • 查看也有
    在这里插入图片描述

  • 另一个注意的点是,好像无法部署到master上,因为有污点,后面再说。

路径匹配和虚拟主机匹配
  • 配置文件如下:

apiVersion: networking.k8s.io/v1
kind: Ingress # 资源类型为 Ingress
metadata:name: wolfcode-nginx-ingressannotations:kubernetes.io/ingress.class: "nginx"nginx.ingress.kubernetes.io/rewrite-target: / #也可以使用正则
spec:rules: # ingress 规则配置,可以配置多个- host: k8s.wolfcode.cn # 域名配置,可以使用通配符 *http:paths: # 相当于 nginx 的 location 配置,可以配置多个- pathType: Prefix # 路径类型,按照路径类型进行匹配 ImplementationSpecific 需要指定 IngressClass,具体匹配规则以 IngressClass 中的规则为准。Exact:精确匹配,URL需要与path完全匹配上,
且区分大小写的。Prefix:以 / 作为分隔符来进行前缀匹配backend:service:name: nginx-svc # 代理到哪个 serviceport:number: 80 # service 的端口path: /api # 等价于 nginx 中的 location 的路径前缀匹配,这里也可以用正则
  • 然后创建
# 查看运行的node
kubectl get po -n ingress-nginx -o wide# 本质就是在这个node上开了个nginx服务
netstat -ntlp
  • 这个是没有符合前缀匹配,因为ingress本身就是nginx,所以在ingress这个地方就报错了,都没有到service,即nginx这个service。
    在这里插入图片描述

  • 这里是符合前缀规则,找到了是nginx的service,也符合版本号,这里是加了nginx.ingress.kubernetes.io/rewrite-target: /的重写策略,要不然也会报错。因为是前面的nginx-svc服务,而这个服务的工作路径是/usr/share/nginx/html,所以访问http://k8s.wolfcode.cn/api时会找到/usr/share/nginx/html/api,而这个html目录里面没有api,所以会报错,于是要重写,但是也会有一定的问题,比如http://k8s.wolfcode.cn/api?i=1,这里也会直接到nginx-svc服务的根目录/处,参数也没了
    在这里插入图片描述

  • 多域名配置时:

apiVersion: networking.k8s.io/v1
kind: Ingress # 资源类型为 Ingress
metadata:name: wolfcode-nginx-ingressannotations:kubernetes.io/ingress.class: "nginx"nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules: # ingress 规则配置,可以配置多个- host: k8s.wolfcode.cn # 域名配置,可以使用通配符 *http:paths: # 相当于 nginx 的 location 配置,可以配置多个- pathType: Prefix # 路径类型,按照路径类型进行匹配 ImplementationSpecific 需要指定 IngressClass,具体匹配规则以 IngressClass 中的规则为准。Exact:精确匹配,URL需要与path完全匹配上,且区分大小写的。Prefix:以 / 作为分隔符来进行前缀匹配backend:service: name: nginx-svc # 代理到哪个 serviceport: number: 80 # service 的端口path: /api # 等价于 nginx 中的 location 的路径前缀匹配- pathType: Exec # 路径类型,按照路径类型进行匹配 ImplementationSpecific 需要指定 IngressClass,具体匹配规则以 IngressClass 中的规则为准。Exact:精确匹配>,URL需要与path完全匹配上,且区分大小写的。Prefix:以 / 作为分隔符来进行前缀匹配backend:service:name: nginx-svc # 代理到哪个 serviceport:number: 80 # service 的端口path: /- host: api.wolfcode.cn # 域名配置,可以使用通配符 *http:paths: # 相当于 nginx 的 location 配置,可以配置多个- pathType: Prefix # 路径类型,按照路径类型进行匹配 ImplementationSpecific 需要指定 IngressClass,具体匹配规则以 IngressClass 中的规则为准。Exact:精确匹配>,URL需要与path完全匹配上,且区分大小写的。Prefix:以 / 作为分隔符来进行前缀匹配backend:service:name: nginx-svc # 代理到哪个 serviceport:number: 80 # service 的端口path: /# 也就是在基础配置上,在是列表的地方,可以多加几份就行了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络工程师笔记18(关于网络的一些基本知识)

网络的分类 介绍计算机网络的基本概念&#xff0c;这一章最主要的内容是计算机网络的体系结构-ISO 开放系统互连参考模型&#xff0c;其中的基本概念&#xff0c;例如协议实体、协议数据单元&#xff0c;服务数据单元、面向连接的服务和无连接的服务、服务原语、服务访问点、相…

蓝桥杯练习题 —— 高精度加法(python)

python优势 # encoding utf-8 # 开发者&#xff1a;xxx # 开发时间&#xff1a; 16:48 # "Stay hungry&#xff0c;stay foolish."a int(input()) b int(input())print(a b) 正常 # encoding utf-8 # 开发者&#xff1a;xxx # 开发时间&#xff1a; 16:48 #…

大数据分层存储架构:ODS、DWD、DWM与DWS详解

在大数据领域中&#xff0c;ODS、DWD、DWM和DWS代表了数据仓库的不同层次&#xff0c;它们共同构成了大数据的分层存储结构。这种结构的设计有助于提高数据查询效率&#xff0c;降低成本&#xff0c;并满足不同的业务需求。 ODS&#xff08;Operational Data Store&#xff09…

计算机视觉领域主流优秀的模型的用处与区别,优劣。复合缩放方法,深度可分离卷积

目录 计算机视觉领域主流优秀的模型的区别,优劣 YOLO (You Only Look Once) ResNet、EfficientNet 优劣与应用场景

1.k8s简介

目录 k8s是什么 k8s不是什么 云原生 微服务 整体式架构与微服务架构 微服务的特性 微服务的优势 k8s是什么 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快…

除了sql外还有那些查询语言

除了SQL&#xff08;结构化查询语言&#xff09;外&#xff0c;还有许多其他的查询语言&#xff0c;包括但不限于XQuery&#xff08;对XML的查询语言&#xff09;、MDX&#xff08;多维查询语言&#xff0c;用于分析数据仓库&#xff09;、DQL&#xff08;数据查询语言&#xf…

聊一聊,JMeter分布式性能测试!

在做后端服务器性能测试中&#xff0c;我们会经常听到’分布式’。但你是否了解分布式呢&#xff1f;今天&#xff0c;我们就来给大家讲讲&#xff0c;在企业实战中&#xff0c;如何使用分布式进行性能测试&#xff0c;实战过程中&#xff0c;又有哪些地方要特别注意&#xff1…

pyqtgraph 实时更新柱状图

import sys import numpy as np from PyQt5.QtWidgets import QApplication, QMainWindow import pyqtgraph as pgclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.plot_widget pg.PlotWidget(title实时更新的柱状图)self.setCentralWidget(self.pl…

C++ //练习 11.22 给定一个map<string, vector<int>>,对此容器的插入一个元素的insert版本,写出其参数类型和返回类型。

C Primer&#xff08;第5版&#xff09; 练习 11.22 练习 11.22 给定一个map<string, vector<int>>&#xff0c;对此容器的插入一个元素的insert版本&#xff0c;写出其参数类型和返回类型。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具…

法向量估计

法向量估计 1. 求解点P法向量的原理2. 法向量估计的证明3. 为什么求点P的法向量&#xff0c;需要使用以P为中心的邻域内的点&#xff1f;4. 法向量估计的应用和思考5. 权重法向量估计 1. 求解点P法向量的原理 已知有一组点 P ( p 1 , p 2 , p 3 , . . . , p n ) , p i ∈ R 3…

算力在现实生活中的多方面应用!

算力在现实生活中的应用是多方面的&#xff0c;它已经成为推动现代社会发展的重要力量。 以下是算力在不同领域中的具体应用&#xff1a; 立即免费体验&#xff1a;https://gpumall.com/login?typeregister&sourcecsdn #分布式云服务#算力#GpuMall#GpuMall智算云#训练#…

零代码与低代码开发平台

1、什么是低代码开发平台&#xff1f;什么是零代码开发平台&#xff1f; 零代码开发平台&#xff1a; 指的是不需要写代码就能够快速开发出业务应用/系统的平台。我们在工作中使用的业务应用&#xff0c;主要提供数据收集、数据处理、数据流转和展示等功能。零代码开发平台能够…

理解vue2中的computed计算属性与缓存机制

vue实例组件初始化过程中&#xff0c;在执行initState(vm)方法初始化状态时&#xff0c;判断options.computed有值时会进行initComputed$1(vm,options.computed)处理 function initState(vm) {let options vm.$options;// 省略props methods data的处理// 处理计算属性comput…

蓝桥杯 【日期统计】【01串的熵】

日期统计 第一遍写的时候会错了题目的意思&#xff0c;我以为是一定要八个整数连在一起构成正确日期&#xff0c;后面发现逻辑明明没有问题但是答案怎么都是错的才发现理解错了题目的意思&#xff0c;题目的意思是按下标顺序组成&#xff0c;意思就是可以不连续&#xff0c;我…

JavaScript的函数基础

目录 前言: 1.函数是什么: 2.函数的基本使用: 2.1 定义函数: 2.2. 调用函数 2.3函数命名规范: 2.3.1由数字、字母、下划线组成&#xff1a; 2.3.2区分大小写&#xff1a; 2.3.3不能数字开头&#xff0c;也不能是关键字&#xff1a; 2.3.4自定义函数纯小写&#xff1a…

set feedback 和set define

set feedback set feedback有三种方式 set feedback on set feedback off set feedback n set feedback on: 打开反馈 默认情况下&#xff0c;当一条 sql 语句执行的时候&#xff0c;oracle 会给一个反馈&#xff0c;比如&#xff1a;创建表的时候&#xff0c;如果成功&#x…

PaddleOCR超大分辨率文本检测代码教程

PaddleOCR超大分辨率文本检测代码教程 目录 1.前提 2.PaddleOCR部署&#xff08;win10下&#xff09; 3.解决思路和代码 1.前提 这是我提的issue&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/issues/11888 很多问题可以看&#xff1a;https://github.com/Paddle…

day22java学习打卡:自定义数组的工具类

//自定义数组的工具类&#xff1a; public class ArrayUtilTest { public static void main(String[] args) { ArrayUtil utilnew ArrayUtil(); int[] arrnew int[] {12,23,56,76,45,9,-98}; int maxutil.getMax(arr); System.…

【操作系统API系统调用】

原理 操作系统的API调用通常在应用程序进程的上下文中执行。当一个应用程序调用操作系统的API时&#xff0c;操作系统会在该应用程序进程的内存空间中分配资源&#xff08;如内存、文件描述符等&#xff09;并执行相应的操作。因此&#xff0c;在调用操作系统API时&#xff0c…

信阳附大医院-市民心中的健康守护者

信阳附大医院,一所集医疗、预防、保健、科研、教学、康复于一体的现代化综合医院,坐落于信阳市工区路600号,是市卫生部门批准成立的医疗机构,更是市民心中的健康守护者. 医院环境优雅,设施先进,服务周到,汇聚了一支技术精湛、经验丰富的医疗团队.医师们以患者为中心,用心倾听,精…