Kubeflow for ML - Chapter 3
Chapter 3: Kubeflow Design: Beyond the Basics
๐ ๋ณธ ํฌ์คํธ๋ Kubeflow for Machine Learning ์ฑ ์ ๋ฐ์ท/์์ฝํ๋ฉด์ ํ์ํ ๋ด์ฉ์ ์ถ๊ฐํ์ฌ ์์ฑํ์์ต๋๋ค.
- Chapter 1: Kubeflow: What It is and Who It Is For
- Chapter 2: Hello Kubeflow
- Chapter 3: Kubeflow Design: Beyond the Basics
- Chapter 4: Kubeflow Pipelines
- Chapter 5: Data and Feature Preparation
- Chapter 6: Artifact and Metadata Store
- Chapter 7: Training a Machine Learning Model
- Chapter 8: Model Inference
- Chapter 9: Case Study Using Multiple Tools
- Chapter 10: Hyperparameter Tuning And Automated Machine Learning
Introduction
๋ณธ ์ฅ์์๋ Kubeflow์ ์ปดํฌ๋ํธ๋ค์ ์ดํด๋ณด๊ฒ ๋ฉ๋๋ค. ์๋ Figure 3-1์ Kubeflow์ ์ํคํ ์ฒ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
Getting Around the Central Dashboard
Kubeflow์ ๋ฉ์ธ ์ธํฐํ์ด์ค๋ ์ผํธ๋ด ๋์๋ณด๋(central dashboard)์ ๋๋ค. ์ฌ์ฉ์๋ ์ด ํ์ด์ง๋ฅผ ํตํด ๋๋ถ๋ถ์ Kubeflow ์ปดํฌ๋ํธ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
Notebooks (JupyterHub)
Kubeflow์์๋ Notebook ํ๊ฒฝ์ผ๋ก JuypterHub๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋จ์ผ ์ฌ์ฉ์์ Jupyter Notebook์ ์ฌ๋ฌ ์ธ์คํด์ค์ ๋ํด ์์ฑ, ๊ด๋ฆฌ, ํ๋ก์ํ๋ ๋ค์ค ์ฌ์ฉ์์ฉ ํ๋ธ์ธ๋ฐ์. JupyterHub์์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ์ผ์ชฝ ์ฌ์ด๋ ๋ฉ๋ด์์ Notebooks๋ฅผ ํด๋ฆญํ๋ฉด ๋ฉ๋๋ค. ์๋ก์ด ์๋ฒ๋ฅผ ์์ฑํ ๋ Docker ์ด๋ฏธ์ง, ์๋ฒ ์์ ๋ฑ์ ์ค์ ํ ์ ์์ต๋๋ค.
Kubeflow๋ ๋ฐ์ดํฐ ์ฌ์ด์ธํฐ์คํธ๊ฐ ๋
ธํธ๋ถ ํ๊ฒฝ์ ๋ฒ์ด๋์ง ์์ ์ฑ๋ก ํด๋ฌ์คํฐ์ ๊ด๋ จ๋ ์์
์ ์ํํ ์ ์๋๋ก ๋
ธํธ๋ถ ์ด๋ฏธ์ง์ kubectl
์ ํฌํจํ์์ต๋๋ค. ๊ทธ๋์ Jupyter Notebook์ ์๋ฌด ์
์์ !kubectl get pod -A
๋ฅผ ์คํํ๋ฉด ํ์ฌ Kubernetes์ Pod ๋ชฉ๋ก์ ํ์ธํ ์ ์์ต๋๋ค.
Jupyter notebook Pod์ default-editor
๋ผ๋ ํน์ํ ์๋น์ค ๊ณ์ ์ผ๋ก ์คํ๋๊ณ ์์ต๋๋ค. ์ด ๊ณ์ ์ Pods, Deployments, Services, Jobs, TFJobs, PyTorchJobs์ ๊ฐ์ ๋ค์ํ Kubernetes ๊ถํ์ ๊ฐ๊ณ ์์ต๋๋ค. ์ด ๊ณ์ ์ ์ฌ์ฉ์ ์ ์ ์ญํ (custom role)์ ๋ฐ์ธ๋ฉํ์ฌ ๋
ธํธ๋ถ ์๋ฒ์ ๊ถํ์ ์ ํํ๊ฑฐ๋ ํ์ฅํ ์ ์์ต๋๋ค.
Training Operators
JupyterHub๋ง์ผ๋ก ํ๋ก๋์ ํ๊ฒฝ์์์ ํ์ต์ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ Kubeflow์์๋ ๋ค์๊ณผ ๊ฐ์ ํ์ต ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
- Chainer
- MPI
- Apache MXNet
- PyTorch
- TensorFlow
Kubeflow์์๋ ์คํผ๋ ์ดํฐ(operator)๋ผ๋ application-specific ์ปจํธ๋กค๋ฌ๋ก ๋ถ์ฐ ํ์ต ์์ ์ ๊ด๋ฆฌํฉ๋๋ค. ์ด ์คํผ๋ ์ดํฐ๋ Kubernetes API๋ก ํ์ฅํ์ฌ ๋ฆฌ์์ค ์ํ๋ฅผ ์์ฑ, ๊ด๋ฆฌ, ์กฐ์ํฉ๋๋ค. ๋ ๋์๊ฐ์ ์คํผ๋ ์ดํฐ๋ฅผ ํตํด ํ์ฅ์ฑ, ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ(observability), ํ์ผ์ค๋ฒ(failover)์ ๊ฐ์ ์ค์ํ ๋ฐฐํฌ ์ปจ์ ๋ค์ ์๋ํํ ์ ์์ต๋๋ค. ๋ํ ํ์ดํ๋ผ์ธ์์ ์์คํ ๋ด ๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ์คํ๋ค์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Kubeflow Pipelines
Kubeflow Pipelines์ ๋จธ์ ๋ฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์ค์ผ์คํธ๋ ์ดํธํฉ๋๋ค. Argo Workflows ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด ์์ผ๋ฉฐ, ๋ฐ๋ผ์ Kubeflow๋ Argo ์ปดํฌ๋ํธ๋ค์ ์ค์นํ๊ฒ ๋ฉ๋๋ค. ํฐ ํ์์ ํ์ดํ๋ผ์ธ ์คํ์๋ ๋ค์ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํฉ๋๋ค.
- Python SDK
- DSL Compiler
- Pipeline Service
- Kubernetes resources
- ํ์ดํ๋ผ์ธ ์๋น์ค๋ Kubernetes API๋ฅผ ํธ์ถํ์ฌ ํ์ดํ๋ผ์ธ์ ์คํํ๋ ๋ฐ ํ์ํ Kubernetes CRD (์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค ์ ์, Custom Resource Definitions)๋ฅผ ์์ฑํฉ๋๋ค.
- Orchestration controllers
- ์ค์ผ์คํธ๋ ์ด์ ์ปจํธ๋กค๋ฌ๋ค์ CRD์์ ์ง์ ํ ํ์ดํ๋ผ์ธ ์คํ์ ์๋ฃ์ ํ์ํ ์ปจํ ์ด๋๋ฅผ ์คํํฉ๋๋ค. ์ปจํ ์ด๋๋ค์ ๊ฐ์ ๋จธ์ ์ Kubernetes Pod ๋ด์์ ์คํ๋ฉ๋๋ค.
- Artifact storage
- Metadata
- ์คํ, ์์ , ์คํ, ๋ฉํธ๋ฆญ ๋ฑ์ผ๋ก ๋ฉํ๋ฐ์ดํฐ๋ MySQL์ ์ ์ฅ๋ฉ๋๋ค.
- Artifacts
- ํ์ดํ๋ผ์ธ ํจํค์ง, ๋ทฐ, ์๊ณ์ด๊ณผ ๊ฐ์ ๋๊ท๋ชจ ๋ฉํธ๋ฆญ ๋ฑ์ผ๋ก Kubeflow Pipelines์ ์ด๋ฐ ์ํฐํฉํธ๋ค์ MinIO server, GCS, Amazon S4์ ๊ฐ์ ์ํฐํฉํธ ์คํ ์ด์ ์ ์ฅํฉ๋๋ค.
- Metadata
Hyperparameter Tuning
Kubeflow๋ Katib ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ํตํด Kubernetes ํด๋ฌ์คํฐ ์์์ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋์ ์ํํ๋๋ก ์ง์ํฉ๋๋ค. Katib์ Bayesian Optimization ๊ธฐ๋ฐ์ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋ ํ๋ ์์ํฌ๋ก TensorFlow, MXNet, PyTorch ๋ฑ์ ๋ํ ํ๋์ ์ง์ํฉ๋๋ค. Katib์ ๋ค์ ๋ค ๊ฐ์ง ์ฃผ์ ์ปจ์ ์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ต๋๋ค.
- Experiment
- Feasible space์์ ์คํํ๋ ํ๋์ ์ต์ ํ ์์ ์ ๋งํฉ๋๋ค. ์คํ ์ค์๋ ๋ชฉ์ ํจ์ $f(x)$๊ฐ ๋ฐ๋์ง ์๋ ๊ฒ์ ๊ฐ์ ํฉ๋๋ค.
- Trial
- ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ชฉ๋ก์ ๋๋ค. ํ๋์ Trial์ด ๋๋๋ฉด ๋ชฉ์ ํจ์ $f(x)$์ ๋ํ ๊ณ์ฐ๊ฐ์ด ๋์ค๊ฒ ๋ฉ๋๋ค.
- Job
- Suggestion
- ํ๋ผ๋ฏธํฐ ์งํฉ์ ๊ตฌ์ถํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฏธํฉ๋๋ค. Katib์ ํ์ฌ Random, Grid, Hyperband, Bayesian Optimization์ ์ง์ํฉ๋๋ค.
Model Inference
Kubeflow๋ ML ๋ชจ๋ธ์ ์ด์ ํ๊ฒฝ์ ๋ง์ถฐ ํ์ฅํด ๋ฐฐํฌํ ์ ์๊ฒ ํฉ๋๋ค. TFServing, Seldon Serving, PyTorch Serving, TensorRT ๊ฐ์ ๋ชจ๋ธ ์๋น ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ ๋ฟ๋ง ์๋๋ผ ์๋ ํ์ฅ, ๋คํธ์ํน, ํฌ์ค ์ฒดํน, ์๋ฒ ๊ตฌ์ฑ์ ๋ํ ๋ชจ๋ธ ์ถ๋ก ๋ฌธ์ ๋ฅผ ์ผ๋ฐํํ๋ KFServing๊น์ง ์ ๊ณตํฉ๋๋ค. ์ ์ฒด์ ์ธ ๊ตฌํ์ Istio์ Knative Serving์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ธ ์๋น์ ๊น๋ค๋กญ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์ค์ผ์ผ์ ๊ณผ ์ค์ผ์ผ๋ค์ด์ด ์ค์ํฉ๋๋ค. Knative serving์ ์๋ก์ด ์์ฒญ์ ์๋์ผ๋ก ์ต์ ๋ชจ๋ธ ๋ฐฐํฌ๋ก ๋ผ์ฐํ ํ์ฌ ์ง์์ ์ธ ๋ชจ๋ธ ์ ๋ฐ์ดํธ๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์ดํ ๋กค๋ฐฑ์ ์ํด ์ฌ์ฉํ์ง ์๋ ๋ชจ๋ธ์ ๊ณ์ ์ ์งํ๋ ๋ฆฌ์์ค ํ์ฉ์ ์ต์ํํด์ผ ํฉ๋๋ค. Knative๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ์ต ๋๋ฌธ์ ๊ธฐ๋ณธ ์ธํ๋ผ ์คํ์ ์ด์ ์ ํ์ฉํด Kubernetes์ ์๋ ๋ก๊น , ํธ๋ ์ด์ฑ, ๋ชจ๋ํฐ๋ง ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. KFServing ๋ํ Knative eventing์ ์ฌ์ฉํด ํ๋ฌ๊ทธํ ์ด๋ฒคํธ ์์ค๋ฅผ ์ ํ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
KFServing ๋ฐฐํฌ๋ ๋ค์์ ์ปดํฌ๋ํธ๋ค์ ์ฐ๊ฒฐํ๋ ์ผ์ข ์ ์ค์ผ์คํธ๋ ์ดํฐ ์ญํ ์ ํฉ๋๋ค.
- Preprocessor
- ์ ํ์ ์ปดํฌ๋ํธ๋ก ๋ชจ๋ธ ์๋น์ ํ์ํ ํํ๋ก ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ์ญํ
- Predictor
- ํ์์ ์ธ ์ปดํฌ๋ํธ๋ก ์ค์ ๋ชจ๋ธ ์๋นํ๋ ์ญํ
- Postprocessor
- ์ ํ์ ์ปดํฌ๋ํธ๋ก ๋ชจ๋ธ ์๋น ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ์ ๋ง๋ ํํ๋ก ๋ณํํ๋ ์ญํ
Metadata
๋ชจ๋ธ ์์ฑ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ์ ํ๊ณ ์บก์ฒํ๋ ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ Kubeflow์์ ์ค์ํ ์ปดํฌ๋ํธ ์ค ํ๋์ ๋๋ค. ๋ฉํ๋ฐ์ดํฐ ์ปดํฌ๋ํธ์๋ ๋ค์ ์ ๋ณด๋ฅผ ๋ฑ๋กํ ์ ์์ต๋๋ค.
- ๋ชจ๋ธ ์์ฑ์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ ์์ค
- ํ์ดํ๋ผ์ธ์ ์ปดํฌ๋ํธ๋ ๊ฐ ๋จ๊ณ๋ฅผ ํตํด ์์ฑ๋ ์ํฐํฉํธ
- ์ปดํฌ๋ํธ๋ ๊ฐ ๋จ๊ณ์ ์คํ ๊ฒฐ๊ณผ
- ํ์ดํ๋ผ์ธ๊ณผ ๊ด๋ จ๋ ์ฐ๊ฒฐ ์ ๋ณด
์ด์ฒ๋ผ ML ๋ฉํ๋ฐ์ดํฐ๋ ML ์ํฌํ๋ก์ฐ ๋ด ์ปดํฌ๋ํธ์ ๊ฐ ๋จ๊ณ์ ์ธํ๊ณผ ์์ํ์ ์ถ์ ํฉ๋๋ค.
Support Components
MinIO
ํ์ดํ๋ผ์ธ ์ํคํ ์ฒ์ ๊ธฐ๋ฐ์ ๊ณต์ ์ ์ฅ์์ ๋๋ค. ์์ฆ์ ํด๋ผ์ฐ๋ ์ ๊ณต ์ ์ฒด๋ง๋ค ๋ณ๋์ ์คํ ๋ฆฌ์ง๋ฅผ ์ ๊ณตํ๋๋ฐ์. ์ด๋ก ์ธํด ์์กด์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. Kubeflow๋ ์ด๋ฐ ์์กด์ฑ ๋ฌด์ ๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๋๊ท๋ชจ ํ๋ผ์ด๋น ํด๋ผ์ฐ๋ ์ธํ๋ผ์ฉ์ผ๋ก ์ค๊ณ๋ ๊ณ ์ฑ๋ฅ ๋ถ์ฐ ๊ฐ์ฒด ์ ์ฅ์์ธ MinIO๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฌผ๋ก ํ๋ผ์ด๋น ํด๋ผ์ฐ๋ ๋ฟ๋ง ์๋๋ผ ํผ๋ธ๋ฆญ APPI์ ๋ํ ์ผ๊ด์ ์ธ ๊ฒ์ดํธ์จ์ด ์ญํ ๋ ์ํ ๊ฐ๋ฅํฉ๋๋ค.
MinIO๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. Kubeflow์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ๊ฐ์ ๋จ์ผ ์ปจํ ์ด๋ ๋ชจ๋์ธ๋ฐ ์ด๋ ์ค์ ์ ํตํด ๋ถ์ฐํํ ์ ์์ต๋๋ค. ๋ํ ์ ์ฐํ ๊ฒ์ดํธ์จ์ด ์ต์ ์ ์ ๊ณตํ์ฌ ๊ท๋ชจ ์ ํ ์์ด ํด๋ผ์ฐ๋์ ๋ ๋ฆฝ์ ์ธ ๊ตฌํ์ ๊ฐ๋ฅ์ผ ํฉ๋๋ค.
MinIO์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋ค์ ๋ช
๋ น์ด๋ฅผ ํตํด ํฌํธํฌ์๋ฉํ์ฌ https://localhost:9000
์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. (HTTPS ๋ฆฌ๋ค์ด๋ ์
์ด ์๋๋ค๋ฉด http://localhost:9000
์ผ๋ก ์ ์ํด์ผ ํฉ๋๋ค.) ๊ธฐ๋ณธ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ minio/minio123
์
๋๋ค.
1
kubectl port-forward --address=0.0.0.0 -n kubeflow svc/minio-service 9000:9000
์ฌ๊ธฐ์ MinIO CLI๋ฅผ ์ค์นํ์ฌ ์ํฌ์คํ ์ด์ ์์ MinIO์ ๋ํ ์ฌ๋ฌ ๊ฐ์ง ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์ ๊ฒฝ์ฐ์๋ Linuxbrew๋ฅผ ์ค์นํด๋์์ ๊ฐ๋จํ๊ฒ ์ค์นํ ์ ์์์ต๋๋ค.
1
brew install minio/stable/minio
์ค์น๊ฐ ์๋ฃ๋๋ฉด MinIO ํด๋ผ์ด์ธํธ๊ฐ Kubeflow MinIO์ ์ฐ๊ฒฐ๋๋๋ก ํฉ๋๋ค.
1
mc config host add minio http://localhost:9000 minio minio123
์ด์ ๋ง์ฝ ์๋ก์ด ๋ฒ์ผ์ ๋ง๋ ๋ค๋ฉด ๋ค์์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๋ฉ๋๋ค.
1
mc mb minio/kf-book-examples
Istio
Kubeflow๋ฅผ ์ง์ํ๋ ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ Istio์ ๋๋ค. Istio๋ ๋ค์ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋ ์ผ์ข ์ ์๋น์ค ๋ฉ์ (service mesh)์ ๋๋ค.
- ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ (Service discovery)
- ์๋น์ค๊ฐ ์คํ ์ค์ผ์ผ๋ง ๋ฑ์ ์ด์ ๋ก ๋์ ์ผ๋ก ์์ฑ๋๊ฑฐ๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ผ๋ก ๋ฐฐํฌ๋จ์ ๋ฐ๋ผ ์๋น์ค์ IP๊ฐ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์๋น์ค ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค๋ฅผ ํธ์ถํ ๋ ์๋น์ค์ ์์น๋ฅผ ์์๋ด๋ ๊ธฐ๋ฅ [์ถ์ฒ]
- ๋ก๋ ๋ฐธ๋ฐ์ฑ (Load balancing)
- ์ฅ์ ๋ณต๊ตฌ (Failure Recovery)
- ๋ฉํธ๋ฆญ (Metrics)
- ๋ชจ๋ํฐ๋ง (Monitoring)
- ์๋ ์ ํ (Rate limiting)
- ์ ๊ทผ ์ ์ด (Access control)
- ์๋ํฌ์๋ ์ธ์ฆ (End-to-end authentication)
Istio๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ดํฐ ์์ญ (data plane)๊ณผ ์ปจํธ๋กค ์์ญ (control plane)์ผ๋ก ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์์ญ (Data plane) : ํธ๋ํฝ์ ์ ์กํ๋ ๋ชฉ์ ์ ์ ๊ณตํ๋ ์์ญ์ผ๋ก ์ปจํธ๋กค ์์ญ์ ์ํด ํต์ ๋ฉ๋๋ค.
- ์ปจํธ๋กค ์์ญ (Control plane) : ๋ฐ์ดํฐ ์์ญ์ ์ ์ดํ๋ ์์ญ์ ๋๋ค.
Istio์ ์ฃผ์ ์ปดํฌ๋ํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Envoy
- Istio์ ๋ฐ์ดํฐ ์์ญ์ ์ฅ์ ์ฒ๋ฆฌ (failure handling), ๋์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ, ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Envoy proxy์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ต๋๋ค. Envoy๋ ๋ค์์ ๊ธฐ๋ฅ๋ค์ ํ์ฌํ๊ณ ์์ต๋๋ค.
- ๋์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ
- ๋ก๋ ๋ฐธ๋ฐ์ฑ
- TLS ํฐ๋ฏธ๋ค์ด์ (TLS termination)
- HTTP/2, gRPC ํ๋ก์
- ์ํท ๋ธ๋ ์ด์ปค (Circuit breaker)
- ํฌ์ค ์ฒดํฌ (Health checks)
- ํผ์ผํธ ๊ธฐ๋ฐ์ ํธ๋ํฝ ๋ถํ ์ ํตํ ๋จ๊ณ์ ๋กค์์ (Staged rollouts with percent-based traffic splitting)
- ๊ฒฐํจ ์ฃผ์ (Fault injection)
- ๋ค์ํ ๋ฉํธ๋ฆญ
- Istio์ ๋ฐ์ดํฐ ์์ญ์ ์ฅ์ ์ฒ๋ฆฌ (failure handling), ๋์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ, ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Envoy proxy์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ต๋๋ค. Envoy๋ ๋ค์์ ๊ธฐ๋ฅ๋ค์ ํ์ฌํ๊ณ ์์ต๋๋ค.
- Mixer
- ์๋น์ค ๋ฉ์ ์ ๋ฐ์ ๊ฑธ์ณ ์ ๊ทผ ์ ์ด ๋ฐ ์ฌ์ฉ ์ ์ฑ ์ ์ ์ฉํ๊ณ Envoy ํ๋ก์์ ๊ธฐํ ์๋น์ค๋ก๋ถํฐ ํ ๋ ๋ฉํธ๋ฆฌ(telemetry) ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค.
- Pilot
- Pilot์ ์ง๋ฅํ ๋ผ์ฐํ (intelligent routing)๊ณผ ๋ณต์์ฑ (resiliency)์ ์ํ Envoy ์ฌ์ด๋์นด์ ํธ๋ํฝ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ๋ํด ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Galley
- Galley๋ Istio์ ๊ตฌ์ฑ์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ, ์์ง, ์ฒ๋ฆฌ, ๋ฐฐํฌ๋ฅผ ์ํ ์ปดํฌ๋ํธ์ ๋๋ค. Kubernetes์ YAML ํ์ผ์ Istio๊ฐ ์ดํดํ ์ ์๋ ํํ๋ก ๋ณํํ๋ ์์ ์ ์ํํฉ๋๋ค.
- Citadel
- Citadel์ ๊ฐ๋ ฅํ ์๋น์ค-ํฌ-์๋น์ค์ ์๋ ์ ์ ์ธ์ฆ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
Knative
Knative์์ ๊ฐ์ฅ ์ค์ํ ์์๋ Knative Serving์ ๋๋ค. Knative Serving์ ์๋ฒ๋ฆฌ์ค(serverless) ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ์ ์๋น์ค๋ฅผ ์ง์ํ๋๋ฐ์. Knative Serving์ Kubernetes CRD์ ์งํฉ์ผ๋ก ๊ตฌํ์ด ๋์ด ์์ต๋๋ค.
- Service
- Route
- Configuration
- Revision
Apache Spark
Kubeflow 1.0 ๋ถํฐ Spark ์ก์ ์คํํ ์ ์๋ Spark operator๋ฅผ ๋ด์ฅํ๊ณ ์์ต๋๋ค. ์ถ๊ฐ๋ก Google์ Dataproc๊ณผ Amazon์ Elastic Map Reduce (EMR)๊ณผ์ ํตํฉ๋ ์ง์ํฉ๋๋ค.
Kubeflow Multiuser Isolation
์ต์ ๋ฒ์ ์ Kubeflow๋ ๋ค์ค ์ฌ์ฉ์ ๊ฒฉ๋ฆฌ(multiuser isolation)์ ๋์ ํ์ฌ ๋ค๋ฅธ ํ์ด๋ ์ฌ์ฉ์์ ๊ฐ์ ๋ฆฌ์์ค ํ์ ๊ณต์ ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์๋ก์ ๋ฆฌ์์ค๋ฅผ ์ค์๋ก ์ฐธ์กฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์์ ์ ๋ฆฌ์์ค๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ๋ณดํธํ ์ ์์ต๋๋ค. 1.0 ๋ฒ์ ๋ถํฐ๋ Kubeflow์ Jupyter notebook ์๋น์ค๊ฐ ๋ค์ค ์ฌ์ฉ์ ๊ฒฉ๋ฆฌ๋ฅผ ์์ ํ ์ง์ํ๋ ์ฒซ ๋ฒ์งธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์์ต๋๋ค.