1. ¿Qué es Ranchero?
Rancher es una herramienta de administración de Kubernetes para implementar y ejecutar clústeres en cualquier lugar y con cualquier proveedor.
Rancher puede aprovisionar Kubernetes desde un proveedor de alojamiento, aprovisionar nodos de cómputo y luego instalar Kubernetes en esos nodos, o importar un clúster de Kubernetes existente que se ejecute en cualquier lugar.
Rancher agrega un valor significativo a Kubernetes, comenzando con la autenticación centralizada y el control de acceso basado en roles (RBAC) para todos los clústeres, lo que permite a los administradores globales controlar el acceso a los clústeres desde una sola ubicación.
Luego, permite el monitoreo detallado y las alertas del clúster y sus recursos, envía registros a proveedores externos y se integra directamente con Helm a través del catálogo de aplicaciones. Si tiene un sistema CI/CD externo, puede conectarlo a Rancher, pero si no lo tiene, Rancher incluso incluye Fleet para ayudarlo a implementar y actualizar automáticamente las cargas de trabajo.
Rancher es una plataforma completa de administración de contenedores de Kubernetes que le brinda las herramientas para ejecutar Kubernetes con éxito en cualquier lugar.
2. Por qué elegir Rancher
Existen interfaces de administración de kubernetes como kuboard en China, pero no resuelven la complejidad que presenta el uso de kubernetes, como CI/CD, administración de múltiples clústeres y administración de autoridad de cuentas que se pueden integrar con la plataforma de administración de clústeres k8s.
Hay muchas búsquedas en Internet, en comparación, solo Red Hat OpenShift Kubernetes Engine (OpenShit), VMware Tanzu y SUSE Rancher, el único que se puede usar de forma gratuita es Rancher, por lo que no hay otra opción.
3. Implementar el servidor Rancher
Rancher admite varios métodos de implementación:
- AWS (utiliza Terraform)
- AWS Marketplace (utiliza Amazon EKS)
- Azure (usa Terraform)
- DigitalOcean (usa Terraform)
- GCP (usa Terraform)
- Nube de Hetzner (usa Terraform)
- Vagabundo
- Equinix Metal
- Outscale (usa Terraform)
Aquí elegimos el método de implementación manual
3.1 Requisitos de instalación
Prepare dos servidores de la versión Ubuntu LTS, aquí use el clúster k3s para ejecutar el nodo de administración de Rancher, los requisitos de recursos de k3s son los siguientes:
Escala de implementación | Número de clústeres administrados | El número de nodos administrados | Requisitos de vCPU k3s | requisitos de memoria k3s | requisitos de la base de datos k3s |
---|---|---|---|---|---|
Pequeño | Máximo 150 | Máximo 1500 | 2 | 8GB | 2 núcleos, 4 GB + 1000 IOPS |
Medio | hasta 300 | Máximo 3000 | 4 | 16 GB | 2 núcleos, 4 GB + 1000 IOPS |
Grande | Máximo 500 | Máximo 5000 | 8 | 32GB | 2 núcleos, 4 GB + 1000 IOPS |
extragrande | Máximo 1000 | hasta 10,000 | dieciséis | 64 GB | 2 núcleos, 4 GB + 1000 IOPS |
XX-Grande | Máximo 2000 | Máximo 20.000 | 32 | 128GB | 2 núcleos, 4 GB + 1000 IOPS |
3.2 Preparación de la instalación, deshabilitar el firewall
systemctl disable ufw
systemctl stop ufw
ufw reset
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
3.3 Instalar k3s
Instale el clúster k3s del nodo de administración de Rancher en dos servidores. El comando del primer nodo se ejecuta correctamente. Después de que el servicio k3s se haya iniciado correctamente, ejecútelo en el segundo nodo. El segundo nodo se unirá automáticamente y creará un clúster. Para el número de versión, puede elegir la versión anterior de la última versión estable. Después de probar la última versión estable, no se puede descargar a través de la imagen espejo en China.
Además, aunque k3s ha lanzado la versión 1.27, la versión más alta de k3s admitida por Rancher sigue siendo la serie 1.26, por lo que la versión de la serie 1.26 aún está seleccionada.
3.3.1 Instale K3 usando el script del sitio web espejo doméstico
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION="v1.26.5+k3s1" K3S_DATASTORE_ENDPOINT='postgres://k3s:[email protected]:5432/k3s?sslmode=disable' sh -s - server --token=k3stoken --tls-san 192.168.6.247 --tls-san 192.168.6.248 --tls-san rancher.myexample.com
La respuesta del comando es la siguiente:
[sudo] password for ubuntu:
[INFO] Using v1.26.5+k3s1 as release
[INFO] Downloading hash rancher-mirror.rancher.cn/k3s/v1.26.5-k3s1/sha256sum-amd64.txt
[INFO] Downloading binary rancher-mirror.rancher.cn/k3s/v1.26.5-k3s1/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Skipping installation of SELinux RPM
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s```
3.3.2 Instalar K3 sin conexión
Debido al problema del retraso en la sincronización en el sitio web espejo doméstico, el número de versión menor más reciente no es compatible en este momento, y el método de instalación fuera de línea de K3 también se proporciona aquí.
3.3.2.1 Crear un directorio localmente para colocar el paquete de instalación fuera de línea
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp ./k3s-airgap-images-amd64.tar.gz /var/lib/rancher/k3s/agent/images/
3.3.2.2 Configurar archivo ejecutable k3s
Descargue la versión correspondiente del archivo binario k3s de la página https://github.com/k3s-io/k3s/releases, colóquelo en /usr/local/bin
el directorio y agregue permisos ejecutables
chmod +x /usr/local/bin/k3s
3.3.2.3 Configurar el script de instalación install.sh
Descargue el script de instalación de get.k3s.io , asígnele un nombre install.sh
y agregue permisos ejecutables
chmod +x install.sh
3.3.2.4 Instalar usando scripts
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --token=k3stoken --tls-san 192.168.6.247 --tls-san 192.168.6.248 --tls-san rancher.myexample.com' \
K3S_DATASTORE_ENDPOINT='postgres://k3s:[email protected]:5432/k3s?sslmode=disable' \
./install.sh
3.4 Configurar uno de los nodos para poder acceder al clúster k3s
sudo -s
mkdir -p /home/ubuntu/.kube
sudo cp /etc/rancher/k3s/k3s.yaml /home/ubuntu/.kube/config
chmod 600 /home/ubuntu/.kube/config
chown ubuntu:ubuntu /home/ubuntu/.kube/config
export KUBECONFIG=~/.kube/config
echo "export KUBECONFIG=~/.kube/config" >> /home/ubuntu/.bashrc
3.5 Instalar timón
Referencia https://github.com/helm/helm/releases
3.6 Agregar repositorio de timón de Rancher
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
3.7 Crear espacio de nombres
kubectl create namespace cattle-system
3.8 Instalar definiciones de recursos personalizados de cert-manager
Si tiene problemas para acceder a github en el servidor, puede descargar el archivo, cargarlo en el servidor y reemplazar la URL https con la ruta relativa del archivo. El número de versión debe ser el mismo que el administrador de certificados instalado por timón debajo
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.2/cert-manager.crds.yaml
Respuesta de comando para ejecución exitosa
customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io created
3.9 Agregar repositorio de helm de cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
3.10 Instalar el administrador de certificados
El número de versión se puede seleccionar de la última versión estable de acuerdo con los documentos oficiales o el almacén de código abierto
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.12.2
Respuesta de comando para una instalación exitosa
NAME: cert-manager
LAST DEPLOYED: Tue Jul 11 06:32:41 2023
NAMESPACE: cert-manager
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
cert-manager v1.11.4 has been deployed successfully!
In order to begin issuing certificates, you will need to set up a ClusterIssuer
or Issuer resource (for example, by creating a 'letsencrypt-staging' issuer).
More information on the different types of issuers and how to configure them
can be found in our documentation:
https://cert-manager.io/docs/configuration/
For information on how to configure cert-manager to automatically provision
Certificates for Ingress resources, take a look at the `ingress-shim`
documentation:
https://cert-manager.io/docs/usage/ingress/
3.11 Instalar ganadero
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname=rancher.myexample.com \
--set replicas=1 \
--set bootstrapPassword=admin
Respuesta de comando para una instalación exitosa
NAME: rancher
LAST DEPLOYED: Mon Apr 10 03:01:09 2023
NAMESPACE: cattle-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Rancher Server has been installed.
NOTE: Rancher may take several minutes to fully initialize. Please standby while Certificates are being issued, Containers are started and the Ingress rule comes up.
Check out our docs at https://rancher.com/docs/
If you provided your own bootstrap password during installation, browse to https://rancher.51bsi.com to get started.
If this is the first time you installed Rancher, get started by running this command and clicking the URL it generates:
echo https://rancher.myexample.com/dashboard/?setup=$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{
{.data.bootstrapPassword|base64decode}}')
To get just the bootstrap password on its own, run:
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{
{.data.bootstrapPassword|base64decode}}{
{ "\n" }}'
Happy Containering!
Después de que la instalación sea exitosa, toma alrededor de 2 a 3 minutos y luego visite el servicio de rancher https://rancher.myexample.com/dashboard/?setup=admin
4. Comandos comunes de inspección de servicio
4.1 Verifique el estado de ejecución del servicio cert-manager
ubuntu@24:~$ kubectl get po -n cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-cainjector-56bbdd5c47-2gtq5 1/1 Running 0 96s
cert-manager-64f9f45d6f-8qxn6 1/1 Running 0 96s
cert-manager-webhook-d4f4545d7-cxnhf 1/1 Running 0 96s
4.2 Ver registros de servicio
ubuntu@24:~$ kubectl -n cert-manager logs cert-manager-webhook-d4f4545d7-cxnhf
I0711 07:13:13.364269 1 feature_gate.go:249] feature gates: &{
map[]}
W0711 07:13:13.364365 1 client_config.go:618] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I0711 07:13:13.370407 1 webhook.go:129] cert-manager "msg"="using dynamic certificate generating using CA stored in Secret resource" "secret_name"="cert-manager-webhook-ca" "secret_namespace"="cert-manager"
I0711 07:13:13.370665 1 server.go:133] cert-manager/webhook "msg"="listening for insecure healthz connections" "address"=":6080"
I0711 07:13:13.370731 1 server.go:197] cert-manager/webhook "msg"="listening for secure connections" "address"=":10250"
I0711 07:13:14.376507 1 dynamic_source.go:266] cert-manager/webhook "msg"="Updated cert-manager webhook TLS certificate" "DNSNames"=["cert-manager-webhook","cert-manager-webhook.cert-manager","cert-manager-webhook.cert-manager.svc"]
4.3 Verifique el estado del servicio del espacio de nombres del sistema de ganado
ubuntu@24:~$ kubectl get pods --namespace cattle-system
NAME READY STATUS RESTARTS AGE
helm-operation-ggq22 2/2 Running 0 53s
helm-operation-mxqjg 0/2 Completed 0 2m52s
helm-operation-sftw8 0/2 Completed 0 74s
helm-operation-wbd4s 0/2 Completed 0 110s
rancher-7c5dbf46fc-8fb5v 1/1 Running 0 4m51s
rancher-7c5dbf46fc-l92kc 1/1 Running 0 4m50s
rancher-7c5dbf46fc-wmx8h 1/1 Running 0 4m50s
rancher-webhook-577b778f8f-9wzr5 0/1 ContainerCreating 0 9s
Ver el estado del servicio de todos los espacios de nombres
ubuntu@247:~$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system local-path-provisioner-76d776f6f9-lql4s 1/1 Running 0 110m
kube-system svclb-traefik-23008fd2-l67lp 2/2 Running 0 109m
kube-system helm-install-traefik-crd-lfjs8 0/1 Completed 0 110m
kube-system helm-install-traefik-brj48 0/1 Completed 1 110m
kube-system coredns-59b4f5bbd5-ddvjp 1/1 Running 0 110m
kube-system traefik-57c84cf78d-fhxlh 1/1 Running 0 109m
kube-system metrics-server-68cf49699b-zmrqr 1/1 Running 0 110m
cert-manager cert-manager-cainjector-7f47598f9b-rvlwj 1/1 Running 0 23m
cert-manager cert-manager-55b858df44-52ls9 1/1 Running 0 23m
cert-manager cert-manager-webhook-7d694cd764-n5vhc 1/1 Running 0 23m
cattle-system rancher-7769775dfb-gcghz 1/1 Running 0 22m
cattle-fleet-system gitjob-85b85d5df8-n74sp 1/1 Running 0 19m
cattle-fleet-system fleet-controller-775cd6657c-zxfq2 1/1 Running 0 19m
cattle-system helm-operation-mrzg8 0/2 Completed 0 19m
cattle-system helm-operation-7nqmg 0/2 Completed 0 18m
cattle-system rancher-webhook-788c48b988-82j77 1/1 Running 0 18m
cattle-system helm-operation-h82mk 0/2 Completed 0 18m
cattle-system helm-operation-sfxnn 0/2 Completed 0 17m
kube-system svclb-traefik-23008fd2-59psn 2/2 Running 0 16m
cattle-fleet-local-system fleet-agent-7f8d499f-4m4fc 1/1 Running 0 9m49s
4.4 Ver la implementación de Rancher
ubuntu@24:~$ kubectl -n cattle-system get deploy rancher
NAME READY UP-TO-DATE AVAILABLE AGE
rancher 1/1 1 1 5m42s
5. Desinstalar k3s
5.1 Ejecución de la desinstalación
sudo -s
/usr/local/bin/k3s-uninstall.sh
/usr/local/bin/k3s-agent-uninstall.sh
5.2 Eliminar los archivos y directorios correspondientes
rm -rf /etc/ceph /etc/cni /etc/kubernetes /etc/rancher /opt/cni /opt/rke /run/secrets/kubernetes.io /run/calico /run/flannel /var/lib/calico /var/lib/etcd /var/lib/cni /var/lib/kubelet /var/lib/rancher /var/log/containers /var/log/kube-audit /var/log/pods /var/run/calico /var/lib/longhorn
5.3 Borrar los datos correspondientes en la base de datos
DROP TABLE public.kine;