Tip
Tómatelo con calma esta es la parte que más problemas suele causar.
Uso oc get clusteroperatos
se puede abreviar oc get co
para saber si la console web está operativa (y el resto del cluster). La salida se parece a esto:
[root@odk4-services ~]# oc get co
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
authentication 4.18.0-okd-scos.9 False True True 12h OAuthServerRouteEndpointAccessibleControllerAvailable: failed to retrieve route from cache: route.route.openshift.io "oauth-openshift" not found...
baremetal 4.18.0-okd-scos.9 True False False 12h
cloud-controller-manager 4.18.0-okd-scos.9 True False False 12h
cloud-credential 4.18.0-okd-scos.9 True False False 13h
cluster-autoscaler 4.18.0-okd-scos.9 True False False 12h
config-operator 4.18.0-okd-scos.9 True False False 12h
console 4.18.0-okd-scos.9 False False True 12h RouteHealthAvailable: console route is not admitted
control-plane-machine-set 4.18.0-okd-scos.9 True False False 12h
csi-snapshot-controller 4.18.0-okd-scos.9 True False False 12h
dns 4.18.0-okd-scos.9 True False False 12h
etcd 4.18.0-okd-scos.9 True False False 12h
image-registry 4.18.0-okd-scos.9 True False False 12h
ingress 4.18.0-okd-scos.9 True True True 12h The "default" ingress controller reports Degraded=True: DegradedConditions: One or more other status conditions indicate a degraded state: DeploymentReplicasAllAvailable=False (DeploymentReplicasNotAvailable: 0/1 of replicas are available), CanaryChecksSucceeding=Unknown (CanaryRouteNotAdmitted: Canary route is not admitted by the default ingress controller)
insights 4.18.0-okd-scos.9 True False False 12h
kube-apiserver 4.18.0-okd-scos.9 True False False 12h
kube-controller-manager 4.18.0-okd-scos.9 True False True 12h GarbageCollectorDegraded: error fetching rules: Get "https://thanos-querier.openshift-monitoring.svc:9091/api/v1/rules": dial tcp 172.30.225.86:9091: connect: connection refused
kube-scheduler 4.18.0-okd-scos.9 True False False 12h
kube-storage-version-migrator 4.18.0-okd-scos.9 True False False 12h
machine-api 4.18.0-okd-scos.9 True False False 12h
machine-approver 4.18.0-okd-scos.9 True False False 12h
machine-config True True True 12h Unable to apply 4.18.0-okd-scos.9: error during waitForDaemonsetRollout: [context deadline exceeded, daemonset machine-config-daemon is not ready. status: (desired: 2, updated: 2, ready: 0, unavailable: 2)]
marketplace 4.18.0-okd-scos.9 True False False 12h
monitoring False True True 12h UpdatingPrometheusOperator: reconciling Prometheus Operator Admission Webhook Deployment failed: updating Deployment object failed: waiting for DeploymentRollout of openshift-monitoring/prometheus-operator-admission-webhook: context deadline exceeded: got 1 unavailable replicas
network 4.18.0-okd-scos.9 True False False 12h
node-tuning 4.18.0-okd-scos.9 True False False 10m
olm 4.18.0-okd-scos.9 True False False 12h
openshift-apiserver 4.18.0-okd-scos.9 True False False 12h
openshift-controller-manager 4.18.0-okd-scos.9 True False False 12h
openshift-samples 4.18.0-okd-scos.9 True False False 12h
operator-lifecycle-manager 4.18.0-okd-scos.9 True False False 12h
operator-lifecycle-manager-catalog 4.18.0-okd-scos.9 True False False 12h
operator-lifecycle-manager-packageserver 4.18.0-okd-scos.9 True False False 12h
service-ca 4.18.0-okd-scos.9 True False False 12h
storage 4.18.0-okd-scos.9 True False False 12h
Regla de oro para entender lo que vamos a hacer
- Los namespaces agrupan pods.
- Los pods agrupan contenedores.
La salida ideal sería todo el Available a True y el resto a false. Para explorar qué esta pasando en cada namespace podemos usar:
oc get pods -n <NAMESPACE>
NOTE
- El comando
oc get namespaces
devuelve una lista de todos los namespaces que se usan.- Si miramos la salida de
oc get co
el namespace del clusteroperator se suele corresponder con openshift-{name del co}.
En la salida de oc get pods -n openshift-kube-controller-manager
vemos que hay un pod con errores.
NAME READY STATUS RESTARTS AGE
installer-3-okd4-control-plane-1.lab.okd.local 0/1 Completed 0 13h
installer-4-okd4-control-plane-1.lab.okd.local 0/1 Completed 0 13h
installer-5-okd4-control-plane-1.lab.okd.local 0/1 Error 0 13h
installer-6-okd4-control-plane-1.lab.okd.local 0/1 Completed 0 12h
kube-controller-manager-okd4-control-plane-1.lab.okd.local 4/4 Running 0 12h
Para ver los logs del pod que falla:
NOTE
- NAMESPACE:
openshift-kube-controller-manager
- POD:
installer-5-okd4-control-plane-1.lab.okd.local
oc logs -n openshift-kube-controller-manager installer-5-okd4-control-plane-1.lab.okd.local
Me resultó también muy útil revisar la ultima sección de EVENTS de los comandos oc describe
:
Para 1 pod:
oc describe pod -n openshift-kube-controller-manager installer-5-okd4-control-plane-1.lab.okd.local
Para todos los pods del namespace:
oc describe pods -A -n openshift-kube-controller-manager
En mi proceso de instalación me encontré con los siguientes errores: Fix openshift-ingress router-default Fix oauth-openshift openshift-authentication
Ante imprevistos, la documentación oficial, ChatGPT y paciencia.
TODO
Si me llega la paciencia igual me monto algo para explicar como van los ficheros de configuración
.yaml
para que no sea todo tan abstracto pero primero tengo que entenderlo bien yo.
Tu objetivo es que el oc get co muestre todos los operadores disponibles. Cuando consigas esto deberías poder acceder a https://console-openshift-console.apps.lab.okd.local/
y logearte con kubeadmin y la contraseña que se generó durante la creación de los .ign en la carpeta auth.
Enhorabuena!!! 🥳🥳🎉🎉 Ya formas parte del grupo selecto de personas que consiguieron desplegar OKD
Esta imagen es de la 4.19 pero deberías ver un panel de login similar (no sé porque está en francés)
Los siguientes pasos antes de hacer uso de OKD es empezar con los pv y pvc para establecer un registro de imágenes (lo que incluye el despliegue de un servidor nfs o un almacenamiento alternativo), se recomienda crear un usuario administrador distinto a kubeadmin sin problema y el despliegue de prueba de algún proyecto. Estos pasos los pude hacer sin problema siguiendo la guía de Craig
Previo | Siguiente |
---|---|
2. Lanzamiento de los nodos | 4. Despliegue de persistencia |