개요
쿠버네티스 1.28 버전부터 도입된 sidecar container에 대해 알아본다.
1.28 버전 이전의 sidecar 패턴
Sidecar 패턴은 서비스 메시, metric 수집, secret 가져오기 등에서 많이 쓰여왔다. 하지만 사이드카 컨테이너를 구현하기는 쉽지 않았다.
1.28버전 이전까지는 컨테이너가 사이드카 컨테이너임을 쿠버네티스에게 알려줄 방법이 없었다.

발생할 수 있는 이슈
이는 사이드카 컨테이너가 메인 컨테이너 종료 전에 종료될 수 있거나, 작업이 실패하더라도 살아있을 수 있다는 의미이다. 따라서 몇가지 문제가 발생했다.
- Job의 경우 기본 컨테이너가 완료 되었지만 사이드카 컨테이너가 계속 실행되면 pod가 성공적으로 종료 됐는지 올바르게 판단할 수 없다.
- 사이드카 컨테이너가 너무 늦게 시작되어 기본 컨테이너 시작 시 이를 사용할 수 없게 되어 컨테이너가 다시 시작될 때까지 기다려야 한다.
- Istio 사이드카 컨테이너가 기본 컨테이너보다 늦게 시작되어 기본 컨테이너가 시작될 때 일시적으로 네트워크를 사용할 수 없게 된다.
- GKE에서 Cloud SQL 프록시를 통해 Cloud SQL에 엑세스할 때 기본 컨테이너보다 프록시가 늦게 시작되어 데이터베이스에 연결할 수 없게 된다.
1.28 버전 이후의 sidecar 패턴 지원
1.28버전부터 init Container에서 restartPolicy 필드를 Always로 설정할 수 있게 되었다.
Kubernetes v1.28: Introducing native sidecar containers
Kubernetes v1.28: Introducing native sidecar containers
Authors: Todd Neal (AWS), Matthias Bertschy (ARMO), Sergey Kanzhelev (Google), Gunju Kim (NAVER), Shannon Kularathna (Google) This post explains how to use the new sidecar feature, which enables restartable init containers and is available in alpha in Kube
kubernetes.io

설정시 동작 메커니즘
이렇게 설정을 하면 쿠버네티스는 이 컨테이너를 사이드카 컨테이너로 인식하고 일반 컨테이너와 다르게 아래처럼 다룬다.
- kubelet은 사이드카 컨테이너가 끝날때까지 기다리지 않고 시작이 완료될 때까지만 기다린다.
- pod의 restartPolicy가 Never가 아닌 이상, 사이드카 컨테이너가 시작 중에 실패하면 다시 시작된다. 이 경우 전체 pod가 실패로 처리된다.
- 사이드카 컨테이너는 기본 컨테이너가 실행되는 동안 계속 실행된다.
- 사이드카 컨테이너는 해당 pod에 있는 모든 일반 컨테이너가 완료되면 종료된다.
kind: Pod
...
spec:
initContainers:
- name: vault-agent
image: hashicorp/vault:1.12.1
- name: istio-proxy
image: istio/proxyv2:1.16.0
args: ["proxy", "sidecar"]
restartPolicy: Always
containers:
...
이 기능에 맞추어 Istio에서도 네이티브 사이드카 기능과 매치되는 기능 업데이트를 진행했다.
Istio native sidecar
Reference
- https://hwchiu.medium.com/exploring-kubernetes-1-28-sidecar-container-support-ed1a39ac7fe0
- https://istio.io/latest/blog/2023/native-sidecars/
- https://medium.com/@seifeddinerajhi/kubernetes-1-28-new-features-for-sidecar-containers-jobs-and-proxies-1c30315243e9
- https://kubernetes.io/blog/2023/08/25/native-sidecar-containers/
'Kubernetes' 카테고리의 다른 글
Autoscaler(HPA, VPA, CA) 개념 (0) | 2024.01.07 |
---|---|
Sidecar Containers (v1.28~) (0) | 2023.12.27 |
Authentication / Authorization (0) | 2023.02.09 |
Controller (0) | 2023.02.08 |
AutoScaler (0) | 2023.02.08 |
개요
쿠버네티스 1.28 버전부터 도입된 sidecar container에 대해 알아본다.
1.28 버전 이전의 sidecar 패턴
Sidecar 패턴은 서비스 메시, metric 수집, secret 가져오기 등에서 많이 쓰여왔다. 하지만 사이드카 컨테이너를 구현하기는 쉽지 않았다.
1.28버전 이전까지는 컨테이너가 사이드카 컨테이너임을 쿠버네티스에게 알려줄 방법이 없었다.

발생할 수 있는 이슈
이는 사이드카 컨테이너가 메인 컨테이너 종료 전에 종료될 수 있거나, 작업이 실패하더라도 살아있을 수 있다는 의미이다. 따라서 몇가지 문제가 발생했다.
- Job의 경우 기본 컨테이너가 완료 되었지만 사이드카 컨테이너가 계속 실행되면 pod가 성공적으로 종료 됐는지 올바르게 판단할 수 없다.
- 사이드카 컨테이너가 너무 늦게 시작되어 기본 컨테이너 시작 시 이를 사용할 수 없게 되어 컨테이너가 다시 시작될 때까지 기다려야 한다.
- Istio 사이드카 컨테이너가 기본 컨테이너보다 늦게 시작되어 기본 컨테이너가 시작될 때 일시적으로 네트워크를 사용할 수 없게 된다.
- GKE에서 Cloud SQL 프록시를 통해 Cloud SQL에 엑세스할 때 기본 컨테이너보다 프록시가 늦게 시작되어 데이터베이스에 연결할 수 없게 된다.
1.28 버전 이후의 sidecar 패턴 지원
1.28버전부터 init Container에서 restartPolicy 필드를 Always로 설정할 수 있게 되었다.
Kubernetes v1.28: Introducing native sidecar containers
Kubernetes v1.28: Introducing native sidecar containers
Authors: Todd Neal (AWS), Matthias Bertschy (ARMO), Sergey Kanzhelev (Google), Gunju Kim (NAVER), Shannon Kularathna (Google) This post explains how to use the new sidecar feature, which enables restartable init containers and is available in alpha in Kube
kubernetes.io

설정시 동작 메커니즘
이렇게 설정을 하면 쿠버네티스는 이 컨테이너를 사이드카 컨테이너로 인식하고 일반 컨테이너와 다르게 아래처럼 다룬다.
- kubelet은 사이드카 컨테이너가 끝날때까지 기다리지 않고 시작이 완료될 때까지만 기다린다.
- pod의 restartPolicy가 Never가 아닌 이상, 사이드카 컨테이너가 시작 중에 실패하면 다시 시작된다. 이 경우 전체 pod가 실패로 처리된다.
- 사이드카 컨테이너는 기본 컨테이너가 실행되는 동안 계속 실행된다.
- 사이드카 컨테이너는 해당 pod에 있는 모든 일반 컨테이너가 완료되면 종료된다.
kind: Pod
...
spec:
initContainers:
- name: vault-agent
image: hashicorp/vault:1.12.1
- name: istio-proxy
image: istio/proxyv2:1.16.0
args: ["proxy", "sidecar"]
restartPolicy: Always
containers:
...
이 기능에 맞추어 Istio에서도 네이티브 사이드카 기능과 매치되는 기능 업데이트를 진행했다.
Istio native sidecar
Reference
- https://hwchiu.medium.com/exploring-kubernetes-1-28-sidecar-container-support-ed1a39ac7fe0
- https://istio.io/latest/blog/2023/native-sidecars/
- https://medium.com/@seifeddinerajhi/kubernetes-1-28-new-features-for-sidecar-containers-jobs-and-proxies-1c30315243e9
- https://kubernetes.io/blog/2023/08/25/native-sidecar-containers/
'Kubernetes' 카테고리의 다른 글
Autoscaler(HPA, VPA, CA) 개념 (0) | 2024.01.07 |
---|---|
Sidecar Containers (v1.28~) (0) | 2023.12.27 |
Authentication / Authorization (0) | 2023.02.09 |
Controller (0) | 2023.02.08 |
AutoScaler (0) | 2023.02.08 |