Conduit 0.4.0:流量都去哪了?

本周早些时候我们发布了 Conduit v0.4.0,这一版本在基于 Prometheus 的遥测系统方面,有了很大进步;同时还给微服务的除错提供了新的工具。

安装后的一分钟里,Conduit 给每个 Kubernetes 部署都提供了一个预配置的 Grafana Dashboard。这些 Dashboard 不只是成功率、请求量以及每服务延迟等常见指标,他还将每个指标按照依赖关系进行了分解。这样你就可以在不修改应用的情况下,轻松地回答“这个服务的流量是从哪里来的?”或者 “Foo 调用 Bar 的成功率如何”之类的问题了。

conduit-dashboard-deploy/web

Kubernetes 1.10 的秘宝

Tags: 

Kubernetes 发布了 1.10 版本。这是各位贡献者和发布团队的的又一次胜利。

在 Jetstack,无论是为客户服务的 K8S 项目、或是为各级别的用户提供 K8S 培训,又或者向 K8S 社区贡献我们开发的代码,都有着同样的目的,就是将 Kubernetes 推向巅峰。我们一直在跟进这一杰出项目,并保持对其开发过程密切关注。

官方博客(注 1)中介绍了 1.10 版本中的关键特性,按照以往惯例,我们请我们的工程师分享一下他们在新版本中发现的令人激动、期待的新功能。

设备插件

Matt Turner

Kubernetes 1.10 Beta

Tags: 

Kubernetes 社区发布了 Kubernetes 1.10 的第一个 Beta 版本,因此用户现在就可以对 1.10 中的部分新功能进行试用,在官方发布正式版本之前,可以向发布团队提交试用反馈。这次发布预计是在 2018 年 3 月 21 日,其中包含了超过一打的 Alpha 功能以及不止两打的更加成熟的特性。

Kubernetes 1.10 的众多特性中,需要强调的是:生产就绪的 Kubelet TLS Bootstrap 功能、API 聚合以及详细的存储指标。

本文提到的一些功能可能让人觉得面熟,这是因为他们在之前的版本就已经出现,随着功能的逐步成熟,我们会为他定义不同的阶段:

限制到一个应用的流量

可以创建网络策略,来允许来自某些 Pod 的流量通过。

用例

  • 只有选定范围内的服务才能够访问指定服务。
  • 只有允许的服务才能够访问数据库

Diagram of LIMIT traffic to an application policy

示例

假设你的应用是一个 REST API 服务器,使用标签app=bookstorerole=api进行标识:

kubectl run apiserver --image=nginx --labels app=bookstore,role=api --expose --port 80

把下面的网络策略保存为api-allow.yaml,这个策略只允许符合标签app=bookstore条件的Pod发出的流量:

拦截到一个应用的所有流量

这一策略使用 Pod 选择器来进行 Pod 选择,会拦截所有的目标为某应用的 Pod 的流量。

用例

  • 非常普遍:如果以白名单的方式来使用网络策略,首先要使用这一策略来进行拦截。
  • 想要运行一个不被任何其他 Pod 访问的 Pod。
  • 需要暂时性的进行来自其他 Pod 的流量的隔离。

Diagram for DENY all traffic to an application policy

示例

使用app=web标签运行一个 Nginx Pod,并暴露其 80 端口:

kubectl run web --image=nginx --labels app=web --expose --port 80

创建一个临时 Pod,在这一 Pod 中访问web服务:

创建集群

多数 Kubernetes 安装方法都没有提供网络策略的支持,因此需要手工安装 Weave Net 或者 Calico 这样的网络策略支持工具。

Google Kubernetes Engine (GKE) 让用户可以在不进行手工安装的情况下轻松的获得网络策略支持,这是因为 GKE 已经选择 Calico 作为网络支持组件了(这个特性在 Kubernetes 1.8 中处于 Beta 阶段)。

下面的命令会在 GKE 中创建名为np,并支持网络策略功能的集群:

Kubernetes 网络策略指南

You can get stuff like this有了网络策略,你也做得到!

这里包含一系列的 Kubernetes 网络策略的相关用例以及相关的 YAML 文件。想要知道如何在 Kubernetes 中对某一应用的流量进行阻拦或者限制,请继续阅读。

尝试网络策略的最简单方法就是创建一个新的 Google Container Engine 集群。在现有集群上应用网络策略,可能会造成网络中断。在成文期间,多数云供应商尚未提供内置的网络策略支持。

Conduit v0.2.0 发布

Tags: 

里程碑版本,这次发布中新增了对 HTTP/1.x 和 TCP 支持,这样就可以为绝大多数运行在 Kubernetes 上的应用提供支持了。

核心负载 API 升级为 GA

Tags: 

DaemonSet、Deployment、ReplicaSet 以及 StatefulSet 升级为 GA。

很高兴核心 Workload API 在 Kubernetes 1.9 中升级为 GA。本文来自 Kenneth Owens,讲述了核心负载对象如何从诞生走入 GA,回顾 1.9 中的变化,并对未来进行展望。

起初

Pods(注 1)将容器紧密结合在一起,共享资源、网络、存储以及生命周期。Pod 很有用,但是更进一步,用户希望无缝的、可重复的以及自动的创建同一个 Pod 的多个副本,所以我们有了 ReplicationController(注 2)

可扩展 Admission 进入 Beta 阶段

Tags: 

Kubernetes API Server 中有一个功能,能让用户(对工作负载)进行决策,这一功能在 1.9 中已经走入成熟期。

Admission 是 Kubernetes 中最强大的工具之一,可以通过限制创建对象的方式来增强 Kubernetes 集群的安全性,这部分一直是编译在代码之中的。在 1.9 中,我们将 Admission 的 Webhook 升级成 Beta,让用户可以在 API Server 之外对 Admission 施加影响。

Admission 是什么?

Admission(注1),是在认证之后,资源持久化之前 的一个处理 API Server 请求的步骤。Admission 能获取到和认证过程一致的信息(用户、URL 等),以及绝大多数 API 请求的完整报文。

页面