{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/12866","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/12866/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/12866/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/12866/events","html_url":"https://github.com/kubernetes/kubernetes/issues/12866","id":101699336,"number":12866,"title":"Add more probe control parameters","user":{"login":"bgrant0607","id":7725777,"avatar_url":"https://avatars.githubusercontent.com/u/7725777?v=3","gravatar_id":"","url":"https://api.github.com/users/bgrant0607","html_url":"https://github.com/bgrant0607","followers_url":"https://api.github.com/users/bgrant0607/followers","following_url":"https://api.github.com/users/bgrant0607/following{/other_user}","gists_url":"https://api.github.com/users/bgrant0607/gists{/gist_id}","starred_url":"https://api.github.com/users/bgrant0607/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bgrant0607/subscriptions","organizations_url":"https://api.github.com/users/bgrant0607/orgs","repos_url":"https://api.github.com/users/bgrant0607/repos","events_url":"https://api.github.com/users/bgrant0607/events{/privacy}","received_events_url":"https://api.github.com/users/bgrant0607/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/api","name":"area/api","color":"e1ed21"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/priority/P1","name":"priority/P1","color":"eb6420"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/node","name":"team/node","color":"d2b48c"}],"state":"open","locked":false,"assignee":{"login":"timstclair","id":3272040,"avatar_url":"https://avatars.githubusercontent.com/u/3272040?v=3","gravatar_id":"","url":"https://api.github.com/users/timstclair","html_url":"https://github.com/timstclair","followers_url":"https://api.github.com/users/timstclair/followers","following_url":"https://api.github.com/users/timstclair/following{/other_user}","gists_url":"https://api.github.com/users/timstclair/gists{/gist_id}","starred_url":"https://api.github.com/users/timstclair/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timstclair/subscriptions","organizations_url":"https://api.github.com/users/timstclair/orgs","repos_url":"https://api.github.com/users/timstclair/repos","events_url":"https://api.github.com/users/timstclair/events{/privacy}","received_events_url":"https://api.github.com/users/timstclair/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/13","html_url":"https://github.com/kubernetes/kubernetes/milestones/v1.1","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/13/labels","id":1220916,"number":13,"title":"v1.1","description":"Release 1.1.\r\n\r\nTentative feature priorities for 1.1; broad strokes; details not exhaustive:\r\n* API extensibility\r\n  * API groups (#10009)\r\n  * API plugins\r\n  * API type extensions\r\n* Ease of use\r\n  * Make it easier to create resources\r\n    * New resource from template\r\n    * Secret/config generation\r\n    * export, convert, clone, RC from pod\r\n  * Make it easier to update resources\r\n    * Declarative updates: kubectl apply\r\n    * kubectl edit, diff\r\n    * Rolling update as a service: Deployment API\r\n    * Rolling update improvements, such as taking readiness into account\r\n* Simplified cluster deployment\r\n* Networking improvements\r\n  * L7\r\n  * Further DNS integration\r\n* IAM\r\n* Auto-scaling\r\n  * Scale subresource\r\n  * Horizontal auto-scaling\r\n  * Initial requests\r\n* Workload expansion\r\n  * Batch\r\n    * Job\r\n    * ScheduledJob\r\n  * Big data\r\n    * QoS\r\n* Performance\r\n  * Protobuf-based v3 etcd API\r\n  * Generator-based JSON parser #3338\r\n  * BSON, protobufs, flatbuffers, etc. #8132\r\n  * Replicate etcd and/or apiserver\r\n  * Cache, index, and serve watches in apiserver\r\n* Support for Docker 1.7.1, and 1.8.x if it's ready early enough\r\n\r\nAdditionally, we plan to focus on velocity, reliability, availability, and scalability improvements.","creator":{"login":"bgrant0607","id":7725777,"avatar_url":"https://avatars.githubusercontent.com/u/7725777?v=3","gravatar_id":"","url":"https://api.github.com/users/bgrant0607","html_url":"https://github.com/bgrant0607","followers_url":"https://api.github.com/users/bgrant0607/followers","following_url":"https://api.github.com/users/bgrant0607/following{/other_user}","gists_url":"https://api.github.com/users/bgrant0607/gists{/gist_id}","starred_url":"https://api.github.com/users/bgrant0607/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bgrant0607/subscriptions","organizations_url":"https://api.github.com/users/bgrant0607/orgs","repos_url":"https://api.github.com/users/bgrant0607/repos","events_url":"https://api.github.com/users/bgrant0607/events{/privacy}","received_events_url":"https://api.github.com/users/bgrant0607/received_events","type":"User","site_admin":false},"open_issues":64,"closed_issues":34,"state":"open","created_at":"2015-07-22T19:17:12Z","updated_at":"2015-08-31T06:03:58Z","due_on":"2015-09-21T07:00:00Z","closed_at":null},"comments":5,"created_at":"2015-08-18T16:50:41Z","updated_at":"2015-08-31T21:58:25Z","closed_at":null,"body":"Resurrected from #66 and #761.\r\n\r\nProbe currently supports the following control parameters:\r\n```\r\n\t// Length of time before health checking is activated.  In seconds.\r\n\tInitialDelaySeconds int64 `json:\"initialDelaySeconds,omitempty\" description:\"number of seconds after the container has started before liveness probes are initiated; see http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes\"`\r\n\t// Length of time before health checking times out.  In seconds.\r\n\tTimeoutSeconds int64 `json:\"timeoutSeconds,omitempty\" description:\"number of seconds after which liveness probes timeout; defaults to 1 second; see http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes\"`\r\n```\r\n\r\nWe should add the following common control parameters (matching, for instance, [AppEngine's parameters](https://cloud.google.com/appengine/docs/managed-vms/config#health_checking)):\r\n```\r\n// How often to probe\r\nPeriodSeconds *int64\r\n// Minimum consecutive successes for the probe to be considered successful after having reached the FailureThreshold; defaults to 1; must be 1 for liveness \r\nSuccessThreshold *int\r\n// Minimum consecutive failures for the probe to be considered failed; defaults to 1\r\nFailureThreshold *int\r\n```\r\n\r\nAt some point we'll probably want to add an enable/disable boolean, since it's convenient to be able to disable liveness probes without losing the parameter settings, but that's less critical than the above."},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/136512550","html_url":"https://github.com/kubernetes/kubernetes/issues/12866#issuecomment-136512550","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/12866","id":136512550,"user":{"login":"karlkfi","id":3980984,"avatar_url":"https://avatars.githubusercontent.com/u/3980984?v=3","gravatar_id":"","url":"https://api.github.com/users/karlkfi","html_url":"https://github.com/karlkfi","followers_url":"https://api.github.com/users/karlkfi/followers","following_url":"https://api.github.com/users/karlkfi/following{/other_user}","gists_url":"https://api.github.com/users/karlkfi/gists{/gist_id}","starred_url":"https://api.github.com/users/karlkfi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karlkfi/subscriptions","organizations_url":"https://api.github.com/users/karlkfi/orgs","repos_url":"https://api.github.com/users/karlkfi/repos","events_url":"https://api.github.com/users/karlkfi/events{/privacy}","received_events_url":"https://api.github.com/users/karlkfi/received_events","type":"User","site_admin":false},"created_at":"2015-08-31T21:58:25Z","updated_at":"2015-08-31T21:58:25Z","body":"In the vein of probe improvements: I'm not sure InitialDelaySeconds is really desirable as currently documented/implemented. I suspect a better option would be one starts probing immediately upon creation but delays interpretation of failed probes as failure until after the designated delay. This would allow probed resources to be found to be alive/ready ASAP, while waiting up to the configured time to be marked as dead/failed.\r\n\r\nAdditionally, I think having the prober itself do retries is a mistake that degrades the resolution of the probe to 3 x TimeoutSeconds. It seems likely that some of the pod state transition logic leaked into the prober to avoid pronouncing a pod failed after 1 failed attempt. But I'm not sure that SuccessThreshold or FailureThreshold belong in the prober at all. Those are configurations for state transition logic, not a data point gatherer. The prober should be agnostic to the state transition logic.\r\n\r\nI have an example impl of the re-imagined InitialDelaySeconds definition in the component prober from #12324: https://github.com/mesosphere/kubernetes/blob/component-registration/pkg/component/prober.go\r\n\r\nI suspect we should go a step further tho and make state transitioning its own layer. \r\n\r\nWhile I do think PeriodSeconds should be added to the prober, I suspect the values selected for the SuccessThreshold, FailureThreshold, and TimeoutSeconds all will be impacted by the value selected for the PeriodSeconds. A shorter timeout (and removal/reduction of retries) allows you to reduce the period, and a shorter period might require you to increase the thresholds. So maybe you don't want to have a single threshold config shared by multiple independently configurable timeouts/periods."}}