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

Clarify ready #103782

Merged
merged 7 commits into from
Aug 5, 2021
Merged

Clarify ready #103782

merged 7 commits into from
Aug 5, 2021

Conversation

matthiasgubler
Copy link
Contributor

What type of PR is this?

/kind documentation

What this PR does / why we need it:

Clarifies and aligns the ready definition for the DeploymentStatus, DeploymentStatus, ReplicationControllerStatus, StatefulSetStatus, and DaemonSetStatus

Which issue(s) this PR fixes:

Fixes kubernetes/api#38

Special notes for your reviewer:

Does this PR introduce a user-facing change?

NONE

Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:

Clarifies and aligns the docs regarding ReadyReplicas in the
ReplicaSetStatus, DeploymentStatus, StatefulSetStatus and the
ReplicationControllerStatus.
Clarifies and aligns the docs regarding NumberReady in the
DaemonSetStatus.
@k8s-ci-robot k8s-ci-robot added release-note-none Denotes a PR that doesn't merit a release note. kind/documentation Categorizes issue or PR as related to documentation. size/S Denotes a PR that changes 10-29 lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. labels Jul 19, 2021
@k8s-ci-robot
Copy link
Contributor

@matthiasgubler: This issue is currently awaiting triage.

If a SIG or subproject determines this is a relevant issue, they will accept it by applying the triage/accepted label and provide further guidance.

The triage/accepted label can be added by org members by writing /triage accepted in a comment.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot
Copy link
Contributor

Welcome @matthiasgubler!

It looks like this is your first PR to kubernetes/kubernetes 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes/kubernetes has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot k8s-ci-robot added the needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. label Jul 19, 2021
@k8s-ci-robot k8s-ci-robot added the kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API label Jul 19, 2021
@k8s-ci-robot
Copy link
Contributor

Hi @matthiasgubler. Thanks for your PR.

I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot added needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. needs-priority Indicates a PR lacks a `priority/foo` label and requires one. sig/apps Categorizes an issue or PR as relevant to SIG Apps. and removed do-not-merge/needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. labels Jul 19, 2021
@fejta-bot
Copy link

This PR may require API review.

If so, when the changes are ready, complete the pre-review checklist and request an API review.

Status of requested reviews is tracked in the API Review project.

@@ -237,7 +237,7 @@ type StatefulSetStatus struct {
// replicas is the number of Pods created by the StatefulSet controller.
Replicas int32 `json:"replicas" protobuf:"varint,2,opt,name=replicas"`

// readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.
// Total number of pods created by this StatefulSet controller with a Ready Condition by passing the readinessProbe.
Copy link
Member

Choose a reason for hiding this comment

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

comment should start with the serialized field name (readyReplicas)

applies to all modified godoc lines

Copy link
Member

Choose a reason for hiding this comment

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

Does this accurately describe behavior for pods without readiness probes? What about pods that set spec.readinessGates?

Referencing the Ready condition makes sense... I'm not sure denormalizing all the inputs that go into determining the Ready condition here makes sense (applies to all modified godoc lines)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Does this accurately describe behavior for pods without readiness probes? What about pods that set spec.readinessGates?

Good point. I rechecked the code and in the file podutils.go the function IsPodReady basically just checks the Ready Condition. In the pkg/kubelet/status/generate.go file is the function GeneratePodReadyCondition defined, which checks, that every container has the status ready and all readinessGates are true.

According to the KEP documentation https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/580-pod-readiness-gates is ready defined as "ready condition and all readiness gates are true".

My suggestion would be to have a text like this:

Suggested change
// Total number of pods created by this StatefulSet controller with a Ready Condition by passing the readinessProbe.
// readyReplicas is the number of pods created by this StatefulSet controller with a Ready Condition and that are passing all readinessGates.

Or would you suggest a rather generic description? Do you have another suggestion?

Copy link
Member

Choose a reason for hiding this comment

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

I wouldn't try to describe everything that goes into determining the Ready condition here... just limit it to saying it's the count of pods created by this controller with a Ready condition

Copy link
Contributor Author

Choose a reason for hiding this comment

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

👍
Next week I will commit a new version.

Copy link
Member

@liggitt liggitt left a comment

Choose a reason for hiding this comment

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

drop "controller" from the doc... the API field is on an object, not a controller (applies to all versions)

staging/src/k8s.io/api/apps/v1/types.go Outdated Show resolved Hide resolved
staging/src/k8s.io/api/apps/v1/types.go Outdated Show resolved Hide resolved
staging/src/k8s.io/api/apps/v1/types.go Outdated Show resolved Hide resolved
matthiasgubler and others added 2 commits July 29, 2021 19:54
Co-authored-by: Jordan Liggitt <jordan@liggitt.net>
@liggitt
Copy link
Member

liggitt commented Aug 4, 2021

/ok-to-test

@k8s-ci-robot k8s-ci-robot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Aug 4, 2021
@liggitt liggitt added the tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges. label Aug 4, 2021
@liggitt
Copy link
Member

liggitt commented Aug 4, 2021

/lgtm
/approve
/milestone v1.23

@k8s-ci-robot k8s-ci-robot added this to the v1.23 milestone Aug 4, 2021
@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Aug 4, 2021
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: liggitt, matthiasgubler

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 4, 2021
@k8s-triage-robot
Copy link

/retest
This bot automatically retries jobs that failed/flaked on approved PRs (send feedback to fejta).

Review the full test history for this PR.

Silence the bot with an /lgtm cancel or /hold comment for consistent failures.

1 similar comment
@k8s-triage-robot
Copy link

/retest
This bot automatically retries jobs that failed/flaked on approved PRs (send feedback to fejta).

Review the full test history for this PR.

Silence the bot with an /lgtm cancel or /hold comment for consistent failures.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API kind/documentation Categorizes issue or PR as related to documentation. lgtm "Looks good to me", indicates that a PR is ready to be merged. needs-priority Indicates a PR lacks a `priority/foo` label and requires one. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. release-note-none Denotes a PR that doesn't merit a release note. sig/apps Categorizes an issue or PR as relevant to SIG Apps. size/S Denotes a PR that changes 10-29 lines, ignoring generated files. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

DeploymentStatus readyReplicas docstring needs clarification.
5 participants