Kubelet 认证
当我们执行kubectl exec -it pod [podName] sh
命令时,apiserver会向kubelet发起API请求。也就是说,kubelet会提供HTTP服务,而为了安全,kubelet必须提供HTTPS服务,且还要提供一定的认证与授权机制,防止任何知道kubelet端口的人都能访问它的API。
kubelet 认证
默认情况下,没有携带身份凭证的匿名请求会被认证为用户system:anonymous
以及组system:unauthenticated
。如果要拒绝将匿名请求认证为以上的用户与组,配置kubelet的如下启动参数,那么匿名请求就会认证失败
--anonymous-auth=false
kubelet的认证方法与apiserver相似,有client证书认证及token认证。
要开启client证书认证:
- 配置kubelet的启动参数
--client-ca-file
,用来校验client证书
kubelet 授权
kubelet的默认授权模式为AlwaysAllow
,所有通过认证的请求(包括通过认证的匿名请求)有权限访问kubelet所有的API。这显然是不合理的,所以我们需要像apiserver那样对不同的请求赋予不同的权限。
kubelet可以通过如下的方法把授权委托给apiserver:
- 在apiserver中开启
authorization.k8s.io/v1beta1
这个API组 - 配置kubelet的启动参数
--authorization-mode=Webhook
以及--kubeconfig
- 然后kubelet就会通过apiserver的
SubjectAccessReview
API来决定是否给每一个请求授权
kubelet与apiserver的资源映射
kubelet与apiserver的API不一样,当访问kubelet的API时,kubelet需要把这个API映射到apiserver的API,apiserver才知道该授予怎样的权限。kubelet与apiserver的资源映射如下。比如A用户访问kubelet的Get /healthz
,那么会映射为apiserver的Get /api/v1//nodes/<kubelet-name>/proxy
,然后kubelet会通过apiserver的SubjectAccessReview
判断A用户是否有权限访问apiserver对应的API
Apiserver访问kubelet
在kubeadm安装方法中,apiserver要访问kubelet的API,会携带一个client证书,这个证书由apiserver的启动参数--kubelet-client-certificate
和--kubelet-client-key
指定。kubeadm为apiserver生成的client证书中的域名为与组织分别为CN=kube-apiserver-kubelet-client
、O=system:masters
。
当apiserver携带这个证书去访问kubelet时,就会被认证为上面的用户与组,然后apiserver访问kubelet,检测这个用户与组的权限。kubeadm会在集群中为这个用户与组建立如下的ClusterRole与ClusterRoleBinding。可以看出,system:masters
这个组拥有所有的权限
cat kube-apiserver.yaml - --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt- --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: cluster-admin
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.iokind: Groupname: system:masters
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: cluster-admin
rules:
- apiGroups:- '*'resources:- '*'verbs:- '*'
- nonResourceURLs:- '*'verbs:- '*'
kubelet TLS私钥与证书
kubelet要提供HTTPS服务,那么它需要一个私钥和一个签名证书。我们可以通过kubelet的启动参数--tls-cert-file
与--tls-cert-private-key
来指定。如果这两个参数没有指定,那么kubelet会生成一个自签名证书,放在--cert-dir
目录(默认/var/lib/kubelet/pki
),自签名证书的名字为kubelet.key、kubelet.crt:
$ ls -lh /var/lib/kubelet/pki
-rw-------. 1 root root 2.8K Mar 10 11:26 kubelet-client-2023-03-10-11-26-25.pem
lrwxrwxrwx. 1 root root 59 Mar 10 11:26 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2023-03-10-11-26-25.pem
-rw-r--r--. 1 root root 2.2K Mar 10 11:26 kubelet.crt
-rw-------. 1 root root 1.7K Mar 10 11:26 kubelet.key
我们查看kubelet.crt的Issure与Subject,可以发现是一样的(即自签名),就为主机名加一个数字后缀,DNS中有一个记录就为主机名:
$ openssl x509 -text -in /var/lib/kubelet/pki/kubelet.crt
Certificate:Data:Version: 3 (0x2)Serial Number: 2 (0x2)Signature Algorithm: sha256WithRSAEncryptionIssuer: CN=kata02-ca@1678418785ValidityNot Before: Mar 10 02:26:24 2023 GMTNot After : Mar 9 02:26:24 2024 GMTSubject: CN=kata02@1678418785Subject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (2048 bit)Modulus:...Exponent: 65537 (0x10001)X509v3 extensions:X509v3 Key Usage: criticalDigital Signature, Key EnciphermentX509v3 Extended Key Usage: TLS Web Server AuthenticationX509v3 Basic Constraints: criticalCA:FALSEX509v3 Authority Key Identifier: keyid:C4:7A:AD:CC:65:73:17:07:3B:69:3A:C9:B7:53:EE:0C:CC:04:07:7CX509v3 Subject Alternative Name: DNS:kata02
...
我们可以查看kubelet的源码,也可以确定,就是自签名的一个证书:
由于kubelet默认情况下用的就是自签名证书,所以kube-apiserver在连接kubelet时(比如kubectl logs),并不会校验kubelet.crt证书。
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/9a188afd882d07512b73d1da3486e92c.png)
Kubelet 认证
当我们执行kubectl exec -it pod [podName] sh命令时,apiserver会向kubelet发起API请求。也就是说,kubelet会提供HTTP服务,而为了安全,kubelet必须提供HTTPS服务,且还要提供一定的认证与授权机制,防止任何知…...
![](https://www.ngui.cc/images/no-images.jpg)
aws slb
NLB 目标组 Target is in an Availability Zone that is not enabled for the load balancer 解决: https://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/network/load-balancer-troubleshooting.html 负载均衡器添加 后端EC2 所在的vpc网段即可。…...
![](https://www.ngui.cc/images/no-images.jpg)
【AI大模型】ChatGPT-4 对比 ChatGPT-3.5:有哪些优势
引言 ChatGPT4相比于ChatGPT3.5,有着诸多不可比拟的优势,比如图片生成、图片内容解析、GPTS开发、更智能的语言理解能力等,但是在国内使用GPT4存在网络及充值障碍等问题,如果您对ChatGPT4.0感兴趣,可以私信博主为您解决账号和环境…...
![](https://i-blog.csdnimg.cn/direct/96df26c01f194ce18be582911ab78c7a.png)
详解yolov5的网络结构
转载自文章 网络结构图(简易版和详细版) 此图是博主的老师,杜老师的图 网络框架介绍 前言: YOLOv5是一种基于轻量级卷积神经网络(CNN)的目标检测算法,整体可以分为三个部分, ba…...
![](https://img-blog.csdnimg.cn/img_convert/aa152f0bc9e40ddeb6780ed28c21a15f.jpeg)
汽车零配件行业看板管理系统应用
生产制造已经走向了精益生产,计算时效产出、物料周转时间等问题,成为每一个制造企业要面临的问题,工厂更需要加快自动化,信息化,数字化的布局和应用。 之前的文章多次讲解了企业MES管理系统,本篇文章就为大…...
![](https://i-blog.csdnimg.cn/direct/0ea19f49ed714593a13b94425ef17fb6.png)
【Go】函数的使用
目录 函数返回多个值 init函数和import init函数 main函数 函数的参数 值传递 引用传递(指针) 函数返回多个值 用法如下: package mainimport ("fmt""strconv" )// 返回多个返回值,无参数名 func Mu…...
![](https://i-blog.csdnimg.cn/direct/95a36d449b3c4c2c816fa3a5fd7afe74.png#pic_center)
宝塔面板运行Admin.net框架
准备 宝塔安装 .netcore安装 Admin.net框架发布 宝塔面板设置 完结撒花 1.准备 服务器/虚拟机一台 系统Windows server / Ubuntu20.04(本贴使用的是Ubuntu20.04版本系统) Admin.net开发框架 先安装好服务器系统,这里就不做安装过程描述了&…...
![](https://img-blog.csdnimg.cn/img_convert/77bc5174feef3fd1e698198f7e35cf55.png)
Javaweb11-Filter过滤器
Filter过滤器 1.Filter的基本概念: 在Java Servlet中,Filter接口是用来处理HttpServletRequest和HttpServletResponse的对象的过滤器。主要用途是在请求到达Servlet之前或者响应离开Servlet之前对请求或响应进行预处理或后处理。 2.Filter常见的API F…...
![](https://www.ngui.cc/images/no-images.jpg)
【AI-7】CUDA
CUDA(Compute Unified Device Architecture)是NVIDIA公司开发的一种并行计算平台和编程模型,使开发者能够利用NVIDIA GPU的强大计算能力来加速各种应用。以下是关于CUDA的详细介绍: CUDA的特点 并行计算:CUDA允许开发…...
![](https://i-blog.csdnimg.cn/direct/6de32a9ea8a1432b8efa0684aada9406.png)
ctfshow-web入门-文件上传(web164、web165)图片二次渲染绕过
web164 和 web165 的利用点都是二次渲染,一个是 png,一个是 jpg 目录 1、web164 2、web165 二次渲染: 网站服务器会对上传的图片进行二次处理,对文件内容进行替换更新,根据原有图片生成一个新的图片,这样…...
![](https://www.ngui.cc/images/no-images.jpg)
基于实现Runnable接口的java多线程
Java多线程通常可以通过继承Thread类或者实现Runnable接口实现。本文主要介绍实现Runnable接口的java多线程的方法, 并通过ThreadPoolTaskExecutor调用执行,以及应用场景。 一、应用场景 异步、并行、子任务、磁盘读写、数据库查询、网络请求等耗时操作等。 以下…...
![](https://www.ngui.cc/images/no-images.jpg)
如何在uniapp中使用websocket?
websocket是我们经常使用到的接口,通常用于即时通讯以及K线图这种需要实时更新数据的业务需求上,传统的restful接口虽然可以满足,但是你需要轮询,这就要额外写一堆代码,不是很方便,用websocket就简单很多,我们来看代码 第一步定义全局常量、变量 const config = {host…...
![](https://www.ngui.cc/images/no-images.jpg)
PCL 点云PFH特征描述子
点云PFH特征描述子 一、概述1.1 概念1.2 算法原理二、代码实现三、结果示例一、概述 1.1 概念 点特征直方图PFH(Point Feature Histograms)描述子:用于表示点云中每个点的局部几何形状信息,它是一种直方图描述子,包括了点云的法线方向和曲率信息,PFH描述子可以帮助区分不同…...
![](https://www.ngui.cc/images/no-images.jpg)
linux程序安装-编译-rpm-yum
编译安装流程步骤详解 识途老码 | Linux编译安装程序 编译安装概览 编译安装是从软件的源代码构建到最终安装的过程,它允许用户根据自身的需求和系统的环境来自定义软件的配置和功能。相对于二进制安装,编译安装提供了更高的灵活性和控制能力,但同时也要求用户具备一定的…...
![](https://www.ngui.cc/images/no-images.jpg)
【网络协议】PIM
PIM 1 基本概念 PIM(Protocol Independent Multicast)协议,即协议无关组播协议,是一种组播路由协议,其特点是不依赖于某一特定的单播路由协议,而是可以利用任意单播路由协议建立的单播路由表完成RPF&…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis 中的跳跃表(Skiplist)基本介绍
Redis 中的跳跃表(Skiplist)是一种用于有序元素集合的快速查找数据结构。它通过一个多级索引来提高搜索效率,能够在对数时间复杂度内完成查找、插入和删除操作。跳跃表特别适用于实现有序集合(sorted set)的功能&#…...
![](https://i-blog.csdnimg.cn/direct/82ac04d4f4a4458b85292de87304a729.png)
C语言编译和编译预处理
1.编译预处理 • 编译是指把高级语言编写的源程序翻译成计算机可识别的二进制程序(目标程序)的过程,它由编译程序完成。 • 编译预处理是指在编译之前所作的处理工作,它由编译预处理程序完成 在对一个源程序进行编译时࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
ahb 总线的一些思考
1. 如何处理对不存在地址的访问? 当主设备试图访问内存映射中不存在的地址时,系统需要处理这一情况以避免错误或未定义行为。通常通过使用默认从设备或错误响应机制来管理。具体如下: 默认从设备:默认从设备响应对未定义或不存在…...
![](https://img-blog.csdnimg.cn/img_convert/062811de8e79e3cccf0ef3be9141bc09.png)
spark shuffle写操作——SortShuffleWriter
写入的简单流程: 1.生成ExternalSorter对象 2.将消息都是插入ExternalSorter对象中 3.获取到mapOutputWriter,将中间产生的临时文件合并到一个临时文件 4.生成最后的data文件和index文件 可以看到写入的重点类是ExternalSorter对象 ExternalSorter 基…...
![](https://i-blog.csdnimg.cn/direct/055bdef5e43549099e54655538d1eb91.jpeg)
ESP32CAM物联网教学12
ESP32CAM物联网教学12 MicroPython 视频服务 小智希望能在MicroPython中实现摄像头的视频服务,就像官方示例程序CameraWebServer那样。 下载视频服务驱动库 小智通过上网搜索,发现相关的教学材料还不少,并且知道有人已经写出了视频服务的驱…...
![](https://www.ngui.cc/images/no-images.jpg)
【C++精华铺】12.STL list模拟实现
1.序言 STL (Standard Template Library)是C标准库中的一个重要组件,提供了许多通用的数据结构和算法。其中,STL list是一种带头双向链表容器,可以存储任意类型的元素。 list的特点包括: 双向性:list中的元素可以根据需…...
![](https://i-blog.csdnimg.cn/direct/dca89cce5c8e46e7bcb3367fb4655b18.png)
ChatGPT Mac App 发布!
2024 年 6 月,OpenAI 的大语言模型 ChatGPT 的 Mac 客户端与 ChatGPT-4o 一起发布了。ChatGPT Mac 户端可以让用户直接在 Mac 电脑上使用 ChatGPT 进行对话。它提供了一个简单易用的用户界面,用户可以在其中输入文本或语音指令,并接收模型生成…...
![](https://www.ngui.cc/images/no-images.jpg)
ACE之ACE_Time_Value
简介 ACE_Time_Value在ACE中表示时间,集成不同平台的时间 结构 #mermaid-svg-dGoKn1R7GicabUif {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dGoKn1R7GicabUif .error-icon{fill:#552222;}#mermaid-…...
![](https://www.ngui.cc/images/no-images.jpg)
[论文笔记] 自对齐指令反翻译:SELF-ALIGNMENT WITH INSTRUCTION BACKTRANSLATION
https://arxiv.org/pdf/2308.06259 这篇论文介绍了一种名为“指令反向翻译”(instruction backtranslation)的方法,用于通过自动标记人类书写的文本和相应的指令来构建高质量的指令跟随语言模型。这里是一个通俗易懂的解释: 一、背景 通常,训练一个高质量的指令跟随语言…...
![](https://www.ngui.cc/images/no-images.jpg)
算术运算符. 二
# 表达式 # 操作数和运算符组成 比如 11 # 作用:表达式可以求值,也可以给变量赋值。 # Python算术运算符: # - * / % //(整除:向下取整) ** print(10 4) # 14 print(10 - 4) # 6 print(10 * 4) # 40 …...
![](https://www.ngui.cc/images/no-images.jpg)
代码优化方法记录
每次代码 review 之后,对 review 的情况进行总结记录,产出实际经验,方便组内学习、分享。 1、提取公共内容 公共内容要提取,避免重复编写; 2、css 色值使用变量 css 中的色值、字体,都换成组件库中的变…...
![](https://www.ngui.cc/images/no-images.jpg)
qt 图形、图像、3D相关知识
1.qt 支持3d吗 Qt确实支持3D图形渲染。Qt 3D模块是Qt的一个组成部分,它允许开发者在Qt应用程序中集成3D内容。Qt 3D模块提供了一组类和函数,用于创建和渲染3D场景、处理3D对象、应用光照和纹理等。 Qt 3D模块包括以下几个主要组件: Qt 3D …...
![](https://i-blog.csdnimg.cn/direct/b784011cc977421498f08d7b703fcf46.png)
【逆向基础】十、工具分享之DIE(Detect It Easy)
一、简介 DIE(Detect It Easy)是一款可以轻松检测PE文件的程序;其主要作用是查壳,并将pe文件的内容解析出来,包括PE文件中包含的导入函数、导出函数的名称及地址,入口函数地址等,是技术人员分析…...
![](https://www.ngui.cc/images/no-images.jpg)
Netcat:——网络瑞士军刀
Netcat: 网络瑞士军刀 概述 Netcat(通常称为 nc)是一个功能强大的网络工具,广泛用于网络测试和调试。它能够读取和写入网络数据,支持TCP、UDP协议,可以用于端口扫描、端口监听、文件传输等多种用途。 主要用途 获取…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ //练习 14.50 在初始化ex1和ex2的过程中,可能用到哪些类类型的转换序列呢?说明初始化是否正确并解释原因。
C Primer(第5版) 练习 14.50 练习 14.50 在初始化ex1和ex2的过程中,可能用到哪些类类型的转换序列呢?说明初始化是否正确并解释原因。 struct LongDouble{LongDouble(double 0.0);operator double();operator float(); }; Long…...
![](/images/no-images.jpg)
企业的网站建设文章/关键词挖掘工具免费
高考考生即将迎来填报志愿环节,也是教育骗局最猖獗之时。个人信息泄露,早就不是新鲜事。但值得关注的是,随着移动互联技术的快速发展,信息泄露已呈全方位态势。 日前,广东省教育厅发布《广东省普通高等学校一览表》&am…...
![](/images/no-images.jpg)
哪些网站用django做的/扬州seo
?数据库基础数据库:保存有组织的数据的容器表:某种特定类型数据的结构化清单列:表中的一个字段数据类型:所容许的数据的类型行:表中的一个记录主键:一列,其值能够唯一区分表中每个行SQL是结构化…...
![](https://images2015.cnblogs.com/blog/418763/201509/418763-20150916223133742-1527411660.png)
网页设计与制作用什么软件做/上海专业的seo推广咨询电话
testng执行case failed ,testng Listener会捕获执行失败,如果要实现失败自动截图,需要重写Listener的onTestFailure方法 那么首先新建一个Listener 类,继承TestListenerAdapter package com.dbyl.libarary.utils;import org.openq…...
![](http://www.gec-edu.org/Uploads/201811/5bf8eb1d358ae.jpg)
c 可以做网站嘛/链接搜索
我们为什么要学习Python编程语言?原因很简单,Python有很多吸引程序员的功能,它易学,面向对象,字节码编译,免费且开源。现在信息更新的非常快速,又迎来了大数据的时代,各行各业如果不…...
![](https://img-blog.csdnimg.cn/img_convert/6b03fabf3fb64be908141a1e120b5783.png)
织梦移动端网站怎么做/今日国际新闻
首先我们要知道,模板,是什么?模板就是别人做好了的工程文件,所以东西都已经完成,不需要任何效果方面的修改了。那么ae模板怎么套用?就是你用的时候,替换、修改或者删去某些东西,变成…...
![](https://img-blog.csdnimg.cn/img_convert/5365cde40d4ad4e13de76ab3c8156bc5.png)
有啥方法下载wordpress主题/百度竞价推广方案范文
引言:邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。【历史文章汇总】请点击此处【必读文章】:【邢不行|量化小讲堂系列27-Python量化入门】EOS期现套利&…...