容器设计模式中的单节点多容器模式支持三种多容器模式:
SideCar
:为主容器提供辅助功能,如为主容器提供代理服务,为主容器提供数据收集。
Adapter
:若某个pod内数据输出格式与某个规定的引用接受数据的格式不兼容,用适配器来将其转换以达到兼容的目的。
Ambassador
:主容器中的引用不方便对外联络,可以专门制作一个容器来实现对外联络的功能。如redis集群联络其他节点可以专门做一个大使来进行联络
SideCar示例
1.编写配置清单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| root@k8s-master01:~/yaml/chapter04 apiVersion: v1 kind: Pod metadata: name: sidecar-container-demo namespace: default spec: containers: - name: proxy image: envoyproxy/envoy-alpine:v1.14.1 command: ['/bin/sh','-c'] args: ['sleep 5 && envoy -c /etc/envoy/envoy.yaml'] lifecycle: postStart: exec: command: ['/bin/sh','-c','wget -O /etc/envoy/envoy.yaml http://ilinux.io/envoy.yaml'] - name: demo image: ikubernetes/demoapp:v1.0 imagePullPolicy: IfNotPresent env: - name: HOST value: "127.0.0.1" - name: PORT value: "8080"
|
2.应用配置
1 2 3 4 5 6 7
| root@k8s-master01:~/yaml/chapter04 pod/sidecar-container-demo created
root@k8s-master01:~/yaml/chapter04 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES sidecar-container-demo 2/2 Running 0 4m10s 10.244.1.25 k8s-node01 <none> <none>
|
3.测试访问容器,看envoy是否将流量代理给8080端口
1 2 3 4 5 6 7 8 9 10 11 12
| root@k8s-master01:~/yaml/chapter04 iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.1, ServerName: sidecar-container-demo, ServerIP: 10.244.1.25!
root@k8s-master01:~/yaml/chapter04 HTTP/1.1 200 OK content-type: text/html; charset=utf-8 content-length: 108 server: envoy date: Fri, 02 Jul 2021 09:24:45 GMT x-envoy-upstream-service-time: 1
|