Istio环境中运行Pod的要求
Service association(服务关联)
-
Pod必须从属于某个Service,哪怕Pod不需要暴露任何端口
-
同时从属于多个Service时,这些Service不能为该类Pod的同一个端口标识使用不同的协议
Application UIDs
-
UID 1337预留给了Sidecar Proxy使用,业务应用不能以这一UID运行
NET_ADMIN and NET_RAW capabilities
- 强制启用了PSP(Pod Security Policy)的Kubernetes环境中,必须允许在网格内的Pod上使用NET_ADMIN和NET_RAW这两个Capability,以确保Sidecar Envoy依赖的初始化Pod能够正常运行;
-
未启用PSP,或者启用了PSP但使用了专用的Istio CNI Plugin的场景,可以不用
Pods with app and version labels
-
显式地为Pod使用app和version标签
-
app标签用于为分布式追踪生成context,而label则用于指示应用的版本化
Named service ports
-
Service Port应该明确指定使用的协议
-
命名格式:
-
<protocol>[-<suffix>]
-
Kubernetes v1.18及之后的版本中,可以直接使用appProtocol字段进行标识
-
示例
---
apiVersion: v1
kind: Service
metadata:
name: demoapp
spec:
# appProtocol: http
ports:
- name: http-8080
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: demoapp
type: ClusterIP
---
参考文档
https://istio.io/latest/docs/ops/deployment/requirements/#pod-requirements