Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubernetes 1.28:一种新的(alpha版)机制,用于更安全的集群升级

Kubernetes 1.28:一种新的(alpha版)机制,用于更安全的集群升级

作者头像
灵雀云
发布于 2023-09-07 11:04:14
发布于 2023-09-07 11:04:14
3000
举报

作者:Richa Banker (Google)

本文介绍了混合版本代理(mixed version proxy),这是 Kubernetes 1.28 版本中的一个新的 alpha 功能。混合版本代理使得在集群中存在多个不同版本的 API 服务器的情况下,能够正确地为资源的 HTTP 请求提供服务。例如,在集群升级期间或者在部署集群控制平面的运行时配置时,这将会非常有用。

这个功能解决了什么问题?

当集群进行升级时,处于不同版本的 kube-apiserver 可能会为不同的内置资源集(组、版本、资源)提供服务。在这种情况下发起的资源请求可能会由任何一个可用的 apiserver 提供服务,这可能导致请求最终传递到一个不知道所请求资源的 apiserver,从而返回 404 找不到错误,这是不正确的。此外,错误地返回 404 错误可能会导致严重后果,例如错误地阻止命名空间删除或者错误地对对象进行垃圾回收。

我们如何解决这个问题?

这项新功能 "混合版本代理" 为 kube-apiserver 提供了将请求代理到了解所请求资源的同级 kube-apiserver 并能够为请求提供服务的能力。为实现此功能,API 服务器的聚合层中添加了一个新的过滤器到处理链中。

1. 处理链中的新过滤器会检查请求是否针对 apiserver 不了解的组/版本/资源(使用现有的 StorageVersion API)。如果是这样的情况,它会将请求代理到 ServerStorageVersion 对象中列出的 apiserver 之一。如果被识别的同级 apiserver 未能响应(可能是因为网络连接问题,请求接收和控制器注册 apiserver 资源信息在 ServerStorageVersion 对象中的竞争等原因),那么会返回 503 错误("Service Unavailable")。

2. 为了防止请求的无限代理,一旦确定原始 API 服务器无法处理请求,就会在原始请求中添加一个新的 HTTP 头(在 v1.28 版中引入)。将此标头设置为 true 表示原始 API 服务器无法处理该请求,因此应进行代理。如果目标同级 API 服务器看到此标头,它将不会再次代理请求。X-Kubernetes-APIServer-Rerouted: true

3. 要设置同级 kube-apiserver 使用的网络位置以代理请求,将传递给或者(当未指定时)使用的标志。对于具有不允许使用这些标志中指定的地址之间进行通信的同级 kube-apiserver 的网络配置的用户,可以使用此功能中引入的 --advertise-address 和 --peer-advertise-ip 标志传递正确的同级地址。

如何启用此功能?

以下是启用此功能所需的步骤:

  • 下载最新的 Kubernetes 项目(版本或更高)v1.28.0
  • 使用命令行标志在 kube-apiserver 上打开功能开关--feature-gates=UnknownVersionInteroperabilityProxy=true
  • 使用标志在 kube-apiserver 上传递将被源 kube-apiserver 用于对目标 kube-apiserver 的证书进行验证的 CA bundle。注意:此标志对于此功能的工作是必需的。此标志没有默认启用值。--peer-ca-file
  • 在代理请求时,传递本地 kube-apiserver 的正确 IP 地址和端口,供同级的 kube-apiserver 连接。在 kube-apiserver 启动时,使用标志 --peer-advertise-ip 和 --peer-advertise-port 将这些值传递给它。如果这两个标志都没有设置值,将使用传递给 --advertise-address 或 --bind-address 的值。如果这些值也没有设置,将使用主机的默认接口。--peer-advertise-ip--peer-advertise-port--advertise-address--bind-address

还有什么需要注意的?

目前,我们仅在确定需要这样做时才会代理到同级 kube-apiserver 的资源请求。接下来,我们需要解决在这种情况下如何处理发现请求。目前,我们计划在 beta 版本中拥有以下功能:

  • 在所有 kube-apiserver 之间合并发现请求
  • 对连接到同级 kube-apiserver 的网络连接使用出口拨号器

如何获取更多信息?

阅读混合版本代理文档

阅读 KEP-4020:未知版本互操作性代理

如何参与其中?

在 Slack 上与我们联系:#sig-api-machinery,或通过邮件列表。

非常感谢那些在这个功能的设计、实现和审核过程中提供帮助的贡献者:Daniel Smith、Han Kang、Joe Betz、Jordan Liggit、Antonio Ojea、David Eads 和 Ben Luddy!

本文翻译自Kubernetes.io

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用二进制包在生产环境部署 Kubernetes v1.13.2 集群
由于众所周知的原因,在国内无法直接访问Google的服务。二进制包由于其下载方便、灵活定制而深受广大kubernetes使用者喜爱,成为企业部署生产环境比较流行的方式之一,Kubernetes v1.13.2是目前的最新版本。安装部署过程可能比较复杂、繁琐,因此在安装过程中尽可能将操作步骤脚本话。文中涉及到的脚本已经通过本人测试。
耕耘实录
2019/07/04
8770
二进制包部署管理Kubernetes集群
K8S集群部署有几种方式:kubeadm、minikube和二进制包。前两者属于自动部署,简化部署操作,自动部署屏蔽了很多细节,使得对各个模块感知很少。这篇文章是使用二进制包部署Kubernetes集群。
菲宇
2022/12/21
5170
二进制包部署管理Kubernetes集群
Kubernetes(k8s)-证书介绍
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
运维小路
2025/02/10
1570
Kubernetes(k8s)-证书介绍
Kubernetes高可用集群二进制部署(三)部署api-server
在工作节点上分发软件,因为只规划了一台服务器作为工作节点(k8s-worker1),实际在工作中为了节省资源会把master同时作为工作节点
鱼找水需要时间
2023/08/03
4350
Kubernetes高可用集群二进制部署(三)部署api-server
kubernetes组件kube-apiserver介绍
Kubernetes 是一种开源的容器编排平台,它可以自动化地部署、扩展和管理容器化应用程序。kube-apiserver 是 Kubernetes 架构中的核心组件之一,它充当 Kubernetes API 的前端,处理来自 Kubernetes API 的所有请求,并将其转发给其他组件进行处理。
玖叁叁
2023/04/28
1K0
Kubernetes 1.8.6 集群部署–Master节点(五)
部署 master 节点 上面的那一堆都是准备工作,下面开始正式部署kubernetes了, 在master节点进行部署。 下载安装文件 # wget https://dl.k8s.io/v1.8.6/kubernetes-server-linux-amd64.tar.gz # tar -xzvf kubernetes-server-linux-amd64.tar.gz # cp -r kubernetes/server/bin/{kube-apiserver,kube-controller-manag
老七Linux
2018/05/15
1.5K7
Kubernetes 1.8.6 集群部署–Master节点(五)
kubernetes组件kube-apiserver启动参数详解
kube-apiserver 是 Kubernetes 控制平面中的核心组件,用于公开 Kubernetes API,以便其他组件和管理员可以与 Kubernetes 集群进行交互。
玖叁叁
2023/04/28
2.2K0
Kubernetes全栈架构师(二进制高可用安装k8s集群部署篇)--学习笔记
k8s高可用架构解析,高可用Kubernetes集群规划,设置静态ip,请参考上一篇文章
郑子铭
2021/07/19
1.2K0
Kubernetes全栈架构师(二进制高可用安装k8s集群部署篇)--学习笔记
Kubernetes实战(二)- 一键部署神器kubeadm
而要使用容器把后者运行起来,单通过Docker把一个Cassandra镜像run是没用的。
JavaEdge
2021/02/22
4930
Kubernetes实战(二)- 一键部署神器kubeadm
kubernetes 之 master高可用集群搭建
1、k8s的node默认已经有高可用了,因为在pod会随机分配到各个node上,如果有pod挂了,就会分配到其他node上,所以这里主要是做一下master的高可用。
kubernetes中文社区
2019/06/24
6.1K0
kubernetes 之 master高可用集群搭建
使用kubernetes二进制部署集群
在kubernetes in github的仓库中找到CHANGELOG-*.md,里面会找到各个版本的二进制文件,以及安装K8s平台组件的Shell安装脚本,==注意这些脚本在安装的时候要根据自己实际存放二进制的位置做出相应的调整==
公众号: 云原生生态圈
2021/11/15
6740
Kubernetes 1.8.6 集群部署–所遇到的问题(八)
查看dashboard界面 访问以下链接(1.8.3访问 https://masterip:6443/ui 无法访问): https://MasterIP:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ 当然这个链接是怎么来的? [[email protected] kubernetes]# kubectl cluster-info Kubernetes master is running at h
老七Linux
2018/05/31
2.8K0
Kubernetes集群部署篇( 一)
K8S集群部署有几种方式:kubeadm、minikube和二进制包。前两者属于自动部署,简化部署操作,我们这里强烈推荐初学者使用二进制包部署,因为自动部署屏蔽了很多细节,使得对各个模块感知很少,非常
老七Linux
2018/05/31
1.8K1
06-搭建master集群
部署高可用 kubernetes master 集群 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 目前这三个组件需要部署在同一台机器上。 kube-scheduler、kube-controller-manager 和 kube-apiserver 三者的功能紧密相关; 同时只能有一个 kube-scheduler、kube-controller-manager 进程处于工作状态,如果运行多
程序员同行者
2018/07/03
5490
kube-apiserver启动命令参数解释
在apiserver启动时候会有很多参数来配置启动命令,有些时候不是很明白这些参数具体指的是什么意思。
小陈运维
2022/03/07
2.7K0
kubernetes工作记录(1)——kubernetes1.7.4版集群的离线安装搭建过程记录
之前将近一个月的时间算是初步入门了kubernetes,现在对之前的学习工作进行整理记录,将所有的内容有机的串联起来。 对照网上已有的内容和自己过去的博客,整理shell脚本 安装包结构示意如下(
胡了了
2017/12/28
1.8K0
kubernetes工作记录(1)——kubernetes1.7.4版集群的离线安装搭建过程记录
Kubernetes(k8s)-master组件介绍
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
运维小路
2024/12/25
1940
Kubernetes(k8s)-master组件介绍
Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)
0. 前言 最近受“新冠肺炎”疫情影响,在家等着,入职暂时延后,在家里办公和学习 尝试通过源码编译二进制的方式在单一节点(Master 与 Node 部署在同一个机器上)上部署一个 k8s 环境,整理相关步骤和脚本如下 参考原文:Kubernetes二进制部署(一)单节点部署 1. 相关概念 1.1 基本架构 1.2 核心组件  1.2.1 Master 1.2.1.1 kube-apiserver 集群的统一入口,各组件协调者 以RESTful API提供接口服务 所有对象资源的增删改查和监听操作都
西凉风雷
2022/11/23
1.5K0
Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)
Kubernetes v1.12/v1.13 二进制部署集群(HTTPS+RBAC)
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。
星哥玩云
2022/07/28
5230
Kubernetes v1.12/v1.13 二进制部署集群(HTTPS+RBAC)
Kubernetes V1.15 二进制部署集群
以下操作均在/data/ssl_config/etcd/目录中 etcd证书ca配置
惨绿少年
2019/09/24
2.1K2
Kubernetes V1.15 二进制部署集群
推荐阅读
相关推荐
使用二进制包在生产环境部署 Kubernetes v1.13.2 集群
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档