Kubernetes 网络策略指南

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

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

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

istio 0.5.0 新特性:流量镜像

在类似 Dark launch 的测试、发布过程中,流量复制是个非常有用的功能,istio 0.5.0 的更新,带来了一个新的路由相关特性:流量镜像。

这一场景中,我们会将正常的流量进行复制,将复制出来的流量分发给待上线的应用(V2),使用实际流量对新版本应用进行测试;而现有客户端则仅会感知到单一版本(V1)的存在。

下面做个小实验来进行验证。

条件

基于 Kubernetes 运行的 Istio 0.5.0 版本部署。

部署

源码见后。

nginx:stabel-alpine镜像,生成v1v2两个版本的 Deployment,以及一个target服务:

ChatBot:在 Slack 中使用监控和告警

前面文章中我们使用 Errbot 通过 Kubernetes API 在 Slack 中进行 Kubernetes 查询。这种方式很局限。毕竟拉更多组件下水,写更多代码才是大势所趋LOL。本文以 Istio 中的响应时间监控为例,看看 Errbot 和 Prometheus 的互动。

前提

  • Istio
  • Prometheus
  • 公网部署
  • 接入 Slack 的 Errbot
  • Errbot 开放 3141 端口,能够被 Alertmanager 使用。

注意:

在 Azure 上运行 Istio 的注意事项

Tags: 
  • ACS Engine: v0.12.4
  • Istio: v0.5.0
  • Kubernetes: v1.8.7

在 Istio 注入之后,生成的 Init 容器中会有 RunAs 的 SecurityContext,而 ACS Engine 的缺省 admission 包含了SecurityContextDeny,会拒绝这一选项,造成 Istio Workload 无法运行,

解决方法很简单,只要在定义文件中修改 api server 配置:

Conduit v0.2.0 发布

Tags: 

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

Errbot 入门(3)

Tags: 

Errbot 入门(3)

通过 Errbot 控制 Kubernetes

前面两篇分别讲了 Errbot 的简单启动和 Slack 的集成。这一篇做个结尾,用 Errbot 来查询 Kubernetes 的状态。

之前使用的 Docker 镜像中,已经集成了 Kubernetes 的 Python 客户端,所以这里只要在 Python 中引用,就可以操作了。

这里实现两个功能,第一个是列出 kubeconfig 文件中的 context,第二个是列出集群 Node 的健康状况。

准备工作

首先在 Errbot 的加载卷目录中新建目录kubeconfig,并在其中放置一个可用的 kubeconfig 文件。例如:

/usr/local/var/volumes/errbot/kubeconfig/config

Errbot 入门(2)

Tags: 

上一篇中,大致理解了一点 Errbot 的基础指令,这里尝试把 Errbot 接入到聊天室之中。

Slack 接入

  • 首先去 Slack 网站 注册一个机器人。
  • 注册完成后,会得到一个 Token。

回到 Errbot 的配置文件,下面是一个样例。这里我们设置机器人接收 "@dustise" 这一 ID 的管理,BOT_IDENTITY 写入我们刚刚创建的 Bot 账号的 Token:

核心负载 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 请求的完整报文。

页面