Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1619116

Summary: Upgrade failed at [openshift_web_console : Verify that the console is running]
Product: OpenShift Container Platform Reporter: liujia <jiajliu>
Component: MasterAssignee: David Eads <deads>
Status: CLOSED NEXTRELEASE QA Contact: liujia <jiajliu>
Severity: high Docs Contact:
Priority: high    
Version: 3.11.0CC: aos-bugs, bleanhar, deads, decarr, jokerman, mmccomas, vrutkovs, wmeng
Target Milestone: ---   
Target Release: 3.11.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-08-23 12:14:25 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description liujia 2018-08-20 07:02:59 UTC
Description of problem:
Upgrade failed at [openshift_web_console : Verify that the console is running]
fatal: [x]: FAILED! => {"attempts": 60, "changed": false, "results": {"cmd": "/usr/local/bin/oc get deployment webconsole -o json -n openshift-web-console", "results": [{"apiVersion": "extensions/v1beta1", "kind": "Deployment", "metadata": {"annotations": {"deployment.kubernetes.io/revision": "1", "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1beta1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"openshift-web-console\",\"webconsole\":\"true\"},\"name\":\"webconsole\",\"namespace\":\"openshift-web-console\"},\"spec\":{\"replicas\":1,\"strategy\":{\"rollingUpdate\":{\"maxUnavailable\":\"100%\"},\"type\":\"RollingUpdate\"},\"template\":{\"metadata\":{\"labels\":{\"app\":\"openshift-web-console\",\"webconsole\":\"true\"},\"name\":\"webconsole\"},\"spec\":{\"containers\":[{\"command\":[\"/usr/bin/origin-web-console\",\"--audit-log-path=-\",\"-v=0\",\"--config=/var/webconsole-config/webconsole-config.yaml\"],\"image\":\"registry.reg-aws.openshift.com:443/openshift3/ose-web-console:v3.11\",\"imagePullPolicy\":\"IfNotPresent\",\"livenessProbe\":{\"exec\":{\"command\":[\"/bin/sh\",\"-c\",\"if [[ ! -f /tmp/webconsole-config.hash ]]; then \\\\\\n  md5sum /var/webconsole-config/webconsole-config.yaml \\u003e /tmp/webconsole-config.hash; \\\\\\nelif [[ $(md5sum /var/webconsole-config/webconsole-config.yaml) != $(cat /tmp/webconsole-config.hash) ]]; then \\\\\\n  echo 'webconsole-config.yaml has changed.'; \\\\\\n  exit 1; \\\\\\nfi \\u0026\\u0026 curl -k -f https://0.0.0.0:8443/console/\"]}},\"name\":\"webconsole\",\"ports\":[{\"containerPort\":8443}],\"readinessProbe\":{\"httpGet\":{\"path\":\"/healthz\",\"port\":8443,\"scheme\":\"HTTPS\"}},\"resources\":{\"requests\":{\"cpu\":\"100m\",\"memory\":\"100Mi\"}},\"volumeMounts\":[{\"mountPath\":\"/var/serving-cert\",\"name\":\"serving-cert\"},{\"mountPath\":\"/var/webconsole-config\",\"name\":\"webconsole-config\"}]}],\"nodeSelector\":{\"node-role.kubernetes.io/master\":\"true\"},\"serviceAccountName\":\"webconsole\",\"volumes\":[{\"name\":\"serving-cert\",\"secret\":{\"defaultMode\":288,\"secretName\":\"webconsole-serving-cert\"}},{\"configMap\":{\"defaultMode\":288,\"name\":\"webconsole-config\"},\"name\":\"webconsole-config\"}]}}}}\n"}, "creationTimestamp": "2018-08-20T03:20:33Z", "generation": 2, "labels": {"app": "openshift-web-console", "webconsole": "true"}, "name": "webconsole", "namespace": "openshift-web-console", "resourceVersion": "17898", "selfLink": "/apis/extensions/v1beta1/namespaces/openshift-web-console/deployments/webconsole", "uid": "ffcf4891-a427-11e8-8a66-42010af0003d"}, "spec": {"progressDeadlineSeconds": 600, "replicas": 1, "revisionHistoryLimit": 2, "selector": {"matchLabels": {"app": "openshift-web-console", "webconsole": "true"}}, "strategy": {"rollingUpdate": {"maxSurge": "25%", "maxUnavailable": "100%"}, "type": "RollingUpdate"}, "template": {"metadata": {"creationTimestamp": null, "labels": {"app": "openshift-web-console", "webconsole": "true"}, "name": "webconsole"}, "spec": {"containers": [{"command": ["/usr/bin/origin-web-console", "--audit-log-path=-", "-v=0", "--config=/var/webconsole-config/webconsole-config.yaml"], "image": "registry.reg-aws.openshift.com:443/openshift3/ose-web-console:v3.11", "imagePullPolicy": "IfNotPresent", "livenessProbe": {"exec": {"command": ["/bin/sh", "-c", "if [[ ! -f /tmp/webconsole-config.hash ]]; then \\\n  md5sum /var/webconsole-config/webconsole-config.yaml > /tmp/webconsole-config.hash; \\\nelif [[ $(md5sum /var/webconsole-config/webconsole-config.yaml) != $(cat /tmp/webconsole-config.hash) ]]; then \\\n  echo 'webconsole-config.yaml has changed.'; \\\n  exit 1; \\\nfi && curl -k -f https://0.0.0.0:8443/console/"]}, "failureThreshold": 3, "periodSeconds": 10, "successThreshold": 1, "timeoutSeconds": 1}, "name": "webconsole", "ports": [{"containerPort": 8443, "protocol": "TCP"}], "readinessProbe": {"failureThreshold": 3, "httpGet": {"path": "/healthz", "port": 8443, "scheme": "HTTPS"}, "periodSeconds": 10, "successThreshold": 1, "timeoutSeconds": 1}, "resources": {"requests": {"cpu": "100m", "memory": "100Mi"}}, "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "File", "volumeMounts": [{"mountPath": "/var/serving-cert", "name": "serving-cert"}, {"mountPath": "/var/webconsole-config", "name": "webconsole-config"}]}], "dnsPolicy": "ClusterFirst", "nodeSelector": {"node-role.kubernetes.io/master": "true"}, "restartPolicy": "Always", "schedulerName": "default-scheduler", "securityContext": {}, "serviceAccount": "webconsole", "serviceAccountName": "webconsole", "terminationGracePeriodSeconds": 30, "volumes": [{"name": "serving-cert", "secret": {"defaultMode": 288, "secretName": "webconsole-serving-cert"}}, {"configMap": {"defaultMode": 288, "name": "webconsole-config"}, "name": "webconsole-config"}]}}}, "status": {"conditions": [{"lastTransitionTime": "2018-08-20T03:20:33Z", "lastUpdateTime": "2018-08-20T03:20:33Z", "message": "Deployment has minimum availability.", "reason": "MinimumReplicasAvailable", "status": "True", "type": "Available"}, {"lastTransitionTime": "2018-08-20T03:20:33Z", "lastUpdateTime": "2018-08-20T03:20:47Z", "message": "ReplicaSet \"webconsole-785689b664\" has successfully progressed.", "reason": "NewReplicaSetAvailable", "status": "True", "type": "Progressing"}], "observedGeneration": 1, "replicas": 1, "unavailableReplicas": 1, "updatedReplicas": 1}}], "returncode": 0}, "state": "list"}

======================================================
Webconsole and master controller keep restart.
[root@qe-jliu-auto-dlvc-master-etcd-1 master]# oc get po
NAME                          READY     STATUS             RESTARTS   AGE
webconsole-785689b664-rkcb6   0/1       CrashLoopBackOff   21         2h

Events:
  Type     Reason     Age                From                                      Message
  ----     ------     ----               ----                                      
  Warning  Unhealthy  49m                kubelet, qe-jliu-auto-dlvc-master-etcd-1  Readiness probe failed: Get https://10.128.0.4:8443/healthz: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  Normal   Pulled     49m (x4 over 50m)  kubelet, qe-jliu-auto-dlvc-master-etcd-1  Container image "registry.reg-aws.openshift.com:443/openshift3/ose-web-console:v3.10" already present on machine
  Normal   Created    49m (x4 over 50m)  kubelet, qe-jliu-auto-dlvc-master-etcd-1  Created container
  Normal   Started    49m (x4 over 50m)  kubelet, qe-jliu-auto-dlvc-master-etcd-1  Started container
  Warning  Unhealthy  49m                kubelet, qe-jliu-auto-dlvc-master-etcd-1  Liveness probe failed:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  Warning  BackOff  47s (x228 over 50m)  kubelet, qe-jliu-auto-dlvc-master-etcd-1  Back-off restarting failed container


[root@qe-jliu-auto-dlvc-master-etcd-1 master]# oc get pod -n kube-system
NAME                                                 READY     STATUS             RESTARTS   AGE
master-api-qe-jliu-auto-dlvc-master-etcd-1           1/1       Running            1          46m
master-controllers-qe-jliu-auto-dlvc-master-etcd-1   0/1       CrashLoopBackOff   14         46m
master-etcd-qe-jliu-auto-dlvc-master-etcd-1          1/1       Running            0          51m


[root@qe-jliu-auto-dlvc-master-etcd-1 master]# /usr/local/bin/master-logs controllers controllers
I0820 06:05:06.993234       1 client_builder.go:233] Verified credential for cluster-quota-reconciliation-controller/openshift-infra
I0820 06:05:07.010891       1 request.go:1099] body was not decodable (unable to check for Status): couldn't get version/kind; json parse error: json: cannot unmarshal string into Go value of type struct { APIVersion string "json:\"apiVersion,omitempty\""; Kind string "json:\"kind,omitempty\"" }
F0820 06:05:07.017402       1 controller_manager.go:127] Error starting "openshift.io/cluster-quota-reconciliation" (unable to retrieve the complete list of server APIs: servicecatalog.k8s.io/v1beta1: the server is currently unable to handle the request)


Version-Release number of the following components:
ansible-2.6.2-1.el7ae.noarch
openshift-ansible-3.11.0-0.17.0.git.0.d3888d7None.noarch

How reproducible:
always

Steps to Reproduce:
1. Run upgrade ocp  from v3.10 to v3.11
2.
3.

Actual results:
Upgrade failed.

Expected results:
Upgrade succeed.

Additional info:
Please attach logs from ansible-playbook with the -vvv flag

Comment 3 liujia 2018-08-20 07:05:26 UTC
Block upgrade test on v3.11.0-0.17.0.

Comment 4 Vadim Rutkovsky 2018-08-20 11:38:04 UTC
That sounds like a bug for Master team - controller should be able to retry if API server request has failed.

Is this reproducible? Does it happen all the time during upgrade?

Comment 5 liujia 2018-08-21 01:21:03 UTC
(In reply to Vadim Rutkovsky from comment #4)
> That sounds like a bug for Master team - controller should be able to retry
> if API server request has failed.
> 
> Is this reproducible? Does it happen all the time during upgrade?

Yes, we can always hit it on v3.11.0-0.17.0 when do upgrade against rpm installed ocp on rhel.

Comment 6 David Eads 2018-08-22 18:54:14 UTC
This looks a lot like https://github.com/openshift/origin/pull/20693 where the apiservice goes down and missing discovery isn't tolerated.

Can you confirm you have that?

Comment 8 liujia 2018-08-23 07:13:48 UTC
Verified on openshift-ansible-3.11.0-0.20.0.git.0.ec6d8caNone.noarch

[root@qe-jliu-r2-master-etcd-1 ~]# oc get pod -n openshift-web-console
NAME                          READY     STATUS    RESTARTS   AGE
webconsole-787f54c7f8-7drw7   1/1       Running   0          10m
[root@qe-jliu-r2-master-etcd-1 ~]# oc get pod -n kube-system
NAME                                          READY     STATUS    RESTARTS   AGE
master-api-qe-jliu-r2-master-etcd-1           1/1       Running   1          12m
master-controllers-qe-jliu-r2-master-etcd-1   1/1       Running   1          12m
master-etcd-qe-jliu-r2-master-etcd-1          1/1       Running   0          16m