- Istio 对 Pod 和服务的要求
Istio 对 Pod 和服务的要求
要成为服务网格的一部分,Kubernetes 集群中的 Pod 和服务必须满足以下几个要求:
需要给端口正确命名:服务端口必须进行命名。端口名称只允许是
<协议>[-<后缀>-]模式,其中<协议>部分可选择范围包括grpc、http、http2、https、mongo、redis、tcp、tls以及udp,Istio 可以通过对这些协议的支持来提供路由能力。例如name: http2-foo和name: http都是有效的端口名,但name: http2foo就是无效的。如果没有给端口进行命名,或者命名没有使用指定前缀,那么这一端口的流量就会被视为普通 TCP 流量(除非显式的用Protocol: UDP声明该端口是 UDP 端口)。Pod 端口: Pod 必须包含每个容器将监听的明确端口列表。在每个端口的容器规范中使用
containerPort。任何未列出的端口都将绕过 Istio Proxy。关联服务:Pod 不论是否公开端口,都必须关联到至少一个 Kubernetes 服务上,如果一个 Pod 属于多个服务,这些服务不能在同一端口上使用不同协议,例如 HTTP 和 TCP。
Deployment 应带有
app以及version标签:在使用 KubernetesDeployment进行 Pod 部署的时候,建议显式的为Deployment加上app以及version标签。每个 Deployment 都应该有一个有意义的app标签和一个用于标识Deployment版本的version标签。app标签在分布式追踪的过程中会被用来加入上下文信息。Istio 还会用app和version标签来给遥测指标数据加入上下文信息。Application UID:不要使用 ID(UID)值为 1337 的用户来运行应用。
NET_ADMIN功能: 如果您的群集中实施了 Pod 安全策略,除非您使用 Istio CNI 插件,您的 pod 必须具有NET_ADMIN功能。请参阅必需的 Pod 功能。
