《K8S生态周刊》主要包含一些我接触过的K8S生态相关的每周推荐资讯。欢迎订阅知乎专栏《k8s生态》。KINDv0.8正式发布本周,KIND(KubernetesInDocker)正式发布v0.8版本。这次最重要的是给大家带来了一个持久化的集群。当主机或dockerd重启时,集群可以自动恢复。本次BreakingChanges默认集群镜像为Kubernetesv1.18.2:kindest/node:v1.18.2@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f;使用KINDv0.8+启动集群时,必须使用使用KINDv0.8+构建的0.8+镜像,否则无法正常运行;新版本中,KIND创建的所有Nodes均使用自定义的桥接网络(默认名称为kind,可通过环境变量KIND_EXPERIMENTAL_DOCKER_NETWORK修改);可以在启动任意容器时加上--network=kind,使其可以与KIND创建的集群网络进行通信;这里需要说一下持久化集群的特点。在之前的版本中,如果你的dockerd重启或者系统重启,可能会导致集群IP重新分配,导致集群状态异常。在之前的版本中,我们建议所有用户不要依赖集群持久化。但是鉴于很多用户的反馈,我还是先实现了第一个版本。具体方法其实很简单。原来的痛点是重启后容器IP重新分配,所以全部换成域名。另外,LB层是借助Docker内嵌的DNS完成master的代理。但是这种实现方式会造成DNS查询异常的问题。原理我在《Docker 核心知识必知必会》网络专栏有深入介绍。之前考虑过使用--resolv-conf参数将宿主机的resolver提供给kubelet,但是这种方式不够优雅,而且在排错的时候也会造成一些麻烦,因为它没有使用和kubelet一样的resolv.conf;后面考虑合并Node中的host和resolver,但是合并也会带来一些隐患。这个版本的实现其实是对Docker内嵌DNS做了很多hack,主动管理网络来满足这个需求。Featureskinddeleteclusters--all可以用来删除所有的簇;配置文件中添加了一个新的顶级featureGates字段以启用相关功能;NO_COLOR支持;对podman的实验性支持;支持通过KIND_CLUSTER_NAME环境变量指定集群名称;在k8sv.11.x中支持动态PV;以上就是本次KINDv0.8值得关注的内容,欢迎下载使用!如何使用可以参考《使用 Kind 在离线环境创建 K8S 集群》NGINXIngressController1.7.0发布本周,NGINXIngressController1.7.0发布,包含多项更新:支持通过新资源TransportServer和GlobalConfiguration配置TCP/UDP/TLS负载均衡,使得非基于HTTP的应用程序可以通过NGINXIngressController交付到Kubernetes上;支持在VirtualServer和VirtualServerRoute资源中配置错误页面;支持通过Kubernetes或OpenShift上的NGINXIngressOperator管理Ingress的生命周期;关于本次发布的更多详细内容,请参考其ReleaseNoteupstreamprogress#89285去除了对k/k中上游prometheus客户端库的依赖,取而代之的是kubernetes实现的metrics框架。这是为了实施更早的KEP以进行指标稳定性迁移;#90394修复了kubeadm中resolvConf的行为。kubeadm不会在/var/lib/kubelet/kubeadm-flags.env中设置--resolv-conf的值,而是使用KubeletConfiguration来配置;#90463autoscaling/v2beta1已弃用,推荐使用autoscaling/v2beta2;#89594将immutableSecrets/ConfigMaps提升到Beta阶段,默认开启,用户可以设置Immutable字段,将其内容标记为不可变;#90449删除了事件API中未使用的series.state字段;该项目推荐kured是一个用于安全重启节点的Daemonset。它包括以下功能:监控重启标志,例如/var/run/reboot-required;在API服务器中使用锁来确保一次只重启一个节点;(可选)根据Prometheus警报或选定的Pod重启延迟;cordon和drain会在节点重启前自动执行,uncordon会在节点重启后执行;当系统需要定期维护时,这非常有用。同时也可以手动触发,无需每次都重复操作。欢迎订阅我的文章公众号【MoeLove】
