首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
join
typescript
python2
web
install
select
php5
int
dockerfile
vbscript
include
vba
md5
less
plugins
email
runtime
c语言
solr
blob
nodejs
subset
command
bytecode
settings
metadata
lua
replace
list
heap
shell
yaml
import
default
regex
cookie
timezone
instance
cPlusPlus
controller
go
eval
sum
input
tags
config
io
get
fetch
expression
actionscrip
main
httprequest
substring
testing
schema
python
byte
scala
express
search
format
node.js
heatmap
spring
copy
hash
emoji
python3
require
uml
future
random
flutter
cpython
httpclient
filter
golang
case
当前位置:
开发笔记
>
编程语言
> 正文
Kubernetes控制平面与节点之间的通信机制解析
作者:手机用户2502897397 | 来源:互联网 | 2024-11-11 21:38
本文深入解析了Kubernetes控制平面(特别是API服务器)与集群节点之间的通信机制,并对其通信路径进行了详细分类。旨在帮助用户更好地理解和定制其安装配置,从而增强网络安全性,确保集群的稳定运行。
对控制面节点(确切说是 apiserver)和 Kubernetes 集群之间的通信路径进行分类。目的是为了让用户能够自定义他们的安装,以实现对网络配置的加固,使得集群能够在不可信的网络上 (或者在一个云服务商完全公开的 IP 上)运行。
节点到控制面
Kubernetes 采用的是中心辐射型(Hub-and-Spoke)API 模式。所有从集群(或所运行的 Pods)发出的 API 调用都终止于 apiserver(其它控制面组件都没有被设计为可暴露远程服务)。apiserver 被配置为在一个安全的 HTTPS 端口(443)上监听远程连接请求, 并启用一种或多种形式的客户端身份认证机制。一种或多种客户端鉴权机制应该被启用, 特别是在允许使用匿名请求 或服务账号令牌的时候。
应该使用集群的公共根证书开通节点,这样它们就能够基于有效的客户端凭据安全地连接 apiserver。例如:在一个默认的 GCE 部署中,客户端凭据以客户端证书的形式提供给 kubelet。请查看 kubelet TLS 启动引导 以了解如何自动提供 kubelet 客户端证书。
想要连接到 apiserver 的 Pod 可以使用服务账号安全地进行连接。当 Pod 被实例化时,Kubernetes 自动把公共根证书和一个有效的持有者令牌注入到 Pod 里。kubernetes 服务(位于所有名字空间中)配置了一个虚拟 IP 地址,用于(通过 kube-proxy)转发 请求到 apiserver 的 HTTPS 末端。
控制面组件也通过安全端口与集群的 apiserver 通信。
这样,从集群节点和节点上运行的 Pod 到控制面的连接的缺省操作模式即是安全的,能够在不可信的网络或公网上运行
。
控制面到节点
从控制面(apiserver)到节点有两种主要的通信路径。第一种是从 apiserver 到集群中每个节点上运行的 kubelet 进程。第二种是从 apiserver 通过它的代理功能连接到任何节点、Pod 或者服务。
apiserver 到 kubelet
从 apiserver 到 kubelet 的连接用于:
获取 Pod 日志
挂接(通过 kubectl)到运行中的 Pod
提供 kubelet 的端口转发功能。
这些连接终止于 kubelet 的 HTTPS 末端。默认情况下,apiserver 不检查 kubelet 的服务证书。这使得此类连接容易受到中间人攻击, 在非受信网络或公开网络上运行也是 不安全的。
为了对这个连接进行认证,使用 --kubelet-certificate-authority 标志给 apiserver 提供一个根证书包,用于 kubelet 的服务证书。
如果无法实现这点,又要求避免在非受信网络或公共网络上进行连接,可在 apiserver 和 kubelet 之间使用 SSH 隧道。
最后,应该启用 Kubelet 用户认证和/或鉴权来保护 kubelet API。
apiserver 到节点、Pod 和服务
从 apiserver 到节点、Pod 或服务的连接默认为纯 HTTP 方式,因此既没有认证,也没有加密。这些连接可通过给 API URL 中的节点、Pod 或服务名称添加前缀 https: 来运行在安全的 HTTPS 连接上。不过这些连接既不会验证 HTTPS 末端提供的证书,也不会提供客户端证书。因此,虽然连接是加密的,仍无法提供任何完整性保证。这些连接 目前还不能安全地 在非受信网络或公共网络上运行。
SSH 隧道
Kubernetes 支持使用 SSH 隧道来保护从控制面到节点的通信路径。在这种配置下,apiserver 建立一个到集群中各节点的 SSH 隧道(连接到在 22 端口监听的 SSH 服务) 并通过这个隧道传输所有到 kubelet、节点、Pod 或服务的请求。这一隧道保证通信不会被暴露到集群节点所运行的网络之外。
SSH 隧道目前已被废弃。除非你了解个中细节,否则不应使用。Konnectivity 服务是对此通信通道的替代品。
Konnectivity 服务
在 Kubernetes v1.18 [beta] 中,作为 SSH 隧道的替代方案,Konnectivity 服务提供 TCP 层的代理,以便支持从控制面到集群的通信。Konnectivity 服务包含两个部分:Konnectivity 服务器和 Konnectivity 代理,分别运行在 控制面网络和节点网络中。Konnectivity 代理建立并维持到 Konnectivity 服务器的网络连接。启用 Konnectivity 服务之后,所有控制面到节点的通信都通过这些连接传输。
数据库
api
server
ip
安全
https
注入
日志
kubectl
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
int
深入理解 SQL 视图、存储过程与事务
本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ...
[详细]
蜡笔小新 2024-12-27 17:40:42
int
网络链路质量监控:Smokeping部署与配置
本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ...
[详细]
蜡笔小新 2024-12-27 19:31:05
list
数据库内核开发入门 | 搭建研发环境的初步指南
本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ...
[详细]
蜡笔小新 2024-12-27 16:38:48
list
DB2 数据库编目管理:创建与删除
本文介绍了如何在 DB2 环境中创建和删除数据库编目。创建编目是连接新数据库的必要步骤,涉及获取数据库连接信息、使用命令行工具进行配置,并验证连接的有效性。删除编目则用于移除不再需要的数据库连接。 ...
[详细]
蜡笔小新 2024-12-28 11:43:05
heap
优化ListView性能
本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ...
[详细]
蜡笔小新 2024-12-28 10:36:30
metadata
数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ...
[详细]
蜡笔小新 2024-12-27 18:29:55
int
Linux 自动化安装脚本详解
本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ...
[详细]
蜡笔小新 2024-12-27 16:33:32
list
Akka BackoffSupervisor的深入解析与实践
本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ...
[详细]
蜡笔小新 2024-12-27 15:04:09
list
在Linux系统中配置并启动ActiveMQ
本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ...
[详细]
蜡笔小新 2024-12-27 14:38:54
list
使用C#开发SQL Server存储过程的指南
本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ...
[详细]
蜡笔小新 2024-12-27 14:24:17
settings
PyCharm下载与安装指南
本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ...
[详细]
蜡笔小新 2024-12-28 09:42:41
settings
Maven多模块项目管理最佳实践
本文详细介绍了如何使用Maven高效管理多模块项目,涵盖项目结构设计、依赖管理和构建优化等方面。通过具体的实例和配置说明,帮助开发者更好地理解和应用Maven在复杂项目中的优势。 ...
[详细]
蜡笔小新 2024-12-27 19:29:15
command
深入理解设计模式与七大原则
本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ...
[详细]
蜡笔小新 2024-12-27 19:10:10
int
路由器配置与网络地址转换
本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ...
[详细]
蜡笔小新 2024-12-27 18:25:35
list
使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ...
[详细]
蜡笔小新 2024-12-27 16:07:12
手机用户2502897397
这个家伙很懒,什么也没留下!
Tags | 热门标签
join
typescript
python2
web
install
select
php5
int
dockerfile
vbscript
include
vba
md5
less
plugins
email
runtime
c语言
solr
blob
nodejs
subset
command
bytecode
settings
metadata
lua
replace
list
heap
RankList | 热门文章
1
Apache 网站速度更快
2
Apache 的 order deny allow 设置说明
3
linux大于2T的磁盘使用GPT分区的方法分享
4
如何关闭http Methods中的Trace 提高安全意识
5
linux文件系统调整大小的方法(linux调整分区大小)
6
linux多线程编程(五)
7
CentOS下停止Tomcat运行脚本代码
8
Linux系统下操作Apache最基本的启动停止和重启命令
9
Linux chage命令详解
10
101个脚本之建立linux回收站的脚本
11
确保Linux VPS及服务器更加安全之Xshell设置密钥登录
12
centos 6.8命令行下使用pptpsetup进行pptp拨号的实现方法
13
Linux 查看cpu 信息的命令及简单实例
14
Kerberos安装教程及使用详解
15
Linux中使用crontab命令启用自定义定时任务实例
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有