Skip to content

Commit

Permalink
deployment with pvc not set node affinity (#256)
Browse files Browse the repository at this point in the history
  • Loading branch information
zexi committed Aug 26, 2020
1 parent 9cf0d16 commit eddc03d
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 8 deletions.
19 changes: 16 additions & 3 deletions pkg/manager/component/component.go
Expand Up @@ -432,6 +432,11 @@ func (m *ComponentManager) newDefaultDeploymentWithoutCloudAffinity(
return m.newDeployment(componentType, oc, volHelper, spec, initContainersFactory, containersFactory, false, corev1.DNSClusterFirst)
}

func (m *ComponentManager) removeDeploymentAffinity(deploy *apps.Deployment) *apps.Deployment {
deploy.Spec.Template.Spec.Affinity = nil
return deploy
}

func (m *ComponentManager) SetComponentAffinity(spec *v1alpha1.DeploymentSpec) {
if spec.Affinity == nil {
spec.Affinity = &corev1.Affinity{}
Expand Down Expand Up @@ -695,6 +700,7 @@ func (m *ComponentManager) newCloudServiceDeployment(
initContainersF func([]corev1.VolumeMount) []corev1.Container,
ports []corev1.ContainerPort,
mountEtcdTLS bool,
keepAffinity bool,
) (*apps.Deployment, error) {
configMap := controller.ComponentConfigMapName(oc, cType)
containersF := func(volMounts []corev1.VolumeMount) []corev1.Container {
Expand All @@ -721,8 +727,15 @@ func (m *ComponentManager) newCloudServiceDeployment(
h = NewVolumeHelper(oc, configMap, cType)
}

return m.newDefaultDeployment(cType, oc, h,
deploy, err := m.newDefaultDeployment(cType, oc, h,
deployCfg, initContainersF, containersF)
if err != nil {
return nil, err
}
if keepAffinity {
return deploy, nil
}
return m.removeDeploymentAffinity(deploy), nil
}

func (m *ComponentManager) newCloudServiceDeploymentWithInit(
Expand All @@ -749,7 +762,7 @@ func (m *ComponentManager) newCloudServiceDeploymentWithInit(
},
}
}
return m.newCloudServiceDeployment(cType, oc, deployCfg, initContainersF, ports, mountEtcdTLS)
return m.newCloudServiceDeployment(cType, oc, deployCfg, initContainersF, ports, mountEtcdTLS, true)
}

func (m *ComponentManager) newCloudServiceDeploymentNoInit(
Expand All @@ -759,7 +772,7 @@ func (m *ComponentManager) newCloudServiceDeploymentNoInit(
ports []corev1.ContainerPort,
mountEtcdTLS bool,
) (*apps.Deployment, error) {
return m.newCloudServiceDeployment(cType, oc, deployCfg, nil, ports, mountEtcdTLS)
return m.newCloudServiceDeployment(cType, oc, deployCfg, nil, ports, mountEtcdTLS, true)
}

func (m *ComponentManager) newCloudServiceSinglePortDeployment(
Expand Down
2 changes: 1 addition & 1 deletion pkg/manager/component/esxi.go
Expand Up @@ -71,12 +71,12 @@ func (m *esxiManager) getDeploymentStatus(oc *v1alpha1.OnecloudCluster) *v1alpha

func (m *esxiManager) getDeployment(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (*apps.
Deployment, error) {
m.SetComponentAffinity(&oc.Spec.EsxiAgent.DeploymentSpec)
dm, err := m.newCloudServiceSinglePortDeployment(v1alpha1.EsxiAgentComponentType, oc,
oc.Spec.EsxiAgent.DeploymentSpec, constants.EsxiAgentPort, false, false)
if err != nil {
return nil, err
}
dm = m.removeDeploymentAffinity(dm)

// workspace
podTemplate := &dm.Spec.Template.Spec
Expand Down
2 changes: 1 addition & 1 deletion pkg/manager/component/glance.go
Expand Up @@ -88,11 +88,11 @@ func (m *glanceManager) getPVC(oc *v1alpha1.OnecloudCluster) (*corev1.Persistent
}

func (m *glanceManager) getDeployment(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (*apps.Deployment, error) {
m.SetComponentAffinity(&oc.Spec.Glance.DeploymentSpec)
deploy, err := m.newCloudServiceSinglePortDeployment(v1alpha1.GlanceComponentType, oc, oc.Spec.Glance.DeploymentSpec, constants.GlanceAPIPort, true, false)
if err != nil {
return nil, err
}
deploy = m.removeDeploymentAffinity(deploy)
podTemplate := &deploy.Spec.Template.Spec
podVols := podTemplate.Volumes
volMounts := podTemplate.Containers[0].VolumeMounts
Expand Down
2 changes: 1 addition & 1 deletion pkg/manager/component/influxdb.go
Expand Up @@ -127,13 +127,13 @@ func (m *influxdbManager) getDeployment(oc *v1alpha1.OnecloudCluster, cfg *v1alp
},
}
}
m.SetComponentAffinity(&oc.Spec.Influxdb.DeploymentSpec)
deploy, err := m.newDefaultDeploymentNoInit(v1alpha1.InfluxdbComponentType, oc,
NewVolumeHelper(oc, configMap, v1alpha1.InfluxdbComponentType),
oc.Spec.Influxdb.DeploymentSpec, containersF)
if err != nil {
return nil, err
}
deploy = m.removeDeploymentAffinity(deploy)
pod := &deploy.Spec.Template.Spec
pod.Volumes = append(pod.Volumes, corev1.Volume{
Name: "data",
Expand Down
2 changes: 1 addition & 1 deletion pkg/manager/component/meter.go
Expand Up @@ -101,11 +101,11 @@ func (m *meterManager) getPVC(oc *v1alpha1.OnecloudCluster) (*corev1.PersistentV
}

func (m *meterManager) getDeployment(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (*apps.Deployment, error) {
m.SetComponentAffinity(&oc.Spec.Meter.DeploymentSpec)
deploy, err := m.newCloudServiceSinglePortDeployment(v1alpha1.MeterComponentType, oc, oc.Spec.Meter.DeploymentSpec, constants.MeterPort, true, false)
if err != nil {
return nil, err
}
deploy = m.removeDeploymentAffinity(deploy)
podTemplate := &deploy.Spec.Template.Spec
podVols := podTemplate.Volumes
podVols = append(podVols, corev1.Volume{
Expand Down
1 change: 1 addition & 0 deletions pkg/manager/component/notify.go
Expand Up @@ -150,6 +150,7 @@ func (m *notifyManager) getDeployment(oc *v1alpha1.OnecloudCluster, cfg *v1alpha
img := oc.Spec.Notify.Image
pluginImg := strings.ReplaceAll(img, "notify", "notify-plugins")
deploy, err := m.newCloudServiceSinglePortDeployment(v1alpha1.NotifyComponentType, oc, oc.Spec.Notify.DeploymentSpec, constants.NotifyPort, true, false)
deploy = m.removeDeploymentAffinity(deploy)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/manager/component/vpcagent.go
Expand Up @@ -65,7 +65,7 @@ func (m *vpcAgentManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alph
}

func (m *vpcAgentManager) getDeployment(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (*apps.Deployment, error) {
return m.newCloudServiceDeployment(v1alpha1.VpcAgentComponentType, oc, oc.Spec.VpcAgent, nil, nil, false)
return m.newCloudServiceDeployment(v1alpha1.VpcAgentComponentType, oc, oc.Spec.VpcAgent, nil, nil, false, true)
}

func (m *vpcAgentManager) getDeploymentStatus(oc *v1alpha1.OnecloudCluster) *v1alpha1.DeploymentStatus {
Expand Down

0 comments on commit eddc03d

Please sign in to comment.