Closed4

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

ei-showei-show

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

ei-showei-show

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
ei-showei-show

すでに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
ei-showei-show

まとめ

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