安装 karmadactl:
# 下载最新版(以 Linux amd64 为例,其他平台请替换 URL 中的架构) curl -LO https://github.com/karmada-io/karmada/releases/latest/download/karmadactl-linux-amd64.tgz tar -xzf karmadactl-linux-amd64.tgz sudo mv karmadactl /usr/local/bin/ karmadactl version
安装 karmada:找个单独的节点
sudo karmadactl init --kubeconfig number1-kubeconfig
~# sudo karmadactl init --kubeconfig number1
I0928 08:08:12.600097 164125 deploy.go:355] kubeconfig file: number1, kubernetes: https://192.168.0.121:6443
W0928 08:08:12.648649 164125 node.go:52] The kubernetes cluster does not have a Master role.
I0928 08:08:12.648662 164125 node.go:60] Randomly select 3 Node IPs in the kubernetes cluster.
I0928 08:08:12.731710 164125 deploy.go:375] karmada apiserver ip: [192.168.0.121 192.168.0.122]
I0928 08:08:17.072329 164125 cert.go:254] Generate ca certificate success.
I0928 08:08:17.304936 164125 cert.go:254] Generate karmada certificate success.
I0928 08:08:17.638783 164125 cert.go:254] Generate apiserver certificate success.
I0928 08:08:17.697711 164125 cert.go:254] Generate front-proxy-ca certificate success.
I0928 08:08:17.864888 164125 cert.go:254] Generate front-proxy-client certificate success.
I0928 08:08:17.964092 164125 cert.go:254] Generate etcd-ca certificate success.
I0928 08:08:18.038878 164125 cert.go:254] Generate etcd-server certificate success.
I0928 08:08:18.550512 164125 cert.go:254] Generate etcd-client certificate success.
I0928 08:08:18.550698 164125 deploy.go:513] download crds file:https://github.com/karmada-io/karmada/releases/download/v1.19.0/crds.tar.gz
Downloading...[ 100.00% ]
Download complete.
......
I0928 08:10:16.199408 164125 deploy.go:654] Create karmada controller manager Deployment
I0928 08:10:35.206940 164125 deploy.go:662] Create karmada webhook Deployment
I0928 08:10:35.212460 164125 idempotency.go:296] Service karmada-system/karmada-webhook has been created or updated.
------------------------------------------------------------------------------------------------------
█████ ████ █████████ ███████████ ██████ ██████ █████████ ██████████ █████████
░░███ ███░ ███░░░░░███ ░░███░░░░░███ ░░██████ ██████ ███░░░░░███ ░░███░░░░███ ███░░░░░███
░███ ███ ░███ ░███ ░███ ░███ ░███░█████░███ ░███ ░███ ░███ ░░███ ░███ ░███
░███████ ░███████████ ░██████████ ░███░░███ ░███ ░███████████ ░███ ░███ ░███████████
░███░░███ ░███░░░░░███ ░███░░░░░███ ░███ ░░░ ░███ ░███░░░░░███ ░███ ░███ ░███░░░░░███
░███ ░░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ███ ░███ ░███
█████ ░░████ █████ █████ █████ █████ █████ █████ █████ █████ ██████████ █████ █████
░░░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░░
------------------------------------------------------------------------------------------------------
Karmada is installed successfully.
Register Kubernetes cluster to Karmada control plane.
Register cluster with 'Push' mode
Step 1: Use "karmadactl join" command to register the cluster to Karmada control plane. --cluster-kubeconfig is kubeconfig of the member cluster.
(In karmada)~# MEMBER_CLUSTER_NAME=$(cat ~/.kube/config | grep current-context | sed 's/: /\n/g'| sed '1d'| tr -d "\"'")
(In karmada)~# karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join ${MEMBER_CLUSTER_NAME} --cluster-kubeconfig=$HOME/.kube/config
Step 2: Show members of karmada
(In karmada)~# kubectl --kubeconfig /etc/karmada/karmada-apiserver.config get clusters
Register cluster with 'Pull' mode
Step 1: Create bootstrap token and generate the 'karmadactl register' command which will be used later.
~# karmadactl token create --print-register-command --kubeconfig=/etc/karmada/karmada-apiserver.config
This command will generate a registration command similar to:
karmadactl register 172.18.0.5:5443 --token t8xfio.640u9gp9obc72v5d --discovery-token-ca-cert-hash sha256:9cfa542ff48f43793d1816b1dd0a78ad574e349d8f6e005e6e32e8ab528e4244
Step 2: Use the output from Step 1 to register the cluster to the Karmada control plane.
You need to specify the target member cluster by flag '--kubeconfig'
~# karmadactl register 172.18.0.5:5443 --token t8xfio.640u9gp9obc72v5d --discovery-token-ca-cert-hash sha256:9cfa542ff48f43793d1816b1dd0a78ad574e349d8f6e005e6e32e8ab528e4244 --kubeconfig=<path-to-member-cluster-kubeconfig>
Step 3: Show members of Karmada.
~# karmadactl --kubeconfig=/etc/karmada/karmada-apiserver.config get clusters
The karmadactl register command has several optional parameters for setting the properties of the member cluster. For more details, run:
~# karmadactl register --help将k8s集群加入到karmada:
~# karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join number1 --cluster-kubeconfig=number1 cluster(number1) is joined successfully root@qiyang:~# sudo kubectl --kubeconfig /etc/karmada/karmada-apiserver.config get clusters NAME VERSION MODE READY AGE number1 v1.34.3 Push True 27s
加入第二个k8s集群到karmada:
~# karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join number2 --cluster-kubeconfig=number2 cluster(number2) is joined successfully root@qiyang:~# sudo kubectl --kubeconfig /etc/karmada/karmada-apiserver.config get clusters NAME VERSION MODE READY AGE number1 v1.34.3 Push True 2m20s number2 v1.34.3 Push True 10s
查看资源:
~# kubectl --kubeconfig /etc/karmada/karmada-apiserver.config get all -A NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13m karmada-system service/karmada-aggregated-apiserver ExternalName <none> karmada-aggregated-apiserver.karmada-system.svc <none> 12m
配置变量:
sudo cp /etc/karmada/karmada-apiserver.config ~/.kube/karmada.config sudo chown $(id -u):$(id -g) ~/.kube/karmada.config export KUBECONFIG=~/.kube/karmada.config
查看资源:
~# kubectl get all -A NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 15m karmada-system service/karmada-aggregated-apiserver ExternalName <none> karmada-aggregated-apiserver.karmada-system.svc <none> 14m
视频:
bilibili.com/video/BV1q7DoYxEEX
高可用安装命令:
karmadctl init --crds $HOME/crds.tar.gz --karmada-apiserver-replicas=2 \ --etcd-replicas=3 --storage-classes-name='nfs-csi' --etcd-storage-mode="PVC" \ --kube-image-registry='registry.magedu.com/google_containers' --kube-image-tag="v1.34.3" \ --cert-external-ip='10.10.53.83' --cert-validity-period=87600h0m0s
karmadctl init:Karmada 控制面初始化命令
--crds:指定 CRD 压缩包路径
--karmada-apiserver-replicas=2:karmada-apiserver 副本数 2
--etcd-replicas=3:etcd 集群 3 副本
--storage-classes-name='nfs-csi':存储类使用 nfs-csi
--etcd-storage-mode="PVC":etcd 持久化采用 PVC 模式
--kube-image-registry:镜像仓库地址(magedu 自建镜像源)
--kube-image-tag="v1.34.3":Kubernetes 版本 v1.34.3
--cert-external-ip:证书绑定外部 IP
--cert-validity-period=87600h0m0s:证书有效期(10 年)