diff --git a/pkg/api/types.go b/pkg/api/types.go index 9bac8e1cfb1..7eb90d1784d 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -116,11 +116,10 @@ type HTTPGetProbe struct { // LivenessProbe describes a liveness probe to be examined to the container. type LivenessProbe struct { - Enabled bool `yaml:"enabled,omitempty" json:"enabled,omitempty"` // Type of liveness probe. Current legal values "http" Type string `yaml:"type,omitempty" json:"type,omitempty"` // HTTPGetProbe parameters, required if Type == 'http' - HTTPGet HTTPGetProbe `yaml:"httpGet,omitempty" json:"httpGet,omitempty"` + HTTPGet *HTTPGetProbe `yaml:"httpGet,omitempty" json:"httpGet,omitempty"` // Length of time before health checking is activated. In seconds. InitialDelaySeconds int64 `yaml:"initialDelaySeconds,omitempty" json:"initialDelaySeconds,omitempty"` } @@ -141,9 +140,9 @@ type Container struct { // Optional: Defaults to unlimited. Memory int `yaml:"memory,omitempty" json:"memory,omitempty"` // Optional: Defaults to unlimited. - CPU int `yaml:"cpu,omitempty" json:"cpu,omitempty"` - VolumeMounts []VolumeMount `yaml:"volumeMounts,omitempty" json:"volumeMounts,omitempty"` - LivenessProbe LivenessProbe `yaml:"livenessProbe,omitempty" json:"livenessProbe,omitempty"` + CPU int `yaml:"cpu,omitempty" json:"cpu,omitempty"` + VolumeMounts []VolumeMount `yaml:"volumeMounts,omitempty" json:"volumeMounts,omitempty"` + LivenessProbe *LivenessProbe `yaml:"livenessProbe,omitempty" json:"livenessProbe,omitempty"` } // Percentile represents a pair which contains a percentage from 0 to 100 and diff --git a/pkg/kubelet/health_check.go b/pkg/kubelet/health_check.go index 7bf9933edf0..d05774dc4a3 100644 --- a/pkg/kubelet/health_check.go +++ b/pkg/kubelet/health_check.go @@ -79,6 +79,9 @@ func (h *HTTPHealthChecker) findPort(container api.Container, portName string) i // IsHealthy checks if the container is healthy by trying sending HTTP Get requests to the container. func (h *HTTPHealthChecker) IsHealthy(container api.Container) (bool, error) { params := container.LivenessProbe.HTTPGet + if params == nil { + return true, fmt.Errorf("Error, no HTTP parameters specified: %v", container) + } port := h.findPort(container, params.Port) if port == -1 { var err error diff --git a/pkg/kubelet/health_check_test.go b/pkg/kubelet/health_check_test.go index 6aa18dc0425..3c6a6a88d60 100644 --- a/pkg/kubelet/health_check_test.go +++ b/pkg/kubelet/health_check_test.go @@ -46,8 +46,8 @@ func TestHttpHealth(t *testing.T) { } container := api.Container{ - LivenessProbe: api.LivenessProbe{ - HTTPGet: api.HTTPGetProbe{ + LivenessProbe: &api.LivenessProbe{ + HTTPGet: &api.HTTPGetProbe{ Port: "8080", Path: "/foo/bar", }, diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 7167de30d50..bae98141467 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -991,7 +991,7 @@ func (kl *Kubelet) GetMachineStats() (*api.ContainerStats, error) { func (kl *Kubelet) healthy(container api.Container, dockerContainer *docker.APIContainers) (bool, error) { // Give the container 60 seconds to start up. - if !container.LivenessProbe.Enabled { + if container.LivenessProbe == nil { return true, nil } if time.Now().Unix()-dockerContainer.Created < container.LivenessProbe.InitialDelaySeconds { diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index ce071451074..1a73c43a3c7 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -448,8 +448,7 @@ func TestSyncManifestsUnhealthy(t *testing.T) { ID: "foo", Containers: []api.Container{ {Name: "bar", - LivenessProbe: api.LivenessProbe{ - Enabled: true, + LivenessProbe: &api.LivenessProbe{ // Always returns healthy == false Type: "false", },