Closed4
k8sでSidecar-ContainerがCrashLoopBackOffになってもServiceはRequestをルーティングし続けるのか?

Sidecar-ContainerがOOMでCrashLoopBackOffになっていた。
この状態でもリクエストが適切に処理できているのか気になったので検証する。

manifestは以下を準備。
sidecarにはlivenessがわざと失敗するように81番ポートを指定。
nginx.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
readinessProbe:
httpGet:
port: 80
path: /
livenessProbe:
httpGet:
port: 80
path: /
- name: nginx-kill
image: nginx:latest
ports:
- containerPort: 80
# command: ["/bin/sh", "-c", "kill 1"]
readinessProbe:
httpGet:
port: 80
livenessProbe:
httpGet:
port: 81
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
applyする。
❯ k apply -f nginx.yml
Warning: spec.template.spec.containers[1].ports[0]: duplicate port definition with spec.template.spec.containers[0].ports[0]
deployment.apps/nginx-deployment created
service/nginx-service created

すでにSTATUSはCrashLoopBackOff。
❯ k get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-757b6bdf78-2bqqc 1/2 CrashLoopBackOff 4 (6s ago) 3m
この状態でport-forwardして接続してみる。
❯ k port-forward service/nginx-service 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80
curlでrequestを送信してみる。
❯ curl -o /dev/null -s -w "%{http_code}\n" "http://localhost:8080"
200

まとめ
- Sidecar-ContainerがCrashLoopBackOffになってもRequestはルーティングされる
このスクラップは6ヶ月前にクローズされました