๐ก Karmada Multi-Cluster Control Plane Setup โ Executive Summary
Technical architectural analysis, practical configuration manifests, and deployment instructions for Karmada Multi-Cluster Control Plane Setup.
Install Karmada
Install kubectl-karmada-cli using krew
- [https://karmada.io/docs/installation/install-cli-tools#install-kubectl-karmada](https://karmada.io/docs/installation/install-cli-tools#install-kubectl-karmada)
bash
kubectl krew install karmada
karmada install
bash
# ~/.kube/config or kubeconfig ์ค์ ํ์ผ ๋ค์คํด๋ฌ์คํฐ ๊ตฌ์ฑ ํ ์งํ
#์ค์น
kubectl karmada init
#kubectl karmada completion bash >> /etc/profile
#kamada-apiserver-config๋ฅผ kubeconfig์ ๋ฑ๋ก
cat /etc/karmada/karmada-apiserver.config >> ~/.kube/config
vi ~/.kube/config #์๋ง๊ฒ yaml ์์
Register member cluster
- Register cluster in โpushโ mode
bash
# 0๋จ๊ณ: ํด๋ฌ์คํฐ ๋ณ๊ฒฝ
kubectl config use-context $context
# 1๋จ๊ณ: "kubectl karmada Join" ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ๋ฅผ Karmada ์ ์ด ํ๋ ์ธ์ ๋ฑ๋กํฉ๋๋ค. --cluster-kubeconfig๋ ๋ฉค๋ฒ ํด๋ฌ์คํฐ์ kubeconfig์
๋๋ค.
kubeconfig="~/.kube/config"
kubeconfig="/etc/rancher/k3s/k3s.yaml"
MEMBER_CLUSTER_NAME=$(cat $kubeconfig | grep current-context | sed 's/: /\n/g'| sed '1d')
kubectl karmada --kubeconfig /etc/karmada/karmada-apiserver.config join ${MEMBER_CLUSTER_NAME} --cluster-kubeconfig=$kubeconfig
# 2๋จ๊ณ: karmada ํ์ ํ์
kubectl --kubeconfig /etc/karmada/karmada-apiserver.config get clusters
- Register cluster in โPullโ mode
bash
# 1๋จ๊ณ: "kubectl karmada register" ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ๋ฅผ Karmada ์ ์ด ํ๋ ์ธ์ ๋ฑ๋กํฉ๋๋ค. "--cluster-name"์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฌ ์ปจํ
์คํธ์ ํด๋ฌ์คํฐ๋ก ์ค์ ๋ฉ๋๋ค.
(member) kubectl karmada register 172.10.40.196:32443 --token oqyh3t.1u7pjbmegrwujxmn --discovery-token-ca-cert-hash sha256:523c3801d4dfeb654e8f2ec565d6d50f16246ec55cf30ab64c80a0b1f596149c
# 2๋จ๊ณ: karmada ๋ฉค๋ฒ ํ์
(karmada) kubectl --kubeconfig /etc/karmada/karmada-apiserver.config get clusters
Install and log in to Karmada Dashboard
bash
#karmada-host๋ก ์ ํ
kubectl config use-context default
#๋์๋ณด๋ ์๋น์ค ๋ฐฐํฌ
kubectl apply -f https://raw.githubusercontent.com/karmada-io/dashboard/main/deploy/karmada-dashboard.yaml
#karmada-apiserver๋ก ์ ํ
kubectl config use-context karmada-apiserver
#์๋น์ค์ด์นด์ดํธ ์์ฑ
kubectl apply -f https://raw.githubusercontent.com/karmada-io/dashboard/main/deploy/karmada-dashboard-role.yaml
#๋ฌด๊ธฐ๋ช
ํ ํฐ ๋ฐ๊ธฐ : k8s ๋ฒ์ ์ด ๋์ ๊ฒฝ์ฐ sa์์ฑ ํ ์๋์ผ๋ก ์ํฌ๋ฆฟ์์ฑ ํด์ผ ํจ.
kubectl -n karmada-system get secret $(kubectl -n karmada-system get sa/karmada-dashboard -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
#๋ธ๋ผ์ฐ์ ์ ์ ํ jwt๋ก ์ธ์ฆ !! ์ค๊ตญ์ด ์ฃผ์, ์ ์ํ ์์ด๋ก ๋ณ๊ฒฝ๊ฐ๋ฅ
#(๋
ธ๋ํฌํธ 30486 ์ ๊ทผ)




Leave a Reply