diff --git a/apis/v1alpha1/common.go b/apis/v1alpha1/common.go index 19217662..5b75a86d 100644 --- a/apis/v1alpha1/common.go +++ b/apis/v1alpha1/common.go @@ -243,6 +243,16 @@ type MainContainerSpec struct { // +optional ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty"` + // StartupProbe indicates that the Pod has successfully initialized. + // If specified, no other probes are executed until this completes successfully. + // If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. + // This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, + // when it might take a long time to load data or warm a cache, than during steady-state operation. + // This cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + StartupProbe *corev1.Probe `json:"startupProbe,omitempty"` + // Actions that the management system should take in response to container lifecycle events. // Cannot be updated. // Lifecycle field is from `corev1.Container.Lifecycle`. diff --git a/apis/v1alpha1/defaulting.go b/apis/v1alpha1/defaulting.go index 83fb1e8e..7c7cd64b 100644 --- a/apis/v1alpha1/defaulting.go +++ b/apis/v1alpha1/defaulting.go @@ -102,15 +102,9 @@ func (in *GreptimeDBCluster) defaultSpec() *GreptimeDBClusterSpec { var defaultSpec = &GreptimeDBClusterSpec{ Base: &PodTemplateSpec{ MainContainer: &MainContainerSpec{ - // The default liveness probe for the main container of GreptimeDBCluster. - LivenessProbe: &corev1.Probe{ - ProbeHandler: corev1.ProbeHandler{ - HTTPGet: &corev1.HTTPGetAction{ - Path: DefaultHealthEndpoint, - Port: intstr.FromInt32(DefaultHTTPPort), - }, - }, - }, + StartupProbe: defaultStartupProbe(), + LivenessProbe: defaultLivenessProbe(), + ReadinessProbe: defaultReadinessProbe(), }, }, Initializer: &InitializerSpec{Image: DefaultInitializerImage}, @@ -248,7 +242,9 @@ func (in *GreptimeDBCluster) mergeFrontendTemplate() error { } // Reconfigure the probe settings based on the HTTP port. + in.Spec.Frontend.Template.MainContainer.StartupProbe.HTTPGet.Port = intstr.FromInt32(in.Spec.Frontend.HTTPPort) in.Spec.Frontend.Template.MainContainer.LivenessProbe.HTTPGet.Port = intstr.FromInt32(in.Spec.Frontend.HTTPPort) + in.Spec.Frontend.Template.MainContainer.ReadinessProbe.HTTPGet.Port = intstr.FromInt32(in.Spec.Frontend.HTTPPort) } return nil @@ -262,7 +258,9 @@ func (in *GreptimeDBCluster) mergeMetaTemplate() error { } // Reconfigure the probe settings based on the HTTP port. + in.Spec.Meta.Template.MainContainer.StartupProbe.HTTPGet.Port = intstr.FromInt32(in.Spec.Meta.HTTPPort) in.Spec.Meta.Template.MainContainer.LivenessProbe.HTTPGet.Port = intstr.FromInt32(in.Spec.Meta.HTTPPort) + in.Spec.Meta.Template.MainContainer.ReadinessProbe.HTTPGet.Port = intstr.FromInt32(in.Spec.Meta.HTTPPort) } return nil @@ -276,7 +274,9 @@ func (in *GreptimeDBCluster) mergeDatanodeTemplate() error { } // Reconfigure the probe settings based on the HTTP port. + in.Spec.Datanode.Template.MainContainer.StartupProbe.HTTPGet.Port = intstr.FromInt32(in.Spec.Datanode.HTTPPort) in.Spec.Datanode.Template.MainContainer.LivenessProbe.HTTPGet.Port = intstr.FromInt32(in.Spec.Datanode.HTTPPort) + in.Spec.Datanode.Template.MainContainer.ReadinessProbe.HTTPGet.Port = intstr.FromInt32(in.Spec.Datanode.HTTPPort) } return nil @@ -290,7 +290,9 @@ func (in *GreptimeDBCluster) mergeFlownodeTemplate() error { } // TODO(zyy17): The flownode does not need liveness probe and will be added in the future. + in.Spec.Flownode.Template.MainContainer.StartupProbe = nil in.Spec.Flownode.Template.MainContainer.LivenessProbe = nil + in.Spec.Flownode.Template.MainContainer.ReadinessProbe = nil } return nil @@ -314,15 +316,9 @@ func (in *GreptimeDBStandalone) defaultSpec() *GreptimeDBStandaloneSpec { var defaultSpec = &GreptimeDBStandaloneSpec{ Base: &PodTemplateSpec{ MainContainer: &MainContainerSpec{ - // The default liveness probe for the main container of GreptimeDBStandalone. - LivenessProbe: &corev1.Probe{ - ProbeHandler: corev1.ProbeHandler{ - HTTPGet: &corev1.HTTPGetAction{ - Path: DefaultHealthEndpoint, - Port: intstr.FromInt32(DefaultHTTPPort), - }, - }, - }, + StartupProbe: defaultStartupProbe(), + LivenessProbe: defaultLivenessProbe(), + ReadinessProbe: defaultReadinessProbe(), }, }, HTTPPort: DefaultHTTPPort, @@ -379,3 +375,48 @@ func getVersionFromImage(imageURL string) string { } return DefaultVersion } + +func defaultStartupProbe() *corev1.Probe { + // When StartupProbe is successful, the liveness probe and readiness probe will be enabled. + return &corev1.Probe{ + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: DefaultHealthEndpoint, + Port: intstr.FromInt32(DefaultHTTPPort), + }, + }, + PeriodSeconds: 10, + + // The StartupProbe can try up to 30 * 10 = 300 seconds to start the container. + // For some scenarios, the database may take a long time to start, so we set the failure threshold to 30. + FailureThreshold: 30, + } +} + +func defaultLivenessProbe() *corev1.Probe { + // If the liveness probe fails, the container will be restarted. + return &corev1.Probe{ + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: DefaultHealthEndpoint, + Port: intstr.FromInt32(DefaultHTTPPort), + }, + }, + PeriodSeconds: 5, + FailureThreshold: 10, + } +} + +func defaultReadinessProbe() *corev1.Probe { + // If the readiness probe fails, the container will be removed from the service endpoints. + return &corev1.Probe{ + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: DefaultHealthEndpoint, + Port: intstr.FromInt32(DefaultHTTPPort), + }, + }, + PeriodSeconds: 5, + FailureThreshold: 10, + } +} diff --git a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/merge/test00/expect.yaml b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/merge/test00/expect.yaml index 8e558ffb..044e2f4f 100644 --- a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/merge/test00/expect.yaml +++ b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/merge/test00/expect.yaml @@ -31,9 +31,23 @@ spec: httpGet: path: /health port: 4000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 10 + failureThreshold: 30 frontend: replicas: 1 - httpPort: 4000 + httpPort: 9000 mysqlPort: 4002 postgreSQLPort: 4003 rpcPort: 4001 @@ -51,7 +65,21 @@ spec: livenessProbe: httpGet: path: /health - port: 4000 + port: 9000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 9000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 9000 + periodSeconds: 10 + failureThreshold: 30 resources: limits: cpu: 100m @@ -79,6 +107,20 @@ spec: httpGet: path: /health port: 4000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 10 + failureThreshold: 30 resources: limits: cpu: 50m @@ -110,6 +152,20 @@ spec: httpGet: path: /health port: 4000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 10 + failureThreshold: 30 resources: limits: cpu: 100m diff --git a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/merge/test00/input.yaml b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/merge/test00/input.yaml index ab5ba9f0..2de77523 100644 --- a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/merge/test00/input.yaml +++ b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/merge/test00/input.yaml @@ -16,6 +16,7 @@ spec: memory: 128Mi frontend: replicas: 1 + httpPort: 9000 template: main: image: greptime/greptimedb:test diff --git a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test00/expect.yaml b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test00/expect.yaml index 2c043789..28de5fa3 100644 --- a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test00/expect.yaml +++ b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test00/expect.yaml @@ -24,6 +24,20 @@ spec: httpGet: path: /health port: 4000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 10 + failureThreshold: 30 frontend: replicas: 1 httpPort: 4000 diff --git a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test01/expect.yaml b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test01/expect.yaml index 366053d1..1582ebe0 100644 --- a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test01/expect.yaml +++ b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test01/expect.yaml @@ -24,6 +24,20 @@ spec: httpGet: path: /health port: 4000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 10 + failureThreshold: 30 resources: requests: cpu: "500m" diff --git a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test02/expect.yaml b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test02/expect.yaml index 801e5a5b..df1019f7 100644 --- a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test02/expect.yaml +++ b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test02/expect.yaml @@ -35,6 +35,20 @@ spec: httpGet: path: /health port: 4000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 10 + failureThreshold: 30 frontend: replicas: 1 httpPort: 4000 diff --git a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test03/expect.yaml b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test03/expect.yaml index ef2f4278..1a103969 100644 --- a/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test03/expect.yaml +++ b/apis/v1alpha1/testdata/defaulting/greptimedbcluster/setdefaults/test03/expect.yaml @@ -11,6 +11,20 @@ spec: httpGet: path: /health port: 4000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 10 + failureThreshold: 30 version: latest initializer: image: greptime/greptimedb-initializer:latest @@ -75,6 +89,20 @@ spec: httpGet: path: /health port: 4000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 10 + failureThreshold: 30 datanodeStorage: dataHome: /data/greptimedb fs: diff --git a/apis/v1alpha1/testdata/defaulting/greptimedbstandalone/test00/expect.yaml b/apis/v1alpha1/testdata/defaulting/greptimedbstandalone/test00/expect.yaml index 2b24baa5..a62b26e2 100644 --- a/apis/v1alpha1/testdata/defaulting/greptimedbstandalone/test00/expect.yaml +++ b/apis/v1alpha1/testdata/defaulting/greptimedbstandalone/test00/expect.yaml @@ -16,6 +16,20 @@ spec: httpGet: path: /health port: 4000 + periodSeconds: 5 + failureThreshold: 10 + readinessProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 5 + failureThreshold: 10 + startupProbe: + httpGet: + path: /health + port: 4000 + periodSeconds: 10 + failureThreshold: 30 service: type: ClusterIP logging: diff --git a/apis/v1alpha1/zz_generated.deepcopy.go b/apis/v1alpha1/zz_generated.deepcopy.go index 628e3095..120e6ff8 100644 --- a/apis/v1alpha1/zz_generated.deepcopy.go +++ b/apis/v1alpha1/zz_generated.deepcopy.go @@ -686,6 +686,11 @@ func (in *MainContainerSpec) DeepCopyInto(out *MainContainerSpec) { *out = new(v1.Probe) (*in).DeepCopyInto(*out) } + if in.StartupProbe != nil { + in, out := &in.StartupProbe, &out.StartupProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } if in.Lifecycle != nil { in, out := &in.Lifecycle, &out.Lifecycle *out = new(v1.Lifecycle) diff --git a/config/crd/resources/greptime.io_greptimedbclusters.yaml b/config/crd/resources/greptime.io_greptimedbclusters.yaml index b2fc1498..1094739f 100644 --- a/config/crd/resources/greptime.io_greptimedbclusters.yaml +++ b/config/crd/resources/greptime.io_greptimedbclusters.yaml @@ -2048,6 +2048,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -4871,6 +4949,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -7668,6 +7824,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -10495,6 +10729,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -13345,6 +13657,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -16124,6 +16514,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: diff --git a/config/crd/resources/greptime.io_greptimedbstandalones.yaml b/config/crd/resources/greptime.io_greptimedbstandalones.yaml index 6e9c1ef3..a6abc4a4 100644 --- a/config/crd/resources/greptime.io_greptimedbstandalones.yaml +++ b/config/crd/resources/greptime.io_greptimedbstandalones.yaml @@ -2036,6 +2036,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: diff --git a/docs/api-references/docs.md b/docs/api-references/docs.md index de0021e4..22db45ee 100644 --- a/docs/api-references/docs.md +++ b/docs/api-references/docs.md @@ -563,6 +563,7 @@ _Appears in:_ | `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v/#envvar-v1-core) array_ | List of environment variables to set in the container.
Cannot be updated.
Env field is from `corev1.Container.Env`. | | | | `livenessProbe` _[Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v/#probe-v1-core)_ | Periodic probe of container liveness.
Container will be restarted if the probe fails.
More info: `https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes`
LivenessProbe field is from `corev1.Container.LivenessProbe`. | | | | `readinessProbe` _[Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v/#probe-v1-core)_ | Periodic probe of container service readiness.
Container will be removed from service endpoints if the probe fails.
ReadinessProbe field is from `corev1.Container.LivenessProbe`.
More info: `https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes` | | | +| `startupProbe` _[Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v/#probe-v1-core)_ | StartupProbe indicates that the Pod has successfully initialized.
If specified, no other probes are executed until this completes successfully.
If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
when it might take a long time to load data or warm a cache, than during steady-state operation.
This cannot be updated.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes | | | | `lifecycle` _[Lifecycle](https://kubernetes.io/docs/reference/generated/kubernetes-api/v/#lifecycle-v1-core)_ | Actions that the management system should take in response to container lifecycle events.
Cannot be updated.
Lifecycle field is from `corev1.Container.Lifecycle`. | | | | `imagePullPolicy` _[PullPolicy](https://kubernetes.io/docs/reference/generated/kubernetes-api/v/#pullpolicy-v1-core)_ | Image pull policy.
One of `Always`, `Never`, `IfNotPresent`.
Defaults to `Always` if `:latest` tag is specified, or IfNotPresent otherwise.
Cannot be updated.
More info: `https://kubernetes.io/docs/concepts/containers/images#updating-images`
ImagePullPolicy field is from `corev1.Container.ImagePullPolicy`. | | | | `volumeMounts` _[VolumeMount](https://kubernetes.io/docs/reference/generated/kubernetes-api/v/#volumemount-v1-core) array_ | Pod volumes to mount into the container's filesystem.
Cannot be updated. | | | diff --git a/manifests/bundle.yaml b/manifests/bundle.yaml index 2ec1870e..571bb4dc 100644 --- a/manifests/bundle.yaml +++ b/manifests/bundle.yaml @@ -2054,6 +2054,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -4877,6 +4955,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -7674,6 +7830,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -10501,6 +10735,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -13351,6 +13663,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -16130,6 +16520,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -19418,6 +19886,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: diff --git a/manifests/crds.yaml b/manifests/crds.yaml index 04334caf..6268112b 100644 --- a/manifests/crds.yaml +++ b/manifests/crds.yaml @@ -2047,6 +2047,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -4870,6 +4948,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -7667,6 +7823,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -10494,6 +10728,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -13344,6 +13656,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -16123,6 +16513,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: @@ -19411,6 +19879,84 @@ spec: x-kubernetes-int-or-string: true type: object type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object volumeMounts: items: properties: