周一见 | 让 K8s 更高效的 5 个技巧、展望 Kubernetes v1.16、本周开源项目推荐
新闻
作者:bot
译者:bot
2019-09-10 02:50

Kubernetes 资讯

Kubernetes v1.16 Beta 前瞻

近日,Kubernetes 发布了最新版本的 Beta 版,推出了一些有趣的新变化和新特性。为了满足读者对新版本的好奇,社区归纳了 Kubernetes v1.16 Beta 中的部分有趣内容,包括一些已经透露但还未完成的组件。

  • 支持 IPv4/IPv6 双栈。新版本对 K8s Pod、节点和服务提供 IPv4/IPv6 双栈支持和感知;
  • 改进 Pod Overhead Account。Pod 沙箱运行时在 Pod 级别引入了一个不可忽略的开销,用户应该将其考虑在内,以改进调度和资源配额管理;
  • 节点拓扑管理器。这个新组件有助于根据请求的资源为 Pod 分配资源;
  • 新的 Endpoints API。这个新 API 的目标是在具有数千个节点的集群上的单个服务中支持数万个后端端点;
  • Pod 跨故障域传播。这个功能允许 Kubernetes 调度程序能跨故障域(Failure Domains)传播一组 Pod;
  • 适用于 Windows 的多种功能。适用于 Windows 的 Kubeadm、支持 Windows 中的 CSI 插件和 RunAsUserName;
  • Kubernetes Metrics 大修。这项工作提供和 Prometheus 等生态项目一致的命名和高质量指标。

让 K8s 更高效的 5 个技巧

当你在使用 Kubernetes 和 Istio 时,你会如何设置环境和使用的工具来提高工作效率呢?以下是国外一位工程师总结的五大技巧。

在 K8s 上下文之间切换

如果你正在使用本地 Kubernetes 实例和多个 Kubernetes 云实例,有时候你会需要在上下文之间切换。在这个场景下,你通常会用到 Kubernetes CLI(kubectl):

  • current-context、get-contexts、rename-context、delete-context、set-context、use-context;
  • 切换到上下文的名称:kubectl use-context [CONTEXT-NAME];
  • 如果你正在使用多个集群但不知道上下文名称,则需要首先列出上下文,然后运行 use-context 命令。

但其实我们有一种更简单的方法可以做到这一点:kubectx。它允许你快速列出并切换到不同的 Kubernetes 上下文:

在 K8s 命名空间之间切换

使用 Kubernetes 时,另一个常见的操作是使用来自多个命名空间的资源,这时你可能会经常用到 --namespace。

这里我们推荐一个更简单的工具 kubens,它可以帮你列出不同的命名空间并完成切换。 

为选定的上下文设置默认命名空间也很简单:

为 Kubernetes CLI 取别名

使用 Kubernetes 的时候,你可能需要输入大量 kubectl,虽然只有短短七个字符,但大量重复输入还是会让人觉得繁琐。

这时,你可以把 k=kubectl 放进 bash_profile,每次打开终端都设置一遍,你就可以用 k 代替 kubectl。

在集群内部获取一个终端

要访问集群内运行的服务和 Pod,我们一般采取三种方式:公开它们以便从公共 Internet 访问它们、运行 kube proxy 、在本地机器和集群内运行的服务间转发端口。但是,有时你会希望在不暴露任何服务或转发端口的情况下运行 plain curl 命令。

这里推荐你kbash,它使用一个函数作为 bash 配置文件的一部分加载,该函数在集群内运行带有radial/busyboxplus:curl 镜像的 Pod,并允许你访问终端

要退出,只需输入 exit 即可。

快速打开 Grafana/Jaeger/Kiali

如果你有用到 Istio 服务网格,你可能会在某些时候需要使用 Grafana/Jaeger/Kiali。访问这些服务需要先获取 Pod 名称,然后设置一个前往该 Pod 的端口,最后用浏览器打开地址。每次输出命令都很长:

但其实,更简单快捷的方法是为每个服务创建函数或别名

现在,如果我们想打开 Jaeger,我们可以运行 jaeger,它将获取 Pod 名称、创建端口转发并打开浏览器。

https://hackernoon.com/5-tips-to-be-more-productive-with-kubernetes-sv6o63ric

Red Hat:Knative 是 K8s 的终极答案

容器是企业计算的动力所在。即使是传统虚拟机最后的支持者 VMware,也正在通过收购 Pivotal 来完善其容器化产品线。根据最近公布的 IHS 市场报告,到 2023 年,全球容器市场将超过 16 亿美元,年均增长率超过 30%

近日,在接受媒体采访时,Red Hat 产品管理高级经理 William Markito Oliveira 表示:Kubernetes 是为满足容器编排需求而开发的,尽管它本身带来了额外的麻烦,比如需要手动管理配置、软件依赖、网络调试等。但企业可以借助 Kubernetes 保持一致性——对于每个集群,无论你使用哪种 Kubernetes 分发,无论特定 Kubernetes 集群在哪里运行,应用程序的行为都完全一致。

“我们从客户那里听到的最常见的问题是安全性问题。金融机构、医疗保健……这些行业更愿意在自己的数据中心运行,或者说,他们不能接受把所有数据都放到云端。此外,他们也很关注避免云厂商绑定,他们想要按照自身条件做无服务器,并运行相同类型的工作负载,而无需为无服务器的特定实现重写所有应用程序。”

Kubernetes 帮助这些行业解决了从云厂商 A 迁移到云厂商 B 的问题,但在应用程序级别,对于无服务器应用程序,允许企业在自己的服务器上运行无服务器架构的 Knative 会是 Kubernetes 编排的终极答案

本周 K8s 开源项目推荐

ksniff这是一个 Kubectl 插件,它利用 tcpdump 和 Wireshark 在 Kubernetes 集群中的任何 Pod 上启动远程捕获。

https://github.com/eldadru/ksniff?utm_sq=g61ebl2l1d

k14s面向 UNIX 的 Kubernetes 工具集,简单、可组合。

https://k14s.io/?utm_sq=g61f0ahn04

k3sup。这是一个轻量级实用程序,可以在任何本地或远程 VM 上从零搭建 k3s。该工具用 Go 编写,且针对 Linux、Windows、MacOS 甚至 Raspberry Pi 进行了交叉编译。

https://github.com/alexellis/k3sup?utm_sq=g61fboxp2f

Conftest这个工具可以帮助你针对结构化配置数据编写测试。例如,你可以为 Kubernetes 配置、Tekton 管道定义、Terraform 代码、无服务器配置及任何其他结构化数据编写测试。

https://github.com/instrumenta/conftest?utm_sq=g61nzkvz0n

Kubernetes 工具和 helper 列表https://docs.google.com/spreadsheets/d/1WPHt0gsb7adVzY3eviMK2W8LejV0I5m_Zpc8tMzl_2w/edit?utm_sq=g61c5revwn#gid=0

Kubeman。这是一种帮助你更容易地从 Kubernetes 集群中查找信息的工具,可以调查与 Kubernetes 和 Istio 相关的问题。

https://github.com/walmartlabs/kubeman?utm_sq=g61bka9t95

Etcd v3.4 发布

日前,Kubernetes 的一个团队宣布推出 etcd v3.4,新版本专注于稳定性、性能和易操作性,尤其是对 Kubernetes 工作负载进行了优化,提供了更好的后端存储。

更好的后端存储

Etcd v3.4 包含大量关于 Kubernetes 工作负载的性能改进。在之前的版本中,即使没有写入,Etcd 也会遇到因大量并发读取事务导致性能下降的问题,这是因为持续长时间运行的读取事务会阻止写入和即将进行的读取

新版本提高了后端读取事务的并行能力,在长时间运行的读取存在的情况下,Etcd 写入吞吐量增加了 70%,P99 写入延迟减少了 90%。他们还对 GCE 进行了 Kubernetes 5000 节点可扩展性测试,并做了类似改进。

改进 Raft 投票过程

Etcd 服务器实现了 Raft 一致性数据复制算法。这是一种基于领导者的协议,它存在的问题是当 Raft 领导者接收到具有更高 term 的消息而没有任何进一步的集群范围的健康检查时,它会成为跟随者。此行为可能会影响整个集群的可用性(尤其是网络分区情况下)。

为了解决这个问题,Etcd Raft 引入了一个新节点状态:预候选者。候选者会先询问其他服务器是否达到了投票状态,只有获得了大多数选票,它才会提高 term 并开始选举。这项改进可在总体上提高领导者选举的稳健性。

Learner

Raft 资格重新配置会使投票规模发生变化,进而易导致集群不可用。

新版本引入了一个新的节点状态“Learner”,它以无投票权成员的身份加入集群,直到赶上领导者的日志。这意味着学习者仍然接收来自领导者的所有更新,而它不计入法定人数,法定人数被领导者用来评估同伴的活跃度。在升级之前,学习者仅用作备用节点。

新的客户端平衡器

Etcd 的作用是缓解各种系统和网络故障。当一个节点发生故障时,多服务器架构下的逻辑集群看起来仍然运作正常,但是这种情况却无法保证客户端也能够正确运行。因此,Etcd 实现了一组复杂协议,保证其在错误条件下的正确性和高可用性

Etcd v3.4 简化了平衡器故障转移逻辑,不再维护不健康的端点列表,因为当端点连结中断时,列表就可能过时,现在客户端与当前端点连结中断,便会由下一个端点轮替,客户端也就不用追踪端点状态。

https://kubernetes.io/blog/2019/08/30/announcing-etcd-3-4/

AI 新闻

NeurIPS 公布入选论文名单

NeurIPS 是全球最受瞩目的 AI、机器学习顶级学术会议之一。今年,第三十三届 NeurIPS 将于 12 月 8 日至 14 日在加拿大温哥华温哥华会议中心举行。

日前,大会公布了论文入选完整名单:今年共计收到 6743 篇论文投稿(新纪录),其中共有 1428 篇论文入选,入选率 21.1%,比往年有所提升。当然,5315 的拒稿数量,同样也超过了去年的投稿量。

从个人投稿者来看,来自加州大学伯克利分校的 Sergey Levine 在 NeurIPS 2019 上发表了 12 篇论文,是今年最具贡献力的作者。紧随其后的是 INRIA -Ecole Normale Superieure 的 Francis Bach,他有 10 篇论文入选。华人作者中,论文入选数最靠前的是陶大程,共有 8 篇入选。

从投稿机构来看,谷歌凭借超过 170 篇的入选论文数名列前茅,之后是 MIT、斯坦福、CMU 和微软,国内的清华大学(33 篇)和北京大学(23 篇)分列第 13 名和第 22 名。其后是中科院、浙大、港中大、南大和复旦,都有超过 5 篇被收录。

在被接受论文中,强化学习、深度学习在题目中的出现频率较高,延续了往年的热门话题。值得一提的是,在 1428 篇论文中,华人作者署名入选的有 596 篇,占比 42%,华人在 AI 科研领域的贡献越来越突出。

https://github.com/dcharrezt/NeurIPS-2019-Stats

47 comCount 0