引言
Kubernetes Sidecar容器是那些与pod中的主容器平行运行的容器。同时,这种sidecar容器在不改变容器的情况下增加了功能并提供了容器的依赖性。
尽管你有一个带有单个容器正常工作的pod。你想在不改变当前容器的情况下给它附加一些功能。但是,你怎么能把功能添加到当前的容器中呢?"边车 "容器已经填补了这种类型的情况。
Sidecar容器的YML文件
在一个pod中创建两个容器,一个sidecar容器和主容器。因此,这里是我的YML文件,创建一个pod
apiVersion: v1
kind: pod
metadata:
name: sidecar
spec:
volumes:
- name: log
emptyDir: {}
containers:
- image: busybox
name: main-container
args:
- /bin/sh
- -c
- >
while true: do
echo "$(date) INFO hello from main-container" >> /var/log/myapp.log ;
sleep 1;
done
volumeMounts:
- name: log
mountPath: /var/log
- name: sidecar-container
image: busybox
args:
- /bin/sh
- -c
- tail -fn+1 /var/log/myapp.log
volumeMounts:
- name: log
mountPath: /var/log

现在了解一下这个YML文件
- 为了便于理解,我把我的容器命名为main-container和sidecar-container。
- 主容器,我们的应用程序(Nginx)就在其中。
- 通过卷挂载,共享路径被挂载在两个容器中。
现在创建这个pod
为sidecar容器创建pod
kubectl apply -f sidecar.yml

现在检查pod的状态
检查pod状态,显示有两个容器,并且都处于运行状态。
kubectl get pods

列出pod中的容器
这个命令显示了pod中包含有容器的情况。因此,现在我们在这个sidecar pod中有两个容器 - 第一个是主容器,第二个是sidecar容器。
kubectl get pods sidecar -o jsonpath=' {.spec.containers[*].name}'

检查sidecar容器的日志
这个命令检查主容器和sidecar容器之间的通信情况。因此,sidecar容器的输出应该显示来自主容器的日志。
kubectl logs -f sidecar -c sidecar-container

检查sidecar pod的IP
荚内的所有容器都共享同一个网络命名空间。因此,这个命令检查sidecar pod的IP。
kubectl get pod sidecar -o wide

检查两个容器的IP
我们的sidecar pod的IP是172.17.0.5。让我们检查一下两个容器是否有相同的IP。
kubectl exec -it sidecar -c sidecar-container --ifconfig eth0
