Istio 对 Pod 和服务的要求

要成为服务网格的一部分,Kubernetes 集群中的 Pod 和服务必须满足以下几个要求:

  • 需要给端口正确命名:服务端口必须进行命名。端口名称只允许是<协议>[-<后缀>-]模式,其中<协议>部分可选择范围包括 grpchttphttp2httpsmongoredistcptls 以及 udp,Istio 可以通过对这些协议的支持来提供路由能力。例如 name: http2-fooname: http 都是有效的端口名,但 name: http2foo 就是无效的。如果没有给端口进行命名,或者命名没有使用指定前缀,那么这一端口的流量就会被视为普通 TCP 流量(除非显式的用 Protocol: UDP 声明该端口是 UDP 端口)。

  • Pod 端口: Pod 必须包含每个容器将监听的明确端口列表。在每个端口的容器规范中使用 containerPort。任何未列出的端口都将绕过 Istio Proxy。

  • 关联服务:Pod 不论是否公开端口,都必须关联到至少一个 Kubernetes 服务上,如果一个 Pod 属于多个服务,这些服务不能在同一端口上使用不同协议,例如 HTTP 和 TCP。

  • Deployment 应带有 app 以及 version 标签:在使用 Kubernetes Deployment 进行 Pod 部署的时候,建议显式的为 Deployment 加上 app 以及 version 标签。每个 Deployment 都应该有一个有意义的 app 标签和一个用于标识 Deployment 版本的 version 标签。app 标签在分布式追踪的过程中会被用来加入上下文信息。Istio 还会用 appversion 标签来给遥测指标数据加入上下文信息。

  • Application UID不要使用 ID(UID)值为 1337 的用户来运行应用。

  • NET_ADMIN 功能: 如果您的群集中实施了 Pod 安全策略,除非您使用 Istio CNI 插件,您的 pod 必须具有NET_ADMIN功能。请参阅必需的 Pod 功能

相关内容

注入 Istio sidecar

介绍两种将 Istio sidecar 注入应用 Pod 的方法:使用 Sidecar 注入 Webhook 自动完成,或使用 istioctl 客户端工具手工完成。

Istio Sidecar 注入过程解密

Istio 将数据面组件注入到现存部署之中的过程。

安装 Istio CNI

Istio CNI 插件的安装和使用,该插件让运维人员可以用较低的权限来完成网格服务的部署工作。

Gateway 连接

使用 Istio Gateway 跨越多个 Kubernetes 集群安装 Istio 网格以访问远程 pod。

Google Kubernetes Engine

对 Google Kubernetes Engine(GKE)集群进行配置以便安装运行 Istio。

Google Kubernetes Engine

基于 GKE 的 Istio 多集群安装。