Kubernetes v1.23.0 正式发布,新特性一览
“「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。
”
Kubernetes v1.23 今天正式发布,这是 2021 年发布的第三个版本,也是今年最后一个正式发布的版本。
此版本中主要包括 47 项增强更新,其中 11 项达到 stable, 17 项达到 beta 还有 19 项达到 alpha 。当然,也有 1 项被标记为废弃。相比于 v1.22 从数量上来说是少了一点(v1.22 有 53 项增强更新),但这并不影响这是一个很棒的版本!
在 Kubernetes 的发布周期变更为 每4个月一个版本 后,很明显的感觉就是不用在升级上面花费太多时间了,毕竟 Kubernetes 的升级操作是个体力活,大家觉得呢?
我们一起来看看这个版本中有哪些值得关注的变更吧!
新增 kubectl alpha events 命令
在之前的 《K8S 生态周报| Helm 新版本发布增强对 OCI 的支持》 文章的上游进展中我曾为大家介绍了该功能。它是按照 KEP #1440 实施的。
“增加此命令主要是由于在不修改
”kubectl get
的前提下,查看event
有一些限制,所以直接增加kubectl events
命令可以更方便的去获取到需要的信息,尤其是 event 是在 Kubernetes 中经常需要查看的一个信息。kubectl get events
比较典型的一些问题, 比如排序(虽然可以通过加参数解决), watch,以及无法按照时间线方式去查看 events 等。
我们来看看这个命令具体如何使用。
我们先来创建两个 Pod,分别叫 redis
和 redis2
。
(MoeLove) ➜ kubectl run redis --image="ghcr.io/tao12345666333/redis:alpine"
pod/redis created
(MoeLove) ➜ kubectl run redis2 --image="ghcr.io/tao12345666333/redis:alpine"
pod/redis2 created
(MoeLove) ➜ kubectl get pods
NAME READY STATUS RESTARTS AGE
redis 1/1 Running 0 12m
redis2 1/1 Running 0 2m23s
执行 kubectl alpha events
可以看到当前 namespace 下的所有 events 。如果增加 --for
条件可以用来筛选只展示特定资源相关的 events 。同时 默认情况下就是按时间排序的
(MoeLove) ➜ kubectl alpha events
LAST SEEN TYPE REASON OBJECT MESSAGE
12m Normal Scheduled Pod/redis Successfully assigned default/redis to kind-control-plane
12m Normal Pulling Pod/redis Pulling image "ghcr.io/tao12345666333/redis:alpine"
12m Normal Pulled Pod/redis Successfully pulled image "ghcr.io/tao12345666333/redis:alpine" in 4.028873745s
12m Normal Created Pod/redis Created container redis
12m Normal Started Pod/redis Started container redis
3m5s Normal Scheduled Pod/redis2 Successfully assigned default/redis2 to kind-control-plane
3m5s Normal Pulled Pod/redis2 Container image "ghcr.io/tao12345666333/redis:alpine" already present on machine
3m4s Normal Created Pod/redis2 Created container redis2
3m4s Normal Started Pod/redis2 Started container redis2
(MoeLove) ➜ kubectl alpha events --for pod/redis2
LAST SEEN TYPE REASON OBJECT MESSAGE
3m23s Normal Scheduled Pod/redis2 Successfully assigned default/redis2 to kind-control-plane
3m23s Normal Pulled Pod/redis2 Container image "ghcr.io/tao12345666333/redis:alpine" already present on machine
3m22s Normal Created Pod/redis2 Created container redis2
3m22s Normal Started Pod/redis2 Started container redis2
IPv4/IPv6 双栈支持达到 GA
在配置双栈网络的 Kubernetes 时,需要同时指定 --node-cidr-mask-size-ipv4
和 --node-cidr-mask-size-ipv6
以便于设置每个 Node 上的子网大小。在此之前我们都是直接使用 --node-cidr-mask-size
进行设置即可。
如果我们仍然使用单栈 Kubernetes 集群的话,正常来说不需要做什么调整,当然我们也可以使用上面提到的选项,来单独设置集群的 IPv4/IPv6 子网。
PodSecurity Admission 达到 Beta
PodSecurity Admission 是之前的 PSP 的代替,关于 Kubernetes Admission 可以参考我之前的文章 《理清 Kubernetes 中 Admission 机制》,这里就不展开了。
IngressClass 支持 namespace 级别的参数
IngressClass.Spec.Parameters.Namespace
字段当前达到 GA ,这样我们就可以为 IngressClass 设置参数为 namespace 级别了。比如:
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: external-lb
spec:
controller: example.com/ingress-controller
parameters:
apiGroup: k8s.example.com
kind: IngressParameters
name: external-lb
namespace: external-configuration
scope: Namespace
Probe 中增加 gRPC 协议的支持
通过 KEP #2727 ,在此版本中为 Pod.Spec.Container.{Liveness,Readiness,Startup} 的 Probe 添加了 gRPC 协议的支持。例如:
readinessProbe:
grpc:
port: 9090
service: moelove-service
initialDelaySeconds: 5
periodSeconds: 10
可通过 GRPCContainerProbe
feature gate 开启此特性。具体细节可参考 #106463
新增 OpenAPI V3
这个特性是 Alpha 级别,可通过 OpenApiv3
feature gate 进行开启。
增加此特性主要是由于 CRD 目前可通过 OpenApi V3 进行定义,但是 api-server 目前还不支持。当从 OpenApi V3 转换为 V2 时,部分信息将会丢失。
更多详细信息可参考 KEP #2896
CRD Validation 表达式语言
这是一项 Alpha 级别的特性,默认是不开启的。可通过增加 CustomResourceValidationExpressions
feature gate 来进行开启。单独介绍此 Alpha 级别的特性是因为目前基于 Custom Resource Definitions (CRDs) 的方式对 Kubernetes 进行扩展已经成为主流,但是在 CRD 中目前能添加的校验规则有限,更多的场景都需要通过额外的 Admission 来完成。
此功能使用一种叫做 Common Expression Language (CEL) 的语言进行规则定义,通过 x-kubernetes-validation-rules
字段进行规则的添加。
例如,某个 CRDs 的内容如下,其中定义了 minReplicas
小于 replicas
并且 replicas
小于 maxReplicas
。
...
openAPIV3Schema:
type: object
properties:
spec:
type: object
x-kubernetes-validation-rules:
- rule: "self.minReplicas <= self.replicas"
message: "replicas should be greater than or equal to minReplicas."
- rule: "self.replicas <= self.maxReplicas"
message: "replicas should be smaller than or equal to maxReplicas."
properties:
...
minReplicas:
type: integer
replicas:
type: integer
maxReplicas:
type: integer
required:
- minReplicas
- replicas
- maxReplicas
那么,当有如下的自定义资源创建时,Kubernetes 将会拒绝其请求。
apiVersion: "stable.example.com/v1"
kind: CustomDeployment
metadata:
name: my-new-deploy-object
spec:
minReplicas: 0
replicas: 20
maxReplicas: 10
并且返回如下错误:
The CustomDeployment "my-new-deploy-object" is invalid:
* spec: Invalid value: map[string]interface {}{"maxReplicas":10, "minReplicas":0, "replicas":20}: replicas should be smaller than or equal to maxReplicas.
这样相比原来我们通过 Admission 的方式来进行校验就会方便的多。关于 Kubernetes Admission 可以参考我之前的文章 《理清 Kubernetes 中 Admission 机制》。
HPA v2 API 达到 GA
HPA v2 大约是在 5 年前首次提出,经过这 5 年的发展,终于在现在它达到了 GA 级别。
以上就是关于 Kubernetes v1.23 中我认为值得关注的一些主要特性,更多信息可参阅其 ReleaseNote
欢迎订阅我的文章公众号【MoeLove】
参考资料
k8s生态: https://zhuanlan.zhihu.com/container
本文分享自微信公众号 - MoeLove(TheMoeLove)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Tigon MyBatis v0.0.8 发布,极简 MyBatis Mapper 增强
Tigon MyBatis v0.0.8 已经发布,为 MyBatis Mapper 提供增强,设计精巧,代码量很少,代码洁癖工程师的朋友 此版本更新内容包括: 优化插入生成Key逻辑,之前通过拦截器方式实现,在高并发环境下存在Bug 删除了100多行代码,今天又变强了 详情查看:https://gitee.com/chyxion/tigon-mybatis/releases/v0.0.8 Tigon MyBatis 简介 Tigon MyBatis为Spring工程中MyBatis的Mapper提供增强,主要有以下特点 代码又少又壮,绝不做多余的事情 仅需Mapper继承接口,实现增删改查,无额外配置,爽到没女朋友 用完即走,毫不留恋 开始使用 引入Maven依赖 <dependency> <groupId>me.chyxion.tigon</groupId> <artifactId>tigon-mybatis</artifactId> <version>0.0.8</version> &...
- 下一篇
云原生时代,金融科技生产力何以腾飞
【51CTO.com原创稿件】在这个全新的阶段,金融行业如何拥抱云原生?金融科技如何继续以技术和数据为驱动,为诸多传统金融企业降本增效、保驾护航?在不久前召开的2021 LIGHT开发者云大会与会期间,记者采访了恒生电子平台业委会负责人、研发中心总经理许欣�M,就上述问题展开了探讨。 现状:云原生理念受广泛认可,但落地还存在众多挑战 随着数字经济的发展,金融机构在转型过程中对于业务敏捷化、服务场景化的期望也不断提高。云原生平台作为全新的技术实践,一方面满足了金融机构对于快速交付、高效迭代、弹性扩容等方面的需求,另一方面也不得不面对这样一个现实——要融入到现有的软件工程及数据运维管理体系中,不可避免地会涉及到多级系统的对接,要在新老系统间平滑演进绝非易事。 许欣�M提到,恒生电子在和众多的券商、基金公司、银行等金融机构的交流与合作中发现,这些组织普遍对云原生的理念比较认可,但到了真正落地的时候又会面临种种困难。 “因为大家都希望自己的软件交付、客户需求能够更快被响应,云原生可以解决灰度发布、弹性扩展等各种原来很难搞定的事情,但到了落地的时候又会发现没那么简单。比如公司自身缺少容器的运维人...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主