K8s学习七(服务发现_2)

news2024/11/26 13:42:26

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.gz

2.解压(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.0

hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet

修改部署配置的 kind: DaemonSet
nodeSelector:
  ingress: "true" # 增加选择器,如果 node 上有 ingress=true 就部署
将 admissionWebhooks.enabled 修改为 falseservice 中的 type 由 LoadBalancer 修改为 ClusterIP,如果服务器是云平台才用 LoadBalancer

6.安装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-ingress
  annotations:
    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 # 代理到哪个 service
            port:
              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-ingress
  annotations:
    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 # 代理到哪个 service
            port: 
              number: 80 # service 的端口
        path: /api # 等价于 nginx 中的 location 的路径前缀匹配
      - pathType: Exec # 路径类型,按照路径类型进行匹配 ImplementationSpecific 需要指定 IngressClass,具体匹配规则以 IngressClass 中的规则为准。Exact:精确匹配>,URL需要与path完全匹配上,且区分大小写的。Prefix:以 / 作为分隔符来进行前缀匹配
        backend:
          service:
            name: nginx-svc # 代理到哪个 service
            port:
              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 # 代理到哪个 service
            port:
              number: 80 # service 的端口
        path: /

# 也就是在基础配置上,在是列表的地方,可以多加几份就行了

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

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

相关文章

“AI+信创”两翼齐飞,实在智能全面加速自主可控实在智能RPA

近日&#xff0c;实在智能牵手华为昇腾、摩尔线程在信创领域展开紧密合作&#xff0c;共同加速推进AI和信创产业创新发展。 华为昇腾与实在智能达成昇腾原生大模型联合创新合作&#xff0c;基于华为昇腾AI自主创新软硬件平台全栈技术、实在智能自研RPA基础大模型解决方案能力&a…

2024年2月蓝牙耳机线上电商(京东天猫淘宝)综合热销排行榜

鲸参谋监测的综合电商平台&#xff08;淘宝天猫京东&#xff09;蓝牙耳机市场的销售数据已揭晓&#xff01; 根据鲸参谋数据显示&#xff0c;今年2月份&#xff0c;综合电商平台上蓝牙耳机销量累计约657万副&#xff0c;同比去年下滑34%&#xff1b;销售额累计约17亿元&#x…

一条SQL查询语句的执行顺序

SQL常用字段书写顺序 SELECT&#xff1a;选择要查询的列。 FROM&#xff1a;指定数据来源&#xff0c;即表名。 JOIN&#xff1a;根据指定的连接条件将多个表连接在一起。 ON&#xff1a;指定连接条件&#xff0c;即哪些列的值匹配时&#xff0c;应该将两个表中的行组合在一起。…

Rsync——远程同步命令

目录 一、关于Rsync 1.定义 2.Rsync同步方式 3.备份的方式 4.Rsync命令 5.配置源的两种表达方法 二、配置服务端与客户端的实验——下载 1.准备工作 2.服务端配置 3.客户端配置同步 4.免交互数据同步 5.源服务器删除数据是否会同步 6.可以定期执行数据同步 三、关…

【HTML】简单制作一个动态变色光束花

目录 前言 开始 HTML部分 效果图 ​编辑​编辑​编辑​编辑总结 前言 无需多言&#xff0c;本文将详细介绍一段代码&#xff0c;具体内容如下&#xff1a; 开始 首先新建文件夹&#xff0c;创建一个文本文档&#xff0c;其中HTML的文件名改为[index.html]&a…

德兰梅尔:耐高温热销的膜元件亮相2024上海国际生物发酵展

德兰梅尔&#xff1a;耐高温热销的膜元件盛装亮相2024上海国际生物发酵展&#xff0c;8月7-9号上海新国际博览中心与您不见不散&#xff01; 据了解&#xff0c;从成立至今&#xff0c;德兰梅尔一直专注膜技术、膜产品的开发生产。在中国市场上&#xff0c;德兰梅尔刚步入中国…

SpringBoot项目 jar包方式打包部署

SpringBoot项目 jar包方式打包部署 传统的Web应用进行打包部署&#xff0c;通常会打成war包形式&#xff0c;然后将War包部署到Tomcat等服务器中。 在Spring Boot项目在开发完成后&#xff0c;确实既支持打包成JAR文件也支持打包成WAR文件。然而&#xff0c;官方通常推荐将Sp…

【SpringCloud】Nacos 配置管理

目 录 一.统一配置管理1. 在 nacos 中添加配置文件2. 从微服务拉取配置 二.配置热更新1. 方式一2. 方式二 三.配置共享1. 添加一个环境共享配置2. 在 user-service 中读取共享配置3. 运行两个 UserApplication&#xff0c;使用不同的 profile4. 配置共享的优先级5. 多服务共享配…

esp32连接wifi

1、简介 Wi-Fi设备有两种模式&#xff1a; 1.Access Point(AP) 模式&#xff0c;此为无线接入点&#xff0c;家里的光猫就是结合WiFi和internet路由功能的AP。 2.Station(STA)模式&#xff0c;此为 无线终端&#xff0c;连接到AP的装置&#xff0c;手机&#xff0c;电脑等需…

如何用matplotlib画图像的时候使用中文标签名

Matplotlib 中文显示不是特别友好&#xff0c;要在 Matplotlib 中显示中文&#xff0c;我们可以通过两个方法&#xff1a; 下载使用支持中文的字体库。设置 Matplotlib 的字体参数。 下载使用支持中文的字体库: Matplotlib 默认情况不支持中文&#xff0c;我们可以使用以下简…

大语言模型 vs 大模型

前言 有时候我们经常说行业大模型&#xff0c;医疗大模型&#xff0c;开源大模型&#xff0c;甚至用「产品大模型」的固定结构去称呼一个模型&#xff0c;例如百度的文心一言大模型&#xff0c;但是文心一言其实是大语言模型&#xff0c;大模型和大语言模型&#xff0c;差别就…

每天掌握一个软测高级技巧:接口自动化神器apin进阶操作

之前写了一篇关于接口自动化框架 apin 入门使用是文章&#xff0c;主要介绍了 apin 的安装以及用例编写的方法。 今天这篇文章来给大家聊聊&#xff0c;apin 中的一些高级使用技巧。比如依赖接口的变量提取和引用&#xff0c;用例断言&#xff0c;以及函数工具的使用。 变量提…

蓝桥杯刷题-12-公因数匹配-数论(分解质因数)不是很理解❓❓

蓝桥杯2023年第十四届省赛真题-公因数匹配 给定 n 个正整数 Ai&#xff0c;请找出两个数 i, j 使得 i < j 且 Ai 和 Aj 存在大于 1 的公因数。 如果存在多组 i, j&#xff0c;请输出 i 最小的那组。如果仍然存在多组 i, j&#xff0c;请输出 i 最小的所有方案中 j 最小的那…

12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?归并排序和快速排序

 下载APP  12 | 排序&#xff08;下&#xff09;&#xff1a;如何用快排思想在O(n)内查找第K大元素&#xff1f; 2018-10-17 王争数据结构与算法之美进入课程 讲述&#xff1a;修阳 时长21:58大小8.81M  上一节我讲了冒泡排序、插入排序、选择排序这三种排序算法&…

基于 Lambda 实现 Claude3 的流式响应

在如今的大语言模型推理输出场景中&#xff0c;流式响应基本已成为必备的功能之一。一方面符合大语言模型生成方式的本质&#xff0c;另一方面当模型推理效率不是很高时&#xff0c;流式响应比起全部 generate 后再输出、能大幅缩短从开始请求到输出第一个 Token 的时间&#x…

2024年最新可用免费云服务器整理汇总

随着云计算技术的不断发展&#xff0c;越来越多的个人和企业开始使用云服务器来满足其数据存储、网站搭建、应用开发等需求。其中&#xff0c;免费云服务器更是受到广大用户的青睐。本文将为大家整理汇总最新的可用免费云服务器资源&#xff0c;助力大家轻松享受云上之旅&#…

transform 模型常见问题

目录 transform 模型常见问题 transform 模型常见问题 1.Transformer为何使用多头注意力机制?(为什么不使用一个头) 答:多头可以使参数矩阵形成多个子空间,矩阵整体的size不变,只是改变了每个head对应的维度大小,这样做使矩阵对多方面信息进行学习,但是计算量和单个h…

Vue 引入config.js后别的js访问不到window对象下的属性

Vue项目里,我们项目配置的请求服务器地址都是在public里config.js里,如下例: 然后在index.html里引入config.js,如下图: 这里要注意的是,script的src要写上<%= BASE_URL %>,代码如下: <!DOCTYPE html> <html><head><meta charset="…

Linux虚拟网络设备深度解析:使用场景、分类与开发者指南

Linux虚拟网络设备支撑着各种复杂的网络需求和配置&#xff0c;从基础的网络桥接到高级的网络隔离和加密&#x1f510;。以下是对主要Linux虚拟网络设备的介绍、它们的作用以及适用场景的概览&#xff0c;同时提出了一种合理的分类&#xff0c;并指出应用开发人员应该着重掌握的…

qt调试日志文件生成

系列文章目录 第一章 qt日志文件生成功能 文章目录 系列文章目录前言一、qt日志文件生成功能二、使用步骤1.代码示例2.运行截图 前言 qt有固定的调试日志接口&#xff0c;可以通过终端去打印&#xff0c;但是仅适用在本地去调试&#xff0c;例如想长期放到测试台去检测&#…