Kubernetes那点事儿——暴露服务之Ingress

news2024/12/23 6:39:16

Kubernetes那点事儿——暴露服务之Ingress

  • 前言
  • 一、ingress
    • 负载均衡器Ingress Controller
    • 路由规则Ingress
  • 二、Ingress Controller
  • 三、案例


前言

在 k8s 集群中,如果我们将服务暴露出来,提供访问,可以使用Nodeport方式,但是Nodeport也有缺点,比如端口号用尽,只能支持4层的负载均衡。为了弥补Nodeport的不足,Ingress应运而生。

一、ingress

Ingress 公开了从集群外部到集群内服务的HTTP和HTTPS路由。流量路由由Ingress资源上定义的规则控制。
下面是一个将所有流量都发送到同一Service的简单Ingress示例:

在这里插入图片描述

Ingress分为两部分:负载均衡器和路由规则:

在这里插入图片描述

负载均衡器Ingress Controller

在这里插入图片描述

路由规则Ingress

# http示例.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.ingress.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend: 
          service:
            name: web-service  # serviceName对应service的名称
            port:
              number: 80 # servicePort对应service监听端口
              

# https示例.yaml
apiVersion: networking.k8s.io/v1 
kind: Ingress
metadata:
  name: tls-example-ingress
spec:
  tls:
  - hosts:
    - sslexample.ctnrs.com secretName: secret-tls
  rules:
    - host: sslexample.ingress.com
      http:
        paths:
        - path: /
          pathType: Prefix
          backend: 
            name: web-service  # serviceName对应service的名称
            port:
              number: 80 # servicePort对应service监听端口

在这里插入图片描述

二、Ingress Controller

Ingress Controller有很多实现,示例采用官方维护的基于Nginx实现的,其他还可使用haproxy、lvs等。
Github:https://github.com/kubernetes/ingress-nginx
部署:kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml

部署Ingress Controller

方案一(2次反代)
使用DaemonSet部署ingress-controller,ds保证集群每个或者部分满足条件的node运行单个pod,如果是打算让每个node都跑一个ingress还是部分满足条件节点跑ingress都需要ds,这种部署模式ingress-controller需用hostnetwork,直接将pod与host共享网命名空间,host直接监控pod监听的端口。ingress可以直接转发请求到host。

user -> LB -> ingress-controller -> pod

方案二(3次反代)

使用Deployment部署ingress-controller,再使用service的nodeport方法去暴露ingress-controller,与DaemonSet方式部署最大的区别该方式ingress-controller不需要hostnetwork,但deployment可能会出现几个ingress都在一个或几个node上,这不优雅也不能保证集群高可用。

user -> LB -> svc(nodePort) -> ingress-controller -> pod

kubectl apply -f ingress-controller.yaml

kubectl get pods -n ingress-nginx -o wide

NAME                             READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES

nginx-ingress-controller-hdx4b   1/1     Running   0          22m   10.7.7.221   k8s-node1   <none>           <none>

nginx-ingress-controller-pqkx8   1/1     Running   0          22m   10.7.7.222   k8s-node2   <none>           <none>

因为controller采用DaemonSet模式,所以集群每个节点都起一个pod,master节点有taint,所以master节点没有pod

三、案例

需求:一个或多个特定的node上只运行ingress(污点+标签+ds)

  1. 打污点,给node打上污点,防止其他pod运行在此node上
  2. 给ingress打上污点容忍,允许pod可以运行在污点node上
  3. 使用nodeSelector,将ingress调度到污点node
  4. 使用DaemonSet控制器,控制每个污点node上都运行一个ingress

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

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

相关文章

SIG Mesh协议学习

1. 简介 Bluetooth SIG组织在2017年7月17日发布了蓝牙Mesh标准. 蓝牙Mesh不同于传统Bluetooth Low Energy(BLE)协议的1对1, 1对多的通信方式, 它实现了多对多的通信. 这使得mesh网络中的各个节点之间可以相互通信. 蓝牙Mesh协议建立在BLE的物理层和链路层之上, 也就是说它可以…

MachXO2系列 FPGA LCMXO2-7000HC-4TG144C-可编程逻辑器件介绍

莱迪思深力科MachXO2系列LCMXO2-7000HC-4TG144C是高度可配置的串行逻辑器件&#xff08;PLD&#xff09;&#xff0c;具有低误差&#xff0c;具有和高系统集成等特性。MachXO2系列逻辑密度增加了3倍&#xff0c;嵌入存储增加了10倍&#xff0c;静态降低100倍&#xff0c;而成本…

动态获取项目根目录的两种方式

说明&#xff1a;如果项目上传的文件是存储在本地的&#xff0c;为了项目可以在其他电脑上也可能正常运行&#xff0c;可以将文件上传至项目的static文件夹里&#xff0c;并将文件路径保存至数据库中&#xff0c;前端显示时使用也可以通过该路径访问。要想获取到本地项目static…

如何评估大型语言模型(LLM)?

编者按&#xff1a;近期几乎每隔一段时间&#xff0c;就有新的大语言模型发布&#xff0c;但是当下仍然没有一个通用的标准来评估这些大型语言模型的质量&#xff0c;我们急需一个可靠的、综合的LLM评估框架。 本文说明了为什么我们需要一个全面的大模型评估框架&#xff0c;并…

DOCker安装(一)

DOCker的安装 1、简介 Docker使用客户端-服务器(C/S)架构模式&#xff0c;使用远程API来管理和创建Docker容器。 Docker容器通过Docker镜像来创建。 容器之间互不干扰 容器与镜像的关系类似于面向对象编程中的对象与类。 对象->容器 镜像->类 通过镜像来创建容器 …

如何用MarkDown轻松排版和格式化文档?

前言 大家好哦&#xff01;我写作用的语言是MarkDown&#xff0c;真的非常好用&#xff0c;在本文中我将一字字的教你如何使用这个轻量化&#xff0c;容易上手的轻标记语言。 1. 什么是MarkDown MarkDown是一种轻量级的标记语言&#xff0c;它可以在文本中通过简单的标记实现…

基于Java+SpringBoot+Vue+uniapp微信小程序实现仓储管理系统

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

OpenHarmony端云一体化应用开发快速入门练习(上)基础配置

一 、整体说明 SDK版本更新说明 二、开发流程 集成SDK &#xff08;一&#xff09;前提条件 安装HUAWEI DevEco Studio 3.1及以上版本&#xff0c;配置 SDK API Version 9及以上&#xff0c;Compile SDK Version 9及以上&#xff0c;Compatible SDK Version 9及以上。 &#…

mpi实现矩阵乘法,卷积,池化(gemm,covn,pooling)

矩阵乘法&#xff1a; 卷积&#xff1a; 池化&#xff1a; Mpi基本原理&#xff1a; 1.什么是MPI Massage Passing Interface:是消息传递函数库的标准规范&#xff0c;由MPI论坛开发。 一种新的库描述&#xff0c;不是一种语言。共有上百个函数调用接口&#xff0c;提供与C和F…

【Rust日报】2023-06-16 Rust在Stack Overflow上连续8年成为最受欢迎语言(文末有彩蛋)...

推荐23个Rust Top开源项目 根据LibHunt网站Rust主题下有关统计&#xff0c;这里列出前5个Rust Top开源项目&#xff1a;deno、rust、tauri、alacritty、rustdesk。 阅读更多&#xff1a;Top 23 Rust Open-Source Projects https://www.libhunt.com/topic/rust Tweets&#xff1…

微信小程序触底加载scroll-view

微信小程序触底加载 scroll-view 了解什么是触底加载&#xff1f; 需求&#xff1a;有个固定高度的容器&#xff0c;实现容器里面的内容触底加载 1、内容盒子的高度 2、盒子里内容的总高度 3、滚动条的scrollTop 触底加载的原理就是 当里面的容器触底的时候进行分页&#xff0…

【题解】[ABC306G] Return to 1(数论)

【题解】[ABC306G] Return to 1 题目链接 ABC306G - Return to 1 题意概述 本题多测&#xff0c;\(T\) 组数据。 对于每组数据&#xff0c;给定一个 \(n\) 个点 \(m\) 条边的有向图&#xff0c;无重边自环。 问从顶点 \(1\) 出发&#xff0c;能否恰好走 \({10^{10}}^{100}\) 步…

【八大排序(七)】归并排序初级篇-递归版

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:八大排序专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习排序知识   &#x1f51d;&#x1f51d; 归并排序 1. 前言2. 归并排序基本思路3. …

在数组中各位置上计算该位置以前所有元素的累加结果(Nan值视为0)numpy.nancumsum()

【小白从小学Python、C、Java】 【等级考试500强双证书考研】 【Python-数据分析】 在数组中各位置上计算该位置以前 所有元素的累加结果&#xff08;Nan值视为0&#xff09; numpy.nancumsum() [太阳]选择题 以下说法错误的是&#xff1a; import numpy as np a np.array([[n…

使用兮克 2.5G 交换机将北京联通 EPON 改为 ODI 猫棒接入

使用兮克 2.5G 交换机将北京联通 EPON 改为 ODI 猫棒接入 最近入手了兮克2.5G交换机&#xff08;兮克SKS1200-8GPY1XF&#xff09;&#xff0c;有 8 个 2.5G 电口和 1 个 10G SFP 光口&#xff1b;支持多种组网模式&#xff0c;其中一种是支持使用猫棒接入&#xff0c;由路由器…

聊聊微服务到底该如何划分

背景 现在动不动就是微服务架构&#xff0c;但是微服务划分的合理与否会极大的影响开发过程中的复杂度&#xff0c;划分的重要性不言而喻&#xff0c;但是在微服务划分这条路上并没有银弹&#xff0c;有的说DDD可以解决微服务的划分问题&#xff0c;吕哥想说的是那只是理论上的…

Linux常用命令——gcc命令

在线Linux命令查询工具 gcc 基于C/C的编译器 补充说明 gcc命令使用GNU推出的基于C/C的编译器&#xff0c;是开放源代码领域应用最广泛的编译器&#xff0c;具有功能强大&#xff0c;编译代码支持性能优化等特点。现在很多程序员都应用GCC&#xff0c;怎样才能更好的应用GCC…

Linux---上传和下载、压缩和解压

1. 上传下载 可以通过FinalShell工具&#xff0c;方便的和虚拟机进行数据交换。 在FinalShell软件的下方窗体中&#xff0c;提供了Linux的文件系统视图&#xff0c;可以方便的&#xff1a; 浏览文件系统&#xff0c;找到合适的文件&#xff0c;右键点击下载&#xff0c;即可…

STL中set与map介绍

目录 一. 键值对1. 关联式容器2. pair3. 应用场景 二. set1. set的介绍2. set的使用3. multiset的介绍 三. map1. map的介绍2. map的使用3. multimap的介绍 一. 键值对 ​ 用来表示具有一一对应关系的一种结构&#xff0c;该结构中一般只包含两个成员变量key和value。key代表键…

Draw.io 高阶用法

drawio是一款非常不错画流程图的软件&#xff0c;而且是免费的&#xff0c;但大部分图形以2D为主&#xff0c;有时候 却需要一些3D效果来增强方案 举个例子&#xff1a; 需要变成这样&#xff0c;看起来更3D 方法&#xff1a; 先拖入一个圆形&#xff0c;把限制比例去掉&a…