Bug 1389205
Summary: | Master is enforced to find neutron LBaaS extension when openstack cloud provider is enabled | |||
---|---|---|---|---|
Product: | OpenShift Container Platform | Reporter: | Jianwei Hou <jhou> | |
Component: | Node | Assignee: | Seth Jennings <sjenning> | |
Status: | CLOSED ERRATA | QA Contact: | DeShuai Ma <dma> | |
Severity: | high | Docs Contact: | ||
Priority: | high | |||
Version: | 3.4.0 | CC: | aos-bugs, jeder, jokerman, lxia, mmccomas, tdawson, wmeng | |
Target Milestone: | --- | Keywords: | TestBlocker | |
Target Release: | --- | |||
Hardware: | Unspecified | |||
OS: | Unspecified | |||
Whiteboard: | aos-scalability-34 | |||
Fixed In Version: | Doc Type: | Bug Fix | ||
Doc Text: |
This bug fixes and issue with the OpenShift master when the OpenStack cloud provider is used. If the master service controller is unable to connect with the LBaaS API, it prevents the master from starting. With this fix, the failure is treated as non-fatal. Services with type LoadBalancer will not work, as the master is able to create the load balancer in the cloud provider, but the master functions normally.
|
Story Points: | --- | |
Clone Of: | ||||
: | 1465722 (view as bug list) | Environment: | ||
Last Closed: | 2017-01-18 12:46:53 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: | ||||
Bug Depends On: | ||||
Bug Blocks: | 1465722 |
Description
Jianwei Hou
2016-10-27 07:52:18 UTC
The kube upstream service controller is enforcing this in init(): pkg/controller/service/servicecontroller.go: func (s *ServiceController) init() error { if s.cloud == nil { return fmt.Errorf("WARNING: no cloud provider provided, services of type LoadBalancer will fail.") } balancer, ok := s.cloud.LoadBalancer() if !ok { return fmt.Errorf("the cloud provider does not support external load balancers.") } s.balancer = balancer It has been the way for upstream kube since 1.2. This is the Origin commit that introduced the LB requirement by running New() on the service controller rather than Run(). https://github.com/openshift/origin/commit/3de3eec624b410bcf7b6705133919ef98331f3f4#diff-62e1d6e1ea7f763bd41c44733aa2fba2R387 Run() doesn't call init() where New() does. Scratch that last comment. init() was called by Run() before. The serivce controller was added in Origin 1.3 here: https://github.com/openshift/origin/commit/7609d9bbc439df91d170f9447e972c72ef62f558 I imagine this has been an issue every since we added it. Confirming. Upstream PR: https://github.com/openshift/origin/pull/11648 Turns out the fix is pretty straightforward. In kube, the failure of New() is non-fatal. However, due to the way we are starting it in origin, it is fatal if a cloud provider is configured. PR changes from fatal to a warning we can proceed with the only impact being services with type LoadBalancer won't work. The latest build (v3.4.0.17+b8a03bc) does not contain the fix code. https://github.com/openshift/ose/blob/v3.4.0.17/pkg/cmd/server/kubernetes/master.go QE will try again once the build contains the fix. The master service can be restarted and running on below build. Mark the bug as verified. # openshift version openshift v3.4.0.18+ada983f kubernetes v1.4.0+776c994 etcd 3.1.0-rc.0 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2017:0066 |