Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ClusterOperator Scheduling #650

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CONVENTIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,12 @@ following taints if doing so is necessary to form a functional Kubernetes node:
Operators should not specify tolerations in their manifests for any of the taints in
the above list without an explicit and credible justification.

Operators should never specify the following toleration:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The other guidelines in this section include justification, so that someone coming to the doc without all of the background can learn why we have each restriction. This addition would benefit from a sentence or two explaining why this value is so special that it should never be used.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, that looks good.

* `node.kubernetes.io/unschedulable`

Tolerating `node.kubernetes.io/unschedulable` may result in the inability to
drain nodes for upgrade operations.

When an operator configures its operand, the operator likewise may specify
tolerations for the aforementioned taints but should do so only as necessary and only
with explicit justification.
Expand Down Expand Up @@ -222,6 +228,10 @@ spec:
- operator: Exists
```

Tolerating all taints should be reserved for DaemonSets and static
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which static pods are you referring to?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there more than one type?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I meant which specific static pods in OpenShift. IIUC, static pods should be tolerating all NoExecute taints not NoSchedule as their manifests are directly present on the node, there is no need for them to go through scheduling cycle.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There isn't an option to tolerate all taints of a certain effect, just "All" generally.

pods only. Tolerating all taints on other types of pods may result in the
inability to drain nodes for upgrade operations.

An example of an operand that matches the first case is kube-proxy, which is required
for services to work. An example of an operand that matches the second case is the
DNS node resolver, which adds an entry to the `/etc/hosts` file on all node hosts so
Expand Down