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

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 KIND v0.8 正式发布 本周 KIND(Kubernetes In Docker) 正式发布了 v0.8 版本,此次最主要的是为大家带来了 持久化集群,当主机或者 dockerd 重启后,集群可自动恢复。 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 的代理。

K8S 生态周报| Helm v3.2 正式发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Helm v3.2.0 正式发布 经过两个多月的时间,Helm v3.2 终于在本周正式发布了! 这个版本带来了很多值得关注的内容,我们一起来看看吧。 postgres 存储支持 Helm v2 时候,Release 默认是以 configmap 存储的,此外还支持存储为 memory, secret 或 sql 。在 Helm v3 时,社区对此做出了调整,提供了 configmap, secret 和 memory 等三种存储模式,并且默认的存储方式也变成了以 secret 进行存储。所以你可以直接通过 kubectl get secret 看到你部署的 release 。 本次发布的 Helm v3.2 中,对此有了个重大变更! 本次 v3.2 中,Helm v3 中移植了 Helm v2 版本时,对 sql 存储的支持,即:第四种 postgres, 通过组合 $HELM_DRIVER 和 $HELM_DRIVER_SQL_CONNECTION_STRING 环境变量,便可达到效果。 需要注意的是,这还是个实验中的特性,尚未正式 GA。尝鲜可以,但尽量别放在生产环境中使用。 其他变更 在添加 repo 的时候,增加了 --insecure-skip-tls-verify 参数,可跳过 TLS 检查:

Docker 还需要学习吗?

去年中在 Hacker News 上有篇热帖 “Goodbye Docker: Purging is Such Sweet Sorrow” 这篇文章内容其实很常规,无非是自己使用 Docker 的时候遇到了一些问题,最后切换到了 Podman buildah 和 Skopeo 组合的工具集,以作为 Docker 的一种替代方案。 这样的文章在近一年左右应该算是比较常见了,但为何会成为 Hacker News 上的热帖呢?主要有两方面的原因: 1. 还是因为此文的作者是 Ian Miell 他是 Docker in Practice (中译本叫做 《Docker 实践》)的作者,一个 Docker 相关技术书籍的作者将自己的 Docker 给替换掉,会让人比较好奇;2. 替换 Docker 貌似是一种方向,多数人也想要了解这种技术变迁会带来什么优势或者有什么样的坑。 背景介绍完了,我们来开始正文。 容器时代 Docker 在 2013 年 PyCon 上首次亮相,随后开源。由于其简单易用,以及切实解决了因环境不一致导致的问题,迅速获得到一大批粉丝。 接下来的几年中,Docker 改变了软件的交付方式,更多的人为之着迷。随之而来的是 Docker 生态的蓬勃发展。 Docker 在大多数人眼中几乎是容器(container)的代名词,即使是现在我也会常听到有人说“我有几个 docker 跑 xx 服务” 类似这样的话,无疑 Docker 引领了容器的时代。 容器是什么 一直在提容器,我们不如深入点先来探究下容器到底是什么? 在 Docker 官网上对容器的描述是: “A standardized unit of software” – 软件的标准单元,并没有什么更详细的内容了。多数人对容器的看法也都停留在很浅显的认识:认为容器是轻量级的虚拟机,所以后来也就有一段时间有人推“富容器”技术。

K8S 生态周报| containerd v1.3.4 正式发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 containerd v1.3.4 正式发布 本周 containerd v1.3.4 正式发布了,距离上次 v1.3.3 大约 2 个月左右的时间。本次仍然是 v1.3.x 系列的 patch 版本,但本次值得注意的内容并不少,我们一起来看看: containerd/containerd#4007 改善了 docker remote 中镜像主机失败回退的行为。 这个变更是非常有用的,比如当我们想要为某个镜像仓库提供多个可用的镜像源(或者主机)的时候,在 v1.3.4 之前,如果第一个源(或者主机) 返回错误的时候,那默认就会回退,直接请求源站了。这种情况下,相当于我们设置的多个镜像源(或主机)就没什么实际意义了。 经过此次变更后,请求会逐个尝试设置的镜像源,可大大保障拉取的成功率。 containerd/containerd#4104 添加了对 NOTIFY_SOCKET 的支持; containerd/containerd#4150 修正了 FIFO 的清理逻辑; 这个变更是为了修正早先引入的一段对 FIFO 的清理逻辑,再此次修正之前,如果将 stdin/stdout/stderr 等使用 /dev/null 删除,则在任务关闭时,可能会导致清空 /dev 目录,这就非常危险了。 关于此版本的其他变更,可参考其 ReleaseNote Helm v2.16.6 和 v3.2.0-rc.1 发布 这是 Helm v2 的一个 bugfix 版本,修正了一处空指针的错误 #7812 ,如果还有小伙伴未升级使用 Helm v3 ,还是使用 Helm v2 的话,可以考虑升级至此版本。

K8S 生态周报| Docker 开源 Compose 规范

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Docker 开源 Compose 规范, 助力云原生应用开发 本周 Docker 宣布将 Compose 规范开源,并作为独立组织进行治理。 由于 Compose 可以简单的定义基于多容器的应用程序堆栈的工作方式,并且可以通过一条命令启动应用程序,而不需要手动构建镜像和逐个启动容器,这可以大大节省开发团队的时间。 当前 Compose 已经被数百万开发人员使用,在 GitHub 上有超过 650,000 个 Compose 配置文件。 Docker 也在 GitHub 上创建了一个 awesome-compose 的仓库,其中包含了 Compose 在多种应用场景下的使用示例。 本次开源 Compose 规范,旨在能利用开源社区的力量,并与微软等合作伙伴,共同进行协作创新,为 Compose 规范提供更多活力,并以此帮助建立从桌面到云构建和部署容器应用程序通用开放标准。 另外,Compose 规范计划是捐助给中立的基金会,我个人认为大概率是捐给 CNCF 了(目前没看到正式消息)。扩展后的 Compose 规范必将会大大提升开发者体验。 同时,社区在计划使用 Go 对 docker-compose 工具进行重写(或者是重新实现 Compose 规范),整体而言也是好事儿,值得关注。 详情可查看:http://www.compose-spec.io/ SMI 正式加入 CNCF SMI(Service Mesh Interface)于本周正式加入 CNCF ,成为其 sandbox 级别的项目。 我在去年 5 月份的 K8S 生态周报| 2019-05-20~2019-05-26 中曾介绍过微软宣布推出的 SMI,本质是为了能为服务网格提供通用接口,以便能让 Service Mesh 有更加通用的规范 (就像当初 CNI/CRI 那样子)。

K8S 生态周报| NGINX Ingress Controller 新版本发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 NGINX Ingress Controller 1.7.0-rc1 发布 NGINX Ingress Controller 本次发布的 1.7.0-rc1 有一些比较值得注意的更新: #827 为其暴露出的所有 metrics 添加了一个 class 标签。 比如如果原先的 metrics 是 nginx_ingress_controller_ingress_resources_total{type="regular"} 1 那么现在将变成 nginx_ingress_controller_ingress_resources_total{class="nginx",type="regular"} 1 。这个标签的值,可以通过 -ingress-class 进行设置。 #852 在 configmap 中增加了一个 default-server-access-log-off 的配置项,用于配置是否关闭默认 server 的 access log 。 #902 添加了两个新的资源 TransportServer 和 GlobalConfiguration,用来支持 TCP/UDP 和 TLS 的负载均衡。 此版本的变更整体而言是比较多的,其余变更请参考其 ReleaseNote rook v1.2.7 发布 本次 rook 的 v1.2.7 版本,仍然是个 bugfix 版本,其中包含多项改进,这里说两个值得注意的内容:

K8S 生态周报| K8S 移除对 basic auth 的支持

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Helm v2.16.5 发布 鉴于还有不少人尚未升级至 Helm v3,虽然 Helm v2 目前在维护期,但仍然在频繁在发布版本。 本周 Helm v2 相继发布了 v2.16.5 和 v2.16.4, 如果打算升级的话,建议直接升级至 v2.16.5 。 因为 v2.16.4 版本中在 Validate() 中误添加了一个 Latest() ,会导致在安装或升级 Release 时,出现资源找不到的错误。 例如: Release "moelove-release" does not exist. Installing it now. Error: namespaces "moelove-namespace" not found 更多详情请参考其 ReleaseNote 。 Kubernetes v1.18 正式发布 这是 Kubernetes 今年第一个正式发布的版本,v1.18 包含了 38 个增强功能,其中包含 15 个 stable 状态的,11 个在 beta ,最后剩余 12 个还是 alpha 阶段。

Docker 7 周年,生日快乐!

Docker 7 岁啦!文末有活动链接~ 2013 年 Docker 首次在 PyCon 上亮相,随后在 Hacker News 上引起了强烈的反响。之后在 GitHub 上正式开源,从此正式开启了 Docker 的时代。 时至今日,无论我们在谈论容器,Kubernetes 或是这整个生态中的其他产品和技术,不可避免的都会用到与 Docker 相关的知识。 毫不夸张的说,Docker 改变了世界开发部署应用程序的方式! 3 月是 Docker 的生日月,按照 Docker 社区的传统,在本月会举办一次活动来庆祝 Docker 的生日。 活动信息 本次的活动通过 3 小时的在线直播来完成,将于北京时间 3 月 27 日 00:00 开始。 直播地址是:https://youtu.be/3UZ0TUPP0ks 简单分享点 Docker 目前的进展 我自 Docker v0.9 版本开始了自己的 Docker 之路,它是我使用最频繁的工具之一。 除了是 Docker 的重度用户外,我也一直参与着 Docker 社区的上游贡献。目前在 Docker 的核心仓库贡献者排行榜中在 top90 。(很早以前我一度以为这个排行榜不会更新 hhh),以下是 Docker 的核心上游仓库本月的概览: 可以看到社区还是很活跃的,而且 Docker 目前将重点放在提升开发者体验上,今年相继推出了 Docker Desktop 新版本, Docker 首个官方 GitHub Action, 以及开源了 awesome-compose 提供了众多精选的 compose 示例,帮助开发者更快的部署容器化应用。

Kubernetes v1.18 正式发布!抢先一览

持续关注 「K8S 生态周报」的小伙伴们,在每周的上游进展中,应该已经了解到了大多数新的特性和修复,这里来一并总结下。 Kubernetes 即将发布,截至发文时,v1.18.0 尚未正式 Release 。不过已经在进行中了, 让我们抢先看看 Kubernetes v1.18 为我们带来了哪些新内容吧! v1.18 中的主要变更集中在 deprecations, metrics , kubectl 和 node 方面。我们逐个来看看: kubectl 相关变更 引用我在K8S 生态周报| Helm v3.1.2 发布中的介绍: #88004 正式添加了 kubectl alpha debug 命令,可通过此命令来调试 Kubernetes 中的资源,不过也请注意,此命令尚在 alpha 阶段,后续还会有变动。 引用我在K8S 生态周报| containerd v1.2.13 发布 中的介绍: #87714 kubectl 的 --server-dry-run 被标记为废弃,并且可以通过使用 --dry-run=server 替代。并且 kubectl 的 --dry-run 参数接收的值,也变成了 client, server 以及 none。示例如下: (MoeLove) ➜ ~ kubectl create deploy moelove --image=redis --dry-run=client deployment.

K8S 生态周报| 首个 Docker 官方 Action 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 首个 Docker 官方 GitHub Action 发布了 从去年 Docker 将企业服务相关的业务出售给 Mirantis 之后,Docker 将重心放在助力开发者体验上,并为此做了一系列的努力。 包括 1 月份发布了 Docker Desktop v2.2 ,提供了 WSL2 的新架构,以及新的交互式 Desktop Dashboard 等特性。 本周又发布了首个 Docker GitHub Action,简化了 CI/CD 的流程。 这其实也是从另一个角度来推进 DockerHub 的普及(比预期的晚了一些)。DockerHub 上一直都有构建 Docker 镜像的功能,但我个人感觉体验并不够好,从一般意义上来说,它不够灵活;另外我感觉它的调度略慢了一点(虽然现在在优化中了)。 但本次发布的 Docker GitHub Action 可以让用户可以更灵活的通过 GitHub Action 来定义自己的 workflow,并将镜像推送至镜像仓库。这里的镜像仓库并没有和 DockerHub 强制绑定,用户可以自定义镜像仓库的地址。 使用示例如下,完整的项目可参考 docker-github-action 。 需要额外注意的是, 如果你的仓库是公开的,请注意将自己的用户名密码等设置为 secrets ,可参考下方示例,以防泄漏。 - name: Build and push Docker images uses: docker/build-push-action@v1.0 with: # Username used to log in to a Docker registry.