Karmada 멀티 클러스터 쿠버네티스: 파드 스케줄링과 정책

💡 핵심 요약 (Executive Summary)

본 가이드는 karmada 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents
관련 페이지
운영
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

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *