Documentation
¶
Index ¶
- Constants
- type SBDConfigReconciler
- type SBDRemediationReconciler
- func (r *SBDRemediationReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error)
- func (r *SBDRemediationReconciler) SetNodeManager(nodeManager *sbdprotocol.NodeManager)
- func (r *SBDRemediationReconciler) SetOwnNodeInfo(nodeID uint16, nodeName string)
- func (s *SBDRemediationReconciler) SetSBDDevices(heartbeatDevice, fenceDevice mocks.BlockDeviceInterface)
- func (r *SBDRemediationReconciler) SetupWithManager(mgr ctrl.Manager, suffix string) error
Constants ¶
const ( // Event types EventTypeNormal = "Normal" EventTypeWarning = "Warning" // Event reasons for SBDConfig operations ReasonSBDConfigReconciled = "SBDConfigReconciled" ReasonDaemonSetManaged = "DaemonSetManaged" ReasonServiceAccountCreated = "ServiceAccountCreated" ReasonClusterRoleBindingCreated = "ClusterRoleBindingCreated" ReasonSCCManaged = "SCCManaged" ReasonReconcileError = "ReconcileError" ReasonDaemonSetError = "DaemonSetError" ReasonServiceAccountError = "ServiceAccountError" ReasonSCCError = "SCCError" ReasonValidationError = "ValidationError" ReasonCleanupCompleted = "CleanupCompleted" ReasonCleanupError = "CleanupError" ReasonPVCManaged = "PVCManaged" ReasonPVCError = "PVCError" ReasonSBDDeviceInitialized = "SBDDeviceInitialized" ReasonSBDDeviceInitError = "SBDDeviceInitWaiting" // Finalizer for cleanup operations SBDConfigFinalizerName = "sbd-operator.medik8s.io/cleanup" // OpenShift SCC constants SBDOperatorSCCName = "sbd-operator-sbd-agent-privileged" // Default image constants DefaultSBDAgentImage = "sbd-agent:latest" SBDOperatorName = "sbd-operator" // Retry configuration constants for SBDConfig controller // MaxSBDConfigRetries is the maximum number of retry attempts for SBDConfig operations MaxSBDConfigRetries = 3 // InitialSBDConfigRetryDelay is the initial delay between SBDConfig operation retries InitialSBDConfigRetryDelay = 500 * time.Millisecond // MaxSBDConfigRetryDelay is the maximum delay between SBDConfig operation retries MaxSBDConfigRetryDelay = 10 * time.Second // SBDConfigRetryBackoffFactor is the exponential backoff factor for SBDConfig operation retries SBDConfigRetryBackoffFactor = 2.0 )
Event types and reasons for SBDConfig controller
const ( SBDRemediationFinalizer = "medik8s.io/sbd-remediation-finalizer" // ReasonCompleted indicates the remediation was completed successfully ReasonCompleted = "RemediationCompleted" // ReasonInProgress indicates the remediation is in progress ReasonInProgress = "RemediationInProgress" // ReasonFailed indicates the remediation failed ReasonFailed = "RemediationFailed" // ReasonAgentDelegated indicates the remediation was delegated to agents ReasonAgentDelegated = "RemediationAgentDelegated" // SBDAgentAnnotationKey marks a remediation created by sbd SBDAgentAnnotationKey = "medik8s.io/sbd-agent" // SBDAgentOOSTaintTimestampAnnotation records when OOS taint was placed on the node for this remediation SBDAgentOOSTaintTimestampAnnotation = "medik8s.io/sbd-oos-placed-at" // Fresh window and requeue delay for SBD agent remediations before placing OOS taint SBDAgentRemediationFreshAge = 15 * time.Second * (5 + 2) //TODO mshitrit should work around dependecies to update the calculation to be: main.SBDDefaultTimeoutSec/2 * (main.MaxConsecutiveFailures+2) if SBD_TIMEOUT_SECONDS defined, use instead of main.SBDDefaultTimeoutSec SBDAgentRemediationRequeueDelay = 10 * time.Second // SBDAgentOOSTaintStaleAge is the benchmark duration after which a remediation // is considered stale since OOS taint placement (annotation-based) SBDAgentOOSTaintStaleAge = 120 * time.Second // Status update retry configuration MaxStatusUpdateRetries = 10 InitialStatusUpdateDelay = 100 * time.Millisecond MaxStatusUpdateDelay = 5 * time.Second StatusUpdateBackoffFactor = 1.5 // Kubernetes API retry configuration MaxKubernetesAPIRetries = 3 InitialKubernetesAPIDelay = 200 * time.Millisecond MaxKubernetesAPIDelay = 10 * time.Second KubernetesAPIBackoffFactor = 2.0 // Event reasons for StorageBasedRemediation operations ReasonFencingInitiated = "FencingInitiated" ReasonNodeFenced = "NodeFenced" ReasonFencingFailed = "FencingFailed" ReasonRemediationCompleted = "RemediationCompleted" ReasonRemediationFailed = "RemediationFailed" ReasonRemediationInitiated = "RemediationInitiated" ReasonFinalizerProcessed = "FinalizerProcessed" ReasonAgentCoordination = "AgentCoordination" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type SBDConfigReconciler ¶
type SBDConfigReconciler struct {
client.Client
Scheme *runtime.Scheme
Recorder record.EventRecorder
// Filter log
FilterLog logr.Logger
// contains filtered or unexported fields
}
SBDConfigReconciler reconciles a SBDConfig object
func (*SBDConfigReconciler) Reconcile ¶
Reconcile is part of the main kubernetes reconciliation loop which aims to move the current state of the cluster closer to the desired state. For SBDConfig, this implementation deploys and manages the SBD Agent DaemonSet.
For more details, check Reconcile and its Result here: - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.21.0/pkg/reconcile
func (*SBDConfigReconciler) SetupWithManager ¶
func (r *SBDConfigReconciler) SetupWithManager(mgr ctrl.Manager) error
SetupWithManager sets up the controller with the Manager.
type SBDRemediationReconciler ¶
type SBDRemediationReconciler struct {
client.Client
Scheme *runtime.Scheme
Recorder record.EventRecorder
// contains filtered or unexported fields
}
SBDRemediationReconciler reconciles a StorageBasedRemediation object This controller performs actual SBD fencing operations by writing fence messages to the SBD device.
func (*SBDRemediationReconciler) Reconcile ¶
func (r *SBDRemediationReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error)
Reconcile is part of the main kubernetes reconciliation loop which aims to move the current state of the cluster closer to the desired state.
The StorageBasedRemediation controller performs actual fencing operations: 1. Validates the remediation request 2. Resolves target node name to node ID 3. Writes fence message to SBD device 4. Updates status based on fencing results
func (*SBDRemediationReconciler) SetNodeManager ¶
func (r *SBDRemediationReconciler) SetNodeManager(nodeManager *sbdprotocol.NodeManager)
SetNodeManager sets the node manager for node ID resolution
func (*SBDRemediationReconciler) SetOwnNodeInfo ¶
func (r *SBDRemediationReconciler) SetOwnNodeInfo(nodeID uint16, nodeName string)
SetOwnNodeInfo sets the own node information
func (*SBDRemediationReconciler) SetSBDDevices ¶
func (s *SBDRemediationReconciler) SetSBDDevices(heartbeatDevice, fenceDevice mocks.BlockDeviceInterface)
setSBDDevices allows setting custom SBD devices (useful for testing)
func (*SBDRemediationReconciler) SetupWithManager ¶
func (r *SBDRemediationReconciler) SetupWithManager(mgr ctrl.Manager, suffix string) error
SetupWithManager sets up the controller with the Manager.