Skip to content

Commit

Permalink
Update _faqs-for-review.md
Browse files Browse the repository at this point in the history
  • Loading branch information
RachelHooley authored Dec 25, 2024
1 parent 6ffc6a2 commit abb224f
Showing 1 changed file with 0 additions and 71 deletions.
71 changes: 0 additions & 71 deletions src/docs/kb/_faqs-for-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,28 +27,7 @@

## Ocean

<details style="background:#f2f2f2; padding:6px; margin:10px 0px 0px 0px">
<summary markdown="span" style="color:#7632FE; font-weight:600" id="oceanoutofstrategy">ECS: Why is the out of strategy replacement getting canceled for standalone tasks?</summary>

<div style="padding-left:16px">

If your virtual node group or Elastigroup has more on-demand instances than defined, your extra instances are reverted to spot instances when they become available. This is called the fix strategy.

If you see this message in the log:

<pre><code>DEBUG, Replacement of type Out of strategy for instance i-xxx has been canceled. Reason for cancelation: Instance contains stand-alone tasks, and the group's configuration doesn't allow termination of stand-alone tasks.</code></pre>

It means that your strategy cannot be fixed and your spot instances cannot be reverted to spots. This is because you have standalone tasks in the instances, and the group's configuration can't stop standalone tasks. These instances cannot be scaled down by the autoscaler.

[Update the cluster](https://docs.spot.io/api/#tag/Ocean-ECS/operation/OceanECSClusterUpdate) to include <code>"shouldScaleDownNonServiceTasks": true</code>.

The standalone task and instance are terminated and are not redeployed in Elastigroup because they weren't created as part of a service.

See [What is Amazon Elastic Container Service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_run_task.html).

</div>

</details>

<details style="background:#f2f2f2; padding:6px; margin:10px 0px 0px 0px">
<summary markdown="span" style="color:#7632FE; font-weight:600" id="oceanpodod"><font color="#FC01CC">???</font>: How can I make sure my pods only schedule on-demand nodes?</summary>
Expand Down Expand Up @@ -113,56 +92,6 @@ If you want to run only a specific workload on the nodes launched from the launc

</details>


<details style="background:#f2f2f2; padding:6px; margin:10px 0px 0px 0px">
<summary markdown="span" style="color:#7632FE; font-weight:600" id="oceanscaleup">AKS, EKS, GKE: How does the scale-up recovery process work?</summary>

<div style="padding-left:16px">

Ocean monitors for pending Kubernetes pods and automatically adjusts the size of the cluster based on the workload constraints and labels. Ocean ensures that the cluster resources are utilized and scales down underutilized nodes to ensure maximal cost optimization.

When it comes to a scale-up as part of an instance recovery, the scale-up mechanism behaves differently. The recovery process receives a list of markets that can accommodate the pods' requirements according to the virtual node group configuration and not the workload configuration (the pod's metadata constraints). Ocean scales a new instance to replace the old instance that was reclaimed as quickly as possible. This means the node affinity is not taken into account.

If the list of required instance types is not part of the virtual node group, the list includes different types than what is set in the workload configuration.

If one of the workloads is unscheduled after the launching of the new instance, the autoscaler scales up an instance to accommodate the requirements of that particular workload. When this happens, there's a long list of optional instance types that the workload can be scheduled on. These workloads are configured by the Kubernetes labels on the dedicated deployment.

You should configure the allowlist instance types at the virtual node group level, not for the deployment. This will prevent launching of other instance types and, eventually, a momentary scenario in which the workload is unscheduled.

If you have multiple deployments that can be scheduled on different instance types, you can create different virtual node groups for each use case.

</div>

</details>



<details style="background:#f2f2f2; padding:6px; margin:10px 0px 0px 0px">
<summary markdown="span" style="color:#7632FE; font-weight:600" id="oceandaemonsetpods">EKS: Why are DaemonSet pods not scheduled on all nodes in the cluster?</summary>

<div style="padding-left:16px">

Your DaemonSet pods are only scheduled on one specific virtual node group, not on all the nodes in a virtual node group in cluster.

This can happen if you use taints on your pods in virtual node groups. You can either use taints on all your pods, or not use taints. You can't mix pods with taints and without taints.

Update your tolerances in the DaemonSet YAML so you can schedule DaemonSet pods on the nodes in virtual node groups with taints.

For example, you can update your [DaemonSet pod YAML](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) to include:

<pre><code>
spec:
tolerations:
- key: dedicated
operator: Equal
value: statefulset
effect: NoSchedule
</code></pre>


</div>

</details>

<details style="background:#f2f2f2; padding:6px; margin:10px 0px 0px 0px">
<summary markdown="span" style="color:#7632FE; font-weight:600" id="oceanmaxpods">EKS: Why am I getting a <i>Maximum Pods configuration reached</i> error?</summary>
Expand Down

0 comments on commit abb224f

Please sign in to comment.