💡 핵심 요약 (Executive Summary)
본 가이드는 karmada 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.
관련 페이지
운영
karmada-apiserver
pod로 러닝중인 control-plane이며, 해당 apiserver의 deploy는 pod를 배포하지 않고 member cluster의 deploy를 배포함.
txt
kubectl config use-context karmada-apiserver
kubectl get deploy,pp,cpp -A
멤버 클러스터 자원 조회
txt
## 설치방식에 따라서 kubectl karmada, kubectl-karmada, karmadactl 등으로 사용됨.
## 아래에서는 kubectl karmada로 예시
## kubectl 명령어와 동일하며, CLUSTER column이 추가됨
kubectl karmada get pods
kubectl karmada get deploy
kubectl karmada get svc -A ...
멤버 클러스터 로그 조회
txt
## 반드시 클러스터를 지정해야 함
kubectl karmada get deploy nfs-pod-provisioner
>>>
NAME CLUSTER READY UP-TO-DATE AVAILABLE AGE ADOPTION
nfs-pod-provisioner cluster1 1/1 1 1 6d17h N
nfs-pod-provisioner cluster2 1/1 1 1 7d N
<<<
kubectl karmada logs deploy/nfs-pod-provisioner --cluster=cluster1 -f
자원 전파 정책 설정 및 배포 전파(예시: deployment/nginx)
Resource Propagating | karmada
이렇게 배포된 member cluster의 deploy는 멤버에서 직접 삭제해도 karmada-scheduler에 의해 재생성됨
txt
#karmada apiserver 사용
kubectl config use-context karmada-apiserver
kubectl get clusters
kubectl apply -f propagationpolicy.yaml#아래의 예시 참조#kubectl get cpp #clusterpropagationpolicies.policy.karmada.io
kubectl get pp#propagationpolicies.policy.karmada.io
kubectl create ns karmada-test
kubectl create deploy nginx -n karmada-test --image=nginx --replicas=2
#karmada control-plane에서 배포 확인
kubectl get deploy -n karmada-test
>>>
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/2 2 2 16s
<<<
#멤버클러스터 배포 확인
kubectl karmada get deploy -n karmada-test
>>>
NAME CLUSTER READY UP-TO-DATE AVAILABLE AGE ADOPTION
nginx cluster1 1/1 1 1 29s Y
nginx cluster2 1/1 1 1 29s Y
<<<
samples
propagationpolicy.yaml
https://github.com/karmada-io/karmada/blob/master/samples/nginx/propagationpolicy.yaml
txt
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: nginx-propagation
namespace: karmada-test
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: nginx
namespace: karmada-test
placement:
clusterAffinity:
clusterNames:
- cluster1
- cluster2
replicaScheduling:
replicaDivisionPreference: Weighted
replicaSchedulingType: Divided
weightPreference:
staticWeightList:
- targetCluster:
clusterNames:
- cluster1
weight: 1
- targetCluster:
clusterNames:
- cluster2
weight: 1
cpp.yaml
txt
apiVersion: policy.karmada.io/v1alpha1
kind: ClusterPropagationPolicy
metadata:
name: nginx-clusterpropagation
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: nginx
namespace: karmada-test2
placement:
clusterAffinity:
clusterNames:
- cluster1
- cluster2
replicaScheduling:
replicaDivisionPreference: Weighted
replicaSchedulingType: Divided
weightPreference:
staticWeightList:
- targetCluster:
clusterNames:
- cluster1
weight: 1
- targetCluster:
clusterNames:
- cluster2
weight: 1
Leave a Reply