Log collection example for sidecar containers (#64)

* Log collection example for sidecar containers

* Add service and update readme

* Update 16-sidecar-containers/README.md

Co-authored-by: Matthieu Dumont <5095856+Jerska@users.noreply.github.com>
pull/67/head
Jawad Seddar 3 years ago committed by GitHub
parent 10b545a97d
commit 843e542937
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -3,20 +3,58 @@ apiVersion: v1
kind: Pod
metadata:
name: two-containers
labels:
app: sidecar-container
spec:
volumes:
- name: shared-data
- name: shared-logs
emptyDir: {}
- name: fluentd-config
configMap:
name: fluentd
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: shared-data
mountPath: /usr/share/nginx/html
- name: debian
image: debian
- name: shared-logs
mountPath: /var/log/nginx
- name: fluentd
image: fluent/fluentd:v1.11-1
volumeMounts:
- name: shared-data
mountPath: /pod-data
command: ["/bin/sh"]
args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]
- name: shared-logs
mountPath: /logs
- name: fluentd-config
mountPath: /fluentd/etc
---
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd
data:
fluent.conf: |
<source>
@type tail
path /logs/*
pos_file /tmp/fluentd-nginx-pos.log
tag nginx
<parse>
@type nginx
</parse>
</source>
<match nginx>
@type stdout
</match>
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
ports:
- port: 80
targetPort: 80
selector:
app: sidecar-container

@ -14,7 +14,7 @@ spec:
- name: container1
image: nginx
- name: container2
image: busybox
image: fluentd
```
Here we have 2 containers: `container1` and `container2`.
@ -33,14 +33,20 @@ Istio, the service mesh tool, installs a sidecar container to do its job: https:
## Exercices
Review and apply the file [01-sidecar.yml](01-sidecar.yml). Connect to the `nginx` container and look at the file system in `/usr/share/nginx/html`.
Review and apply the file [01-sidecar.yml](01-sidecar.yml).
Connect to the `nginx` container (`kubectl exec -it two-containers -c nginx -- /bin/sh`) and look at the file system in `/var/log/nginx`.
Do the same for the `fluentd` container and this time look in `/logs`. What do you see?
Tail the logs from the fluentd pod (`kubectl logs -f two-containers -c fluentd`) and in another terminal window, send requests to the nginx service with a `curl` from a separate pod (or nginx's pod itself). What do you see? How do you explain it?
This exercice is taken from the [official Kubernetes documentation](https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/#creating-a-pod-that-runs-two-containers).
## Clean up
```sh
kubectl delete service,deployment,pod --all
kubectl delete service,deployment,pod,configmap --all
```
## Links

Loading…
Cancel
Save