Administrar CN2 de varios clústeres
RESUMEN Aprenda a realizar tareas de administración de ciclo de vida específicas de una instalación de varios clústeres.
En esta sección, se tratan las tareas específicas de una instalación de varios clústeres. Si desea realizar tareas de administración en un clúster específico (como agregar y quitar nodos dentro de un clúster y actualizar un clúster) dentro de la instalación de varios clústeres, consulte Administrar CN2 de un solo clúster.
Adjuntar un clúster de carga de trabajo
Utilice este procedimiento para crear y adjuntar un clúster de carga de trabajo distribuido (que ejecuta un plano de datos de modo de kernel) al clúster central. Si desea ejecutar un plano de datos DPDK, extrapolar a partir de los ejemplos DPDK de este documento.
Los manifiestos que utilizará en este procedimiento de ejemplo son multi-cluster/distributed_cluster_deployer_example.yaml y multi-cluster/distributed_cluster_vrouter_example.yaml. El procedimiento supone que ha colocado estos manifiestos en un directorio de manifiestos .
- Prepare el clúster de cargas de trabajo distribuidas como se describe en Antes de instalar.
- Cree el clúster de cargas de trabajo distribuidas.
Cree un clúster nuevo. Puede seguir el procedimiento en Crear un clúster de Kubernetes o usar sus propios métodos para crear un clúster. El clúster debe tener las siguientes características:
- El clúster no tiene ningún complemento CNI.
- Desactive el DNS local del nodo.
- En una configuración de varios clústeres, debe configurar diferentes subredes de pod y servicio en cada clúster. Estas subredes deben ser únicas en todo el clúster múltiple.
- En una configuración de varios clústeres, debe configurar nombres de nodo diferentes para los nodos de cada clúster. Los nombres de nodo deben ser únicos en todo el multi clúster.
- Instale los componentes de CN2 en el clúster de carga de trabajo distribuido.
- En el clúster de carga de trabajo, copie el kubeconfig del clúster central. Lo llamaremos kubeconfig de clústeres centrales aquí.
scp user@central:~/.kube/config central-cluster-kubeconfig
- En el clúster de carga de trabajo, cree el espacio de nombres de contrail-deploy.
kubectl create ns contrail-deploy
- En el clúster de carga de trabajo, cree un secreto de Kubernetes desde el kubeconfig del clúster central y nombre el secreto central-kubeconfig.
Nota:
Debe nombrar el secreto central-kubeconfig.
kubectl create secret generic central-kubeconfig -n contrail-deploy --from-file=kubeconfig=/root/contrail/central-cluster-kubeconfig
Nota:Debe especificar la ruta absoluta al archivo central-cluster-kubeconfig .
- En el clúster de carga de trabajo, aplique el manifiesto del implementador. El implementador proporciona administración del ciclo de vida de los componentes de CN2.
Este manifiesto incluye una referencia al central-kubeconfig secreto que creó en el subsép anterior.
kubectl apply -f manifests/distributed_cluster_deployer_example.yaml
- Compruebe que el contrail-deployer haya surgido. Esto puede tardar unos minutos.
kubectl get pods -n contrail-deploy
NAME READY STATUS RESTARTS AGE contrail-k8s-deployer-6458859585-xhwx6 1/1 Running 0 6m
- En el clúster de carga de trabajo, aplique el manifiesto de cert-manager. El administrador de certificados proporciona cifrado para todas las conexiones de plano de administración y control.
kubectl apply -f manifests/distributed_cluster_certmanager_example.yaml
- En el clúster de carga de trabajo, copie el kubeconfig del clúster central. Lo llamaremos kubeconfig de clústeres centrales aquí.
- En el clúster central, conecte el nuevo clúster de carga de trabajo mediante la creación de un kubemanager para el nuevo clúster de carga de trabajo.
- En el clúster central, copie el kubeconfig del clúster de carga de trabajo distribuido. Llamaremos a esta carga de trabajo-cluster-kubeconfig aquí.
scp user@workload:~/.kube/config workload-cluster-kubeconfig
- En el clúster central, cree un secreto de Kubernetes desde el clúster de carga de trabajo distribuido kubeconfig y elija un nombre significativo para el secreto (por ejemplo, workload-kubeconfig).
kubectl create secret generic workload-kubeconfig -n contrail --from-file=kubeconfig=/root/contrail/workload-cluster-kubeconfig
- Cree el manifiesto kubemanager con el siguiente contenido. Elija un nombre significativo para el manifiesto (por ejemplo, kubemanager-cluster1.yaml).
apiVersion: configplane.juniper.net/v1alpha1 kind: Kubemanager metadata: name: <CR name> namespace: contrail spec: common: containers: - image: <contrail-image-repository> name: contrail-k8s-kubemanager podV4Subnet: <pod-v4-subnet-of-remote-cluster> serviceV4Subnet: <service-v4-subnet-of-remote-cluster> podV6Subnet: <pod-v6-subnet-of-remote-cluster> serviceV6Subnet: <service-v6-subnet-of-remote-cluster> clusterName: <worker-cluster-name> kubeconfigSecretName: <secret-name> enableNad: <true/false> listenerPort: <listener-port> constantRouteTargetNumber: <rt-number>
Tabla 1: Kubemanager CRD Ejemplo de significado de parámetro Nombre El nombre del recurso personalizado. kubemanager-cluster1 Imagen El depósito donde se sacan las imágenes enterprise-hub.juniper.net/contrail-container-prod/contrail-k8s-kubemanager:23.2.0.156 podV4Subnet La subred pod IPv4 que configuró anteriormente para el clúster de carga de trabajo distribuida. Esta subred debe ser única en todo el clúster múltiple.
10.234.64.0 serviceV4Subnet La subred de servicio IPv4 que configuró anteriormente para el clúster de carga de trabajo distribuida. Esta subred debe ser única en todo el clúster múltiple.
10.234.0.0/18 podV6Subnet La subred pod IPv6 que configuró anteriormente para el clúster de carga de trabajo distribuido. Esta subred debe ser única en todo el clúster múltiple.
fd85:ee78:d8a6:8608::1:0000/112 serviceV6Subnet La subred de servicio IPv6 que configuró anteriormente para el clúster de carga de trabajo distribuido. Esta subred debe ser única en todo el clúster múltiple.
fd85:ee78:d8a6:8608::1000/116 clusterName El nombre del clúster de carga de trabajo. clúster de carga de trabajo kubeconfigSecretName El nombre del secreto que contiene el token kubeconfig del clúster de carga de trabajo. carga de trabajo-kubeconfig enableNad Verdadero o falso (para habilitar o no la definición de dirección de red) Verdad listenerPort El puerto que el controlador Contrail escucha para las comunicaciones con este clúster de carga de trabajo. Establezca el puerto para el primer clúster de carga de trabajo en 19446 e incremente en 1 para cada clúster de carga de trabajo subsiguiente.
19446 constanteRouteTargetNumber El destino de la ruta para este clúster de carga de trabajo. Establezca el destino de ruta para el primer clúster de carga de trabajo en 7699 e incremente en 100 para cada clúster de carga de trabajo subsiguiente.
7699 - En el clúster central, aplique el manifiesto kubemanager que acaba de crear.
kubectl apply -f manifests/kubemanager-cluster1.yaml
- En el clúster central, compruebe que puede ver los espacios de nombres del clúster de carga de trabajo.
kubectl get ns
Los espacios de nombres tienen el siguiente formato:
<kubemanager-name>-<workload-cluster-name>-<namespace>
. Por ejemplo:kubemanager-workload1-workload-cluster-contrail
- En el clúster central, copie el kubeconfig del clúster de carga de trabajo distribuido. Llamaremos a esta carga de trabajo-cluster-kubeconfig aquí.
- Por último, en el clúster de carga de trabajo, instale el vRouter.
kubectl apply -f manifests/distributed_cluster_vrouter_example.yaml
Después de unos minutos, verifique que todos los grupos estén en marcha:
kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS cert-manager cert-manager-7d6d9465db-mgbk4 1/1 Running 0 cert-manager cert-manager-cainjector-6f567667c6-vm4 1/1 Running 0 cert-manager cert-manager-webhook-f947d7c68-tlfx8 1/1 Running 0 contrail-deploy contrail-k8s-deployer-6c88f6798f-jjx96 1/1 Running 3 contrail contrail-vrouter-masters-phttx 3/3 Running 0 contrail contrail-vrouter-nodes-xkkk8 3/3 Running 0 kube-system coredns-657959df74-26jrk 1/1 Running 0 kube-system dns-autoscaler-b5c786945-m4vtz 1/1 Running 0 kube-system kube-apiserver-k8s-cp0 1/1 Running 0 kube-system kube-controller-manager-k8s-cp0 1/1 Running 0 kube-system kube-proxy-5rbp4 1/1 Running 0 kube-system kube-proxy-kr95n 1/1 Running 0 kube-system kube-scheduler-k8s-cp0 1/1 Running 0 kube-system nginx-proxy-k8s-worker0 1/1 Running 0
Desvincular un clúster de carga de trabajo
- En el clúster central, elimine el kubemanager asociado.
kubectl delete kubemanager -n contrail <kubemanager-name>
- En el clúster de carga de trabajo distribuido que va a eliminar, elimine los vRouters.
kubectl delete vrouter -n contrail contrail-vrouter-masters
kubectl delete vrouter -n contrail contrail-vrouter-nodes
- En el clúster central, elimine los espacios de nombres del clúster de carga de trabajo distribuido.
Enumera los espacios de nombres y elimine todos los espacios de nombres asociados con el clúster de carga de trabajo distribuida.
kubectl get ns
kubectl delete ns <kubemanager-name>-<workload-cluster-name>-<namespace>
- En el clúster central, elimine el secreto asociado con el clúster de carga de trabajo que está desconectando.
kubectl delete secret <secret-name> -n contrail
Desinstalar CN2
- Siga los pasos de Separar un clúster de carga de trabajo para desvincular el clúster de carga de trabajo que desea eliminar.
- Desinstale CN2 en el clúster de carga de trabajo.
- Siga los pasos en Desinstalar CN2 para desinstalar CN2 en el clúster de carga de trabajo.
Ignore cualquier error de NotFound porque esos recursos ya se eliminaron.
- En el clúster de carga de trabajo, verifique que todos los recursos relacionados con el espacio de nombres de red pod predeterminado del clúster de carga de trabajo distribuido hayan desaparecido y verifique que todos los recursos relacionados con el espacio de nombres de Contrail hayan desaparecido.
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <default pod network namespace>
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n contrail
Si todo lo que desea hacer es desinstalar CN2 del clúster de carga de trabajo, ya está. Si también desea desinstalar CN2 del clúster central, continúe con el paso siguiente.
- Siga los pasos en Desinstalar CN2 para desinstalar CN2 en el clúster de carga de trabajo.
- Desinstale CN2 en el clúster central.
- Siga los pasos en Desinstalar CN2 para desinstalar CN2 en el clúster central.
Ignore cualquier error de NotFound porque esos recursos ya se eliminaron.
- En el clúster central, compruebe que se eliminan todos los recursos relacionados con los espacios de nombres contrail, contrail-system y contrail-deploy.
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n contrail
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n contrail-system
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n contrail-deploy
- Siga los pasos en Desinstalar CN2 para desinstalar CN2 en el clúster central.