前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S 生态周报| KIND v0.8 正式发布

K8S 生态周报| KIND v0.8 正式发布

作者头像
Jintao Zhang
发布2020-05-15 09:50:49
3290
发布2020-05-15 09:50:49
举报
文章被收录于专栏:MoeLoveMoeLove

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s 生态」 ( https://zhuanlan.zhihu.com/container )。

1

KIND v0.8 正式发布

本周 KIND(Kubernetes In Docker) ( https://kind.sigs.k8s.io/ ) 正式发布了 v0.8 版本,此次最主要的是为大家带来了 持久化集群,当主机或者 dockerd 重启后,集群可自动恢复。

1.1

Breaking Changes

  • 此次默认的集群镜像是 Kubernetes v1.18.2 : kindest/node:v1.18.2@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f ;
  • 当使用 KIND v0.8+ 启动集群时,必须使用通过 KIND v0.8+ 构建的 node 镜像,否则无法按预期工作;
  • 新版本中, KIND 创建出来的所有 Node ,都使用自定义的 bridge 网络(默认名称为 kind,可通过环境变量 KIND_EXPERIMENTAL_DOCKER_NETWORK 修改);
  • 你可以在启动任意容器时,增加 --network=kind,以便让它和 KIND 创建的集群网络互通;

这里需要特别说一下关于持久化集群的特性。在之前版本中,如果你的 dockerd 进行了重启操作,或者是重启了系统,那可能会导致集群 IP 重新分配,进而导致集群状态异常。

在之前版本中,我们建议所有的用户,不要依赖集群持久化。但鉴于有不少用户的反馈,所以我先实现了第一版。

具体做法其实也简单,原先的痛点在于重启后,容器 IP 的重新分配,所以全部以域名的方式进行替代,另外就是借助于 Docker 的 embedded DNS 来完成 LB 层对 master 的代理。

但这个实现,会产生一个 DNS 查询异常的问题,我在专栏 《Docker 核心知识必知必会》 网络篇中深入介绍过其原理。之前我考虑过通过 --resolv-conf 参数,将主机的 resolver 提供给 kubelet 使用,但这种方式并不够优雅,而且排查问题的话,由于不与 kubelet 使用相同 resolv.conf ,也会带来一些麻烦;之后考虑将主机和 Node 中的 resolver 进行合并,但合并的话,也会带来一些隐患。

本次版本中的实现,其实是对 Docker embedded DNS 做了很多 hack,主动对网络做了管理,以此来完成此需求。

1.2

Features

  • kind delete clusters --all 可用于删除所有集群;
  • 配置文件中新增了顶级 featureGates 字段,来开启相关特性;
  • NO_COLOR 的支持;
  • 实验性的对 podman 提供了支持;
  • 支持通过 KIND_CLUSTER_NAME 环境变量来指定集群名称;
  • 支持动态 PV 在 k8s v.11.x;

以上就是此次 KIND v0.8 中值得注意的内容,欢迎大家下载使用!使用方式可参考《使用 Kind 在离线环境创建 K8S 集群》 ( https://zhuanlan.zhihu.com/p/105173589 )

2

NGINX Ingress Controller 1.7.0 发布

本周 NGINX Ingress Controller ( https://github.com/nginxinc/kubernetes-ingress ) 1.7.0 发布了,包含了众多更新:

  • 支持通过新的资源 TransportServer 和 GlobalConfiguration 配置 TCP/UDP/TLS 的负载均衡,这样便可通过 NGINX Ingress Controller 在 Kubernetes 上交付非基于 HTTP 的应用程序;
  • 支持在 VirtualServer 和 VirtualServerRoute 资源中配置错误页;
  • 支持在 Kubernetes 或 OpenShift 上,通过 NGINX Ingress Operator ( https://github.com/nginxinc/nginx-ingress-operator ) 管理 Ingress 的生命周期;

关于此版本的更详细内容,请参考其 ReleaseNote ( https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.7.0 )

3

上游进展

  • #89285 ( https://github.com/kubernetes/kubernetes/pull/89285 ) 移除了 k/k 中对上游 prometheus client 库的依赖,全部替换成了 kubernetes 实现的 metrics 框架。这是为了实施早先的一个 指标稳定性迁移(Metrics Stability Migration)的 KEP ( https://github.com/kubernetes/enhancements/blob/master/keps/sig-instrumentation/20190605-metrics-stability-migration.md ) ;
  • #90394 ( https://github.com/kubernetes/kubernetes/pull/90394 ) 修正了 kubeadm 中对 resolvConf 的行为。kubeadm 将不会在 /var/lib/kubelet/kubeadm-flags.env 中设置 --resolv-conf 的值,而是使用 KubeletConfiguration 对其进行配置;
  • #90463 ( https://github.com/kubernetes/kubernetes/pull/90463 ) autoscaling/v2beta1 已废弃,推荐使用 autoscaling/v2beta2 ;
  • #89594 ( https://github.com/kubernetes/kubernetes/pull/89594 ) 将不可变 Secrets/ConfigMaps 提升至 Beta 阶段,并且 默认打开 ,用户可通过设置 Immutable 字段来标记其内容为不可变;
  • #90449 ( https://github.com/kubernetes/kubernetes/pull/90449 ) 移除了 events API 中未使用的 series.state 字段;

4

项目推荐

kured ( https://github.com/weaveworks/kured ) 是一个用于节点安全重启的 Daemonset 。它包含以下特性:

  • 监听重启标志,例如 /var/run/reboot-required;
  • 利用 API server 中的锁来保障每次只重启一个节点;
  • (可选)根据 Prometheus 报警或者选定 Pod 的情况下,延迟重启;
  • 在重启节点前会自动执行 cordon 和 drain ,在节点重启完成后执行 uncordon ;

这在系统需要定期维护时候,是非常有用的。同时也可自己手动进行触发,而不需每次重复操作。

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

本文分享自 MoeLove 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档