-
定义Pod配置:在Deployment或Pod的YAML文件中,为主容器和Sidecar容器分别定义
containers字段。例如,主容器运行应用服务,Sidecar容器运行Envoy代理或日志采集工具。 -
共享网络与存储:
- 网络共享:同一Pod内容器共享网络命名空间,主容器可通过
localhost访问Sidecar暴露的端口。 - Volume共享:若需共享日志或配置文件,使用
emptyDir卷挂载到主容器和Sidecar的指定路径。
- 网络共享:同一Pod内容器共享网络命名空间,主容器可通过
-
配置Sidecar功能:
- 代理通信:若使用Envoy等代理,Sidecar需配置监听端口并转发流量到主容器。例如,主容器监听8080,Sidecar监听9080并转发到主容器。
- 服务发现:通过Kubernetes Service关联Pod,Sidecar利用集群DNS(如
<service-name>.<namespace>.svc.cluster.local)进行服务间通信。
-
健康检查:为Sidecar容器添加
livenessProbe和readinessProbe,确保Sidecar异常时Pod自动重启或隔离。 -
验证与调试:
- 使用
kubectl logs <pod-name> -c <sidecar-container-name>查看Sidecar日志。 - 通过
kubectl exec进入Pod,测试主容器与Sidecar的连通性(如curl localhost:<sidecar-port>)。
- 使用
示例YAML片段:
containers:
- name: main-app
image: my-app:1.0
ports:
- containerPort: 8080
- name: envoy-sidecar
image: envoyproxy/envoy:v1.22
ports:
- containerPort: 9080
volumeMounts:
- name: config
mountPath: /etc/envoy
volumes:
- name: config
configMap:
name: envoy-config