반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 오퍼레이터
- keda
- operator
- kubernetes operator
- seldon core
- gitops
- knative
- Kopf
- 카오스 엔지니어링
- mlops
- Kubernetes 인증
- CI/CD
- blue/green
- Litmus
- nginx ingress
- eBPF
- Kubernetes
- Argo
- Kubeflow
- CANARY
- argocd
- serving
- Model Serving
- opensearch
- Continuous Deployment
- MLflow
- Pulumi
- xdp
- opentelemetry
- tekton
Archives
- Today
- Total
Kubernetes 이야기
kr8s - Kubernetes용 Python 클라이언트 라이브러리 본문
반응형
Kubernetes Python 클라이언트 라이브러리는 보통 다음을 참고하여 개발한다.
https://github.com/kubernetes-client
kubernetes-client 는 asynio를 지원하지 않기 때문에 이런 경우에는 kubernetes-asyncio를 사용하기도 한다.
https://github.com/tomplus/kubernetes_asyncio
여러 오픈소스들 중 kubernetes python client로 kr8s를 살펴보자. kr8s는 매우 명확하고 읽기 쉽게 개발을 진행할 수 있는 장점이 있다. 간단히 pod list를 조회하는 예제를 살펴보자.
kubernetes-client
from kubernetes import client, config
selector = {'component': 'kube-scheduler'}
selector_str = ",".join([f"{key}={value}" for key, value in selector.items()])
config.load_kube_config()
v1 = client.CoreV1Api()
for pods in v1.list_pod_for_all_namespaces(label_selector=selector_str, ).items:
print(pod.metadata.namespace, pod.metadata.name)
kr8s
import kr8s
selector = {'component': 'kube-scheduler'}
for pod in kr8s.get("pods", namespace=kr8s.ALL, label_selector=selector):
print(pod.namespace, pod.name)
한 눈에 봐도 kr8s가 간결하다는 것을 알 수 있다. 또하는 asyncio도 kubernetes_asyncio 와 비교하면 간결하다.
kubernetes_asyncio
from kubernetes_asyncio import client, config
from kubernetes_asyncio.client.api_client import ApiClient
await config.load_kube_config()
async with ApiClient() as api:
v1 = client.CoreV1Api(api)
nodes = await v1.list_node()
for node in nodes.items:
print(node.metadata.name)
kr8s
import kr8s.asyncio
for node in await kr8s.asyncio.get("nodes"):
print(node.name)
또한, 몇 가지 유용한 기능들을 제공한다.
1) pod gen 기능
from kr8s.objects import Pod
pod = Pod.gen(name="my-pod", image="my-image")
pod.create()
2) owner reference 설정
from kr8s.objects import Deployment, Pod
deployment = Deployment.get("my-deployment")
pod = Pod.get("my-pod")
deployment.adopt(pod)
kr8s 홈페이지로 접속하면 object들에 대한 상세 function 들을 조회할 수 있다.
반응형
'Kubernetes > 일반' 카테고리의 다른 글
nvidia k8s device driver 및 dcgm 설치 (0) | 2024.05.11 |
---|---|
OpenSearch 및 Fluent Bit로 Kubernetes Event 및 Container 로그 저장하기 (0) | 2024.05.06 |
kubernetes apiserver 를 통해 Cluster 정보 조회 (1) | 2023.12.25 |
Strimzi로 Kubernetes에 Apache Kafka 설치 (1) | 2023.12.10 |
Kubernetes Gateway API (0) | 2023.12.10 |
Comments