sketch the docs and configuration
This commit is contained in:
		
							parent
							
								
									3a6ab485a6
								
							
						
					
					
						commit
						c6d36bb7ef
					
				|  | @ -205,6 +205,11 @@ configuration they are grouped under the `kubernetes` key. | |||
|   that should be assigned to the Postgres pods. The priority class itself must be defined in advance. | ||||
|   Default is empty (use the default priority class). | ||||
|    | ||||
|  * **master_pod_move_timeout** | ||||
|    The period of time to wait for the success of Patroni switchovers from master pods on an unschedulable node | ||||
|    to their respective replicas on healthy nodes. The situation where master pods still exist on the old node  | ||||
|    after this timeout expires has to be fixed manually. The default is 10 minutes. | ||||
|    | ||||
| 
 | ||||
| ## Kubernetes resource requests | ||||
| 
 | ||||
|  |  | |||
|  | @ -46,6 +46,7 @@ data: | |||
|   pod_label_wait_timeout: 10m | ||||
|   ready_wait_interval: 3s | ||||
|   ready_wait_timeout: 30s | ||||
|   #  master_pod_move_timeout: 10m | ||||
|   replication_username: standby | ||||
|   resource_check_interval: 3s | ||||
|   resource_check_timeout: 10m | ||||
|  |  | |||
|  | @ -59,6 +59,7 @@ type KubernetesMetaConfiguration struct { | |||
| 	// TODO: use namespacedname
 | ||||
| 	PodEnvironmentConfigMap string `json:"pod_environment_configmap,omitempty"` | ||||
| 	PodPriorityClassName    string `json:"pod_priority_class_name,omitempty"` | ||||
| 	MasterPodMoveTimeout    time.Duration `json:"master_pod_move_timeout,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // PostgresPodResourcesDefaults defines the spec of default resources
 | ||||
|  |  | |||
|  | @ -41,18 +41,21 @@ func (c *Controller) nodeAdd(obj interface{}) { | |||
| 	} | ||||
| 
 | ||||
| 	c.logger.Debugf("new node has been added: %q (%s)", util.NameFromMeta(node.ObjectMeta), node.Spec.ProviderID) | ||||
| 
 | ||||
| 	// check if the node became not ready while the operator was down (otherwise we would have caught it in nodeUpdate)
 | ||||
| 	if !c.nodeIsReady(node) { | ||||
| 		err := retryutil.Retry(2 * time.Minute, 10 * time.Minute, | ||||
| 
 | ||||
| 		err := retryutil.Retry(1 * time.Minute, c.opConfig.MasterPodMoveTimeout, | ||||
| 			func() (bool, error) { | ||||
| 				err := c.moveMasterPodsOffNode(node) | ||||
| 				if  err != nil { | ||||
| 					return false, fmt.Errorf(("Unable to move master pods off the unschedulable node. Will retry after delay")) | ||||
| 					return false, fmt.Errorf("unable to move master pods off the unschedulable node; will retry after delay") | ||||
| 				} | ||||
| 				return true, nil | ||||
| 			} ) | ||||
| 
 | ||||
| 		if err != nil { | ||||
| 			c.logger.Warning("Unable to move maser pods") | ||||
| 			c.logger.Warning("failed to move master pods from the node %q: timeout expired", node.Name) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -174,7 +177,7 @@ func (c *Controller) moveMasterPodsOffNode(node *v1.Node) error { | |||
| 		return fmt.Errorf("could not move master %d/%d pods from the %q node", | ||||
| 			leftPods, totalPods, nodeName) | ||||
| 	} | ||||
| 	 | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -50,6 +50,7 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur | |||
| 	result.ClusterNameLabel = fromCRD.Kubernetes.ClusterNameLabel | ||||
| 	result.NodeReadinessLabel = fromCRD.Kubernetes.NodeReadinessLabel | ||||
| 	result.PodPriorityClassName = fromCRD.Kubernetes.PodPriorityClassName | ||||
| 	result.MasterPodMoveTimeout = fromCRD.Kubernetes.MasterPodMoveTimeout | ||||
| 
 | ||||
| 	result.DefaultCPURequest = fromCRD.PostgresPodResources.DefaultCPURequest | ||||
| 	result.DefaultMemoryRequest = fromCRD.PostgresPodResources.DefaultMemoryRequest | ||||
|  |  | |||
|  | @ -80,6 +80,7 @@ type Config struct { | |||
| 	// value of this string must be valid JSON or YAML; see initPodServiceAccount
 | ||||
| 	PodServiceAccountDefinition            string `name:"pod_service_account_definition" default:""` | ||||
| 	PodServiceAccountRoleBindingDefinition string `name:"pod_service_account_role_binding_definition" default:""` | ||||
| 	MasterPodMoveTimeout                   time.Duration `name:"master_pod_move_timeout" default:"10m"` | ||||
| 	DbHostedZone                           string `name:"db_hosted_zone" default:"db.example.com"` | ||||
| 	AWSRegion                              string `name:"aws_region" default:"eu-central-1"` | ||||
| 	WALES3Bucket                           string `name:"wal_s3_bucket"` | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue