Manage a cluster with multiple agents in hosted mode
The scripts provided in this doc help you to setup an Open Cluster Management (OCM) environment with Kind clusters where a single cluster is managed by two hubs via two agents installed on the managed cluster. The agents of the second hub runs in the hosted mode on a hosting cluster.
Prerequisite
-
kind must be installed on your local machine. The Kubernetes version must be >= 1.19, see kind user guide for more details.
-
Download and install clusteradm. For Linux OS, run the following commands:
wget -qO- https://github.com/open-cluster-management-io/clusteradm/releases/latest/download/clusteradm_linux_amd64.tar.gz | sudo tar -xvz -C /usr/local/bin/ sudo chmod +x /usr/local/bin/clusteradmNote: In order to run the scripts provided in this doc successfully, the clusteradm version must be > 0.7.1. You can also build it from the latest source code that contains the desired bug fixes.
Setup the first hub cluster
Run ./setup-hub1.sh. It creates two kind clusters:
hub1. It is initialized as a OCM hub cluster.cluster1. It joins thehub1as a managed cluster in the default mode.
Once it is done, you can then list the managed clusters on hub1 with command below.
kubectl get managedclusters
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE
cluster1 true https://cluster1-control-plane:6443 29s
The managed cluster cluster1 joins hub1 in the default mode and its Klusterlet resource is created on the managed cluster.
kubectl get klusterlet
NAME AGE
klusterlet 1m
And the OCM agent of hub1 is installed under namespace open-cluster-management-agent on the managed cluster. Another namespace open-cluster-management-agent-addon is created too for add-ons which might be installed in future for this managed cluster.
kubectl get ns
NAME STATUS AGE
default Active 7m34s
kube-node-lease Active 7m34s
kube-public Active 7m34s
kube-system Active 7m34s
local-path-storage Active 7m30s
open-cluster-management Active 7m27s
open-cluster-management-agent Active 7m27s
open-cluster-management-agent-addon Active 7m11s
Setup the second hub cluster
Run ./setup-hub2.sh. It creates two more Kind clusters:
hub2. It is initialized as the second OCM hub cluster.hosting. It is used as the hosting cluster on which the OCM agent ofhub2is running.
The script also joins the previously created Kind cluster cluster1 to hub2 as a managed cluster in the hosted mode. Once it is done, you can list the managed clusters on hub2 with command below.
kubectl get managedclusters
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE
cluster1 true https://cluster1-control-plane:6443 True True 38s
Since the managed cluster cluster1 joins in the hosted mode, its Klusterlet resource is created on the hosting cluster instead of the managed cluster.
kubectl get klusterlet
NAME AGE
klusterlet-hosted-cuz6ia 53s
The OCM agent of hub2 is installed under namespace klusterlet-hosted-cuz6ia on the hosting cluster as well.
kubectl get ns
NAME STATUS AGE
default Active 77s
klusterlet-hosted-cuz6ia Active 57s
kube-node-lease Active 77s
kube-public Active 77s
kube-system Active 77s
local-path-storage Active 72s
open-cluster-management Active 57s
Some namespaces, like open-cluster-management-klusterlet-hosted-cuz6ia and open-cluster-management-klusterlet-hosted-cuz6ia-addon, are created on the managed cluster cluster1 which are required by the OCM agent of hub2 running in the hosted mode.
kubectl get ns
NAME STATUS AGE
default Active 4m25s
kube-node-lease Active 4m25s
kube-public Active 4m25s
kube-system Active 4m25s
local-path-storage Active 4m21s
open-cluster-management Active 4m12s
open-cluster-management-agent Active 4m12s
open-cluster-management-agent-addon Active 4m3s
open-cluster-management-klusterlet-hosted-cuz6ia Active 78s
open-cluster-management-klusterlet-hosted-cuz6ia-addon Active 78s