k8s 1.28 聚合层部署信息记录
–requestheader-client-ca-file=
–requestheader-allowed-names=front-proxy-client
–requestheader-extra-headers-prefix=X-Remote-Extra-
–requestheader-group-headers=X-Remote-Group
–requestheader-username-headers=X-Remote-User
–proxy-client-cert-file=
–proxy-client-key-file=
允许聚合层使用apiserver的参数配置
–requestheader-allowed-names=aggregator
–requestheader-client-ca-file=/etc/kubernetes/ssl/ca.pem
–requestheader-extra-header-prefix=X-Remote-Extra-
–requestheader-group-headers=X-Remote-Group
–requestheader-username-headers=X-Remote-User
–proxy-client-cert-file=/etc/kubernetes/ssl/metrics-server.pem
–proxy-client-key-file=/etc/kubernetes/ssl/metrics-server-key.pem
#如果没有在运行api服务器的主机上运行kube-proxy,则需要运行此项。
–enable-aggregator-routing=true
–proxy-client-key-file
–proxy-client-cert-file
–requestheader-client-ca-file
–requestheader-allowed-names
K8s Aggregation Layer 的要求
通过 --proxy-client-key-file 指定私钥文件
通过 --proxy-client-cert-file 指定签名客户端证书文件
通过 --requestheader-client-ca-file 指定签署客户端证书文件的 CA 的证书
通过 --requestheader-allowed-names 指定签名客户端证书中的有效通用名称值 (CNs),如果该值为"",为空,则任何CN名称都是可以接收的
Kubernetes apiserver 将使用 --proxy-client-*-file 指定的文件来对扩展 apiserver 进行身份验证。为了使请求被合规的扩展 apiserver 视为有效,必须满足以下条件:
连接必须使用由 --requestheader-client-ca-file 中的 CA 签署的客户端证书进行。
连接必须使用其 CN 是 --requestheader-allowed-names 中列出的名称之一的客户端证书进行。
注意:您可以将此选项设置为空,如 --requestheader-allowed-names=“”。这将向扩展 apiserver 指示任何 CN 都是可以接受的。
当使用这些选项启动时,Kubernetes apiserver 将会:
使用它们对扩展 apiserver 进行身份验证。
在 kube-system 命名空间中创建一个名为 extension-apiserver-authentication 的 configmap,在其中放置 CA 证书和允许的 CN。这些信息可以被扩展 apiservers 用于验证请求。
请注意,Kubernetes apiserver 使用相同的客户端证书对所有扩展 apiservers 进行身份验证。它不会为每个扩展 apiserver 创建一个客户端证书,而是创建一个用于作为 Kubernetes apiserver 进行身份验证的单一客户端证书。这个证书在所有扩展 apiserver 请求中重复使用。
原始请求的用户名和组
当 Kubernetes apiserver 将请求代理到扩展 apiserver 时,它会通知扩展 apiserver 原始请求成功身份验证的用户名和组。它通过代理请求的 HTTP 头部提供这些信息。你必须告知 Kubernetes apiserver 要使用的头部名称。
通过 --requestheader-username-headers 存储用户名的头部
通过 --requestheader-group-headers 存储组的头部
通过 --requestheader-extra-headers-prefix 附加到所有额外头部的前缀
这些头部名称也被放置在 extension-apiserver-authentication configmap 中,以便扩展 apiservers 可以检索和使用。
CA 重用和冲突
Kubernetes apiserver 有两个客户端 CA 选项:
–client-ca-file
–requestheader-client-ca-file
这两个选项是独立工作的,如果使用不当,可能会互相冲突。
–client-ca-file:当请求到达 Kubernetes apiserver 时,如果启用了此选项,Kubernetes apiserver 将检查请求的证书。如果该证书是由 --client-ca-file 所引用文件中的 CA 证书之一签署的,则该请求被视为合法请求,用户的值为公用名称 CN=,组则为组织 O=。请参阅有关 TLS 身份验证的文档。
–requestheader-client-ca-file:当请求到达 Kubernetes apiserver 时,如果启用了此选项,Kubernetes apiserver 将检查请求的证书。如果该证书是由 --requestheader-client-ca-file 所引用文件中的 CA 证书之一签署的,则该请求被视为潜在的合法请求。随后,Kubernetes apiserver 会检查公用名称 CN= 是否在 --requestheader-allowed-names 提供的名称列表中。如果该名称被允许,则请求被批准;如果不被允许,则请求不被批准。
如果同时提供 --client-ca-file 和 --requestheader-client-ca-file,则请求首先检查 --requestheader-client-ca-file 的 CA,然后再检查 --client-ca-file。通常,这两个选项会使用不同的 CA,可能是根 CA 或中间 CA;常规客户端请求与 --client-ca-file 匹配,而聚合请求则与 --requestheader-client-ca-file 匹配。然而,如果两者使用相同的 CA,那么通常会通过 --client-ca-file 通过的客户端请求将失败,因为 CA 将匹配 --requestheader-client-ca-file 中的 CA,但公用名称 CN= 将不会与 --requestheader-allowed-names 中的一个可接受公用名称匹配。这可能导致您的 kubelet 和其他控制平面组件,以及最终用户无法认证到 Kubernetes apiserver。
因此,对于 --client-ca-file 选项(用于授权控制平面组件和最终用户)和 --requestheader-client-ca-file 选项(用于授权聚合 apiserver 请求),请使用不同的 CA 证书。
不认证kubelet的ssl证书:
–kubelet-insecure-tls
非安全的认证方式,一般不推荐,测试环境可以:
kubelet:
anonymousAuth: true
authorizationMode: AlwaysAllow
安全认证的方式,生成环境kubelet配置方式:
kubelet:
anonymousAuth: false
authenticationTokenWebhook: true #必须开启
authorizationMode: Webhook
相关文章:
k8s 1.28 聚合层部署信息记录
–requestheader-client-ca-file –requestheader-allowed-namesfront-proxy-client –requestheader-extra-headers-prefixX-Remote-Extra- –requestheader-group-headersX-Remote-Group –requestheader-username-headersX-Remote-User –proxy-client-cert-file –proxy-cl…...
自由学习记录(25)
只要有修改,子表就不用元表的参数了,用自己的参数(只不过和元表里的那个同名) 子表用__index“继承”了父表的值,此时子表仍然是空表 一定是创建这样一个同名的变量在原本空空的子表里, 传参要传具体的变…...
关于函数式接口和编程的解析和案例实战
文章目录 匿名内部类“匿名”在哪里 函数式编程lambda表达式的条件Supplier使用示例 ConsumeracceptandThen使用场景 FunctionalBiFunctionalTriFunctional 匿名内部类 匿名内部类的学习和使用是实现lambda表达式和函数式编程的基础。是想一下,我们在使用接口中的方…...
Linux 僵尸进程和孤儿进程, 进程优先级
僵尸进程 之间在进程状态中了解到了 "僵尸状态". 那么处于僵尸状态的进程就是僵尸进程. 僵尸状态是一种特殊的进程状态, 它表示一个进程已经完成执行, 但其父进程尚未回收其终止状态. "僵尸状态" 的本质就是死亡状态. 如何理解僵尸进程: 举个例子: 一个正…...
爬虫笔记24——纷玩岛自动抢票脚本笔记
纷玩岛自动抢票,协议抢票思路实现 一、获取Authorization凭证二、几个关键的参数三、几个关键的接口获取参数v,这个参数其实可以写死,可忽略通过价位获取演出的参数信息获取观演人信息,账号提前录入即可提交订单接口 先看实现图&a…...
《白帽子讲Web安全》15-16章
《白帽子讲Web安全》15-16章 《白帽子讲Web安全》15章15、Web Server配置安全15.1、Apache安全15.2、Nginx安全15.3、jBoss远程命令执行15.4、Tomcat远程命令执行15.5、HTTP Parameter Pollution15.6、小结 第四篇 互联网公司运营安全《白帽子讲Web安全》16章16、互联网业务安全…...
计算机毕业设计Python+LSTM天气预测系统 AI大模型问答 vue.js 可视化大屏 机器学习 深度学习 Hadoop Spark
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
大语言模型压缩技术;推理优化技术;SparseGPT算法;GPTQ算法
目录 大语言模型落地的成本、效率与效果 模型压缩技术 推理优化技术 SparseGPT算法 GPTQ算法 大语言模型落地的成本、效率与效果 模型压缩技术 模型压缩技术是大语言模型轻量化的关键。介绍了多种模型压缩方法,其中权重量化和模型稀疏化是两种主要的技术。 权重量化:权重…...
Facebook的开源项目解析:推动开发者社区的技术进步
Facebook,作为全球领先的社交平台之一,其在技术领域的创新不仅体现在产品功能的实现上,也积极推动开源社区的发展。开源项目已经成为Facebook技术战略的重要组成部分,通过开源,Facebook不仅加速了技术进步,…...
力扣--LCR 149.彩灯装饰记录I
题目 代码 /** Definition for a binary tree node. public class TreeNode { int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left left;this.right ri…...
Rust SQLx CLI 同步迁移数据库
上文我们介绍了SQLx及SQLite,并介绍了如何使用代码同步迁移数据库。本文介绍Sqlx cli 命令行工具,介绍如何安装、使用,利用其提供的命令实现数据表同步迁移。Java生态中有flyway, sqlx cli 功能类似,利用命令行工具可以和其他语言…...
批量生成不同用户的pdf 文件(html样式)
技术 selenium thymeleaf itextpdf chromedriver 使用thymeleaf 将动态数据替换 使用selenium chromedriver 进行js ,css等逻辑运算后渲染视图 使用itextpdf 将html 转为pdf 文件 html模板 <!DOCTYPE html> <html xmlns:th"http://www.thymeleaf…...
混淆零碎知识点
minifyEnabled true //混淆开关 zipAlignEnabled true // Zipalign优化 shrinkResources true // 移除无用的resource文件 (必须要混淆开了之后才才可以设置为true) proguard-rules.pro 为混淆文件 //整个文件保留 不被混淆 -keep class com.cn…...
排序算法2
排序算法1-CSDN博客 排序算法1中提及的是较为基础(暴力实现,复杂度较高)的排序算法,不适合于数据量较大的场景,比如序列长度达到1e5 接下来以蓝桥另一道题目来理解其它的排序算法 蓝桥3226 蓝桥账户中心 样例 5 1 5 9 3 7 4、快速排序 快速排…...
【Web开发基础学习——corsheaders 应用的理解】
Web开发基础学习系列文章目录 第一章 基础知识学习之corsheaders 应用的理解 文章目录 Web开发基础学习系列文章目录前言一、使用1.1 安装1.2 配置 二、功能总结 前言 corsheaders 是一个 Django 第三方应用,用于处理跨域资源共享 (CORS)。CORS 是一种机制&#x…...
Redis和MySQL之间如何进行数据同步
原因 为什么要进行Redis和MySQL的数据同步? 性能优化:MySQL是关系型数据库,数据读取和存储相对复杂;Redis是内存数据库,读写速度极快,将热点数据存在Redis,可以大大提高系统的访问速度。 数据…...
css:转换
转换 移动 /* transform: translate(100px, 200px); */transform: translateX(100px);transform: translateY(100px); /*一个意思*/ 如果后面跟百分数的意思是移动盒子自身x/y方向长度的百分比,可以用作子绝父相控制盒子水平居中垂直居中 translate里的xy值是相对…...
状态管理与存储:Vuex 和 sessionStorage
1. sessionStorage 存储位置 sessionStorage 是浏览器提供的 Web Storage API 的一部分,用于在一个会话期间存储数据。数据保存在浏览器的 内存 中,而不是在硬盘上,且其生命周期仅限于当前浏览器标签页。数据在浏览器窗口或标签页关闭时会被…...
Redis和MySQL保持一致性的延迟双删(Delay Double Delete)策略
Redis和MySQL保持一致性的延迟双删(Delay Double Delete)策略,是一种在数据更新或删除时为了保证数据一致性而采取的方法。以下是延迟双删的过程和原理的详细解释: 一、过程 第一次删除缓存: 当需要更新数据库中的数据…...
快速理解微服务中Fegin的概念
一.由来 1.在传统的架构里面,我们是通过使用RestTemplate来访问其他的服务,但是这种方式就存在了一个很大的缺陷,也就是被调用方如果发生了服务的迁移(IP和端口发生了变化),那么调用方也需要同步的在代码里面进行修改,…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
