Problems when running Control Center on minikube

Hey everyone :wave:,
I wanted to try Control Center on my Mac, but I do have some problems getting it up and running. Here is my setup:

  • Podman Desktop 1.13.2
  • Podman 5.2.4
  • Podman Minikube extension

I created a new minikube instance using Podman as driver and Docker as container runtime. The minikube cluster is up and running:

$ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:41969
CoreDNS is running at https://127.0.0.1:41969/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Next, I want to install Control Center using the Helm chart provides in the docs:

helm install control-center oci://docker.io/vaadin/control-center \
    -n control-center --create-namespace \
    --set serviceAccount.clusterAdmin=true \
    --set service.type=LoadBalancer --set service.port=8000 \
    --timeout 10m0s \
    --wait

After a few moments, the rollout seems to be finished:

$ kubectl rollout status deployment
deployment "control-center" successfully rolled out

This is the helm status at this point:

$ helm status control-center
NAME: control-center
LAST DEPLOYED: Thu Oct 24 06:13:32 2024
NAMESPACE: control-center
STATUS: pending-install
REVISION: 1
NOTES:
__      ____            _             _    ____           _                __
\ \    / ___|___  _ __ | |_ _ __ ___ | |  / ___|___ _ __ | |_ ___ _ __    / /
 | |  | |   / _ \| '_ \| __| '__/ _ \| | | |   / _ \ '_ \| __/ _ \ '__|  | |
  > > | |__| (_) | | | | |_| | | (_) | | | |__|  __/ | | | ||  __/ |    < <
 | |   \____\___/|_| |_|\__|_|  \___/|_|  \____\___|_| |_|\__\___|_|     | |
/_/                                                                       \_\

Congratulations! Control Center has been deployed to your Kubernetes cluster as
control-center in the control-center namespace.

To complete the configuration of Control Center, navigate with your browser to

http://localhost:8000

During the startup process, you will need a passkey saved as a secret named
control-center-passkey. You can get the value of
this secret by running:
kubectl -n control-center get secret control-center-passkey -o go-template='{{ .data.passkey | base64decode }}'

For more information on using Control Center, please refer to the documentation
at https://github.com/vaadin/control-center/wiki

Thank you for using Control Center!

The status is pending-install.

If I have a look at the logs of the pod control-center I see the following output:

$ kubectl logs --follow control-center-687bc546fc-bfmhn
__      ____            _             _    ____           _                __
\ \    / ___|___  _ __ | |_ _ __ ___ | |  / ___|___ _ __ | |_ ___ _ __    / /
 | |  | |   / _ \| '_ \| __| '__/ _ \| | | |   / _ \ '_ \| __/ _ \ '__|  | |
  > > | |__| (_) | | | | |_| | | (_) | | | |__|  __/ | | | ||  __/ |    < <
 | |   \____\___/|_| |_|\__|_|  \___/|_|  \____\___|_| |_|\__\___|_|     | |
/_/                                                                       \_\

:: }> Control Center  :: Running Spring Boot 3.3.4 :: Startup profile(s) ${spring.profiles.active} ::

2024-10-24T04:21:12.462Z  INFO 7 --- [control-center] [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-configmap.control-center.control-center'}]
2024-10-24T04:21:12.502Z  INFO 7 --- [control-center] [           main] c.v.c.ControlCenterApplication           : The following 1 profile is active: "kubernetes"
2024-10-24T04:21:17.556Z  INFO 7 --- [control-center] [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2024-10-24T04:21:18.251Z  INFO 7 --- [control-center] [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 651 ms. Found 3 JPA repository interfaces.
2024-10-24T04:21:19.849Z  INFO 7 --- [control-center] [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=d73cf596-f0ff-38ac-8487-cdc39303a55c
2024-10-24T04:21:22.272Z  INFO 7 --- [control-center] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2024-10-24T04:21:22.301Z  INFO 7 --- [control-center] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-10-24T04:21:22.302Z  INFO 7 --- [control-center] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.30]
2024-10-24T04:21:22.389Z  INFO 7 --- [control-center] [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-10-24T04:21:22.392Z  INFO 7 --- [control-center] [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 9789 ms
2024-10-24T04:21:26.037Z  INFO 7 --- [control-center] [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2024-10-24T04:21:26.441Z  INFO 7 --- [control-center] [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 6.5.3.Final
2024-10-24T04:21:26.656Z  INFO 7 --- [control-center] [           main] o.h.c.internal.RegionFactoryInitiator    : HHH000026: Second-level cache disabled
2024-10-24T04:21:29.186Z  INFO 7 --- [control-center] [           main] o.s.o.j.p.SpringPersistenceUnitInfo      : No LoadTimeWeaver setup: ignoring JPA class transformer
2024-10-24T04:21:29.366Z  WARN 7 --- [control-center] [           main] org.hibernate.orm.deprecation            : HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
2024-10-24T04:21:33.255Z  INFO 7 --- [control-center] [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2024-10-24T04:21:33.267Z  INFO 7 --- [control-center] [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2024-10-24T04:21:35.305Z  INFO 7 --- [control-center] [           main] o.s.d.j.r.query.QueryEnhancerFactory     : Hibernate is in classpath; If applicable, HQL parser will be used.
2024-10-24T04:21:38.698Z  WARN 7 --- [control-center] [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2024-10-24T04:21:40.294Z  INFO 7 --- [control-center] [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 1 endpoint beneath base path '/actuator'
2024-10-24T04:21:43.414Z  INFO 7 --- [control-center] [           main] Fabric8EventBasedConfigMapChangeDetector : Kubernetes event-based configMap change detector activated
2024-10-24T04:21:44.154Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /*
2024-10-24T04:21:44.154Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler
2024-10-24T04:21:44.294Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation
2024-10-24T04:21:44.316Z  INFO 7 --- [control-center] [           main] org.atmosphere.util.ForkJoinPool         : Using ForkJoinPool  java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power.
2024-10-24T04:21:44.331Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol 
2024-10-24T04:21:44.345Z  INFO 7 --- [control-center] [           main] o.a.container.JSR356AsyncSupport         : JSR 356 Mapping path /VAADIN/push
2024-10-24T04:21:44.371Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installing Default AtmosphereInterceptors
2024-10-24T04:21:44.373Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support
2024-10-24T04:21:44.373Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor
2024-10-24T04:21:44.375Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support
2024-10-24T04:21:44.375Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support
2024-10-24T04:21:44.376Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support
2024-10-24T04:21:44.377Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support
2024-10-24T04:21:44.378Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support
2024-10-24T04:21:44.379Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol
2024-10-24T04:21:44.380Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor
2024-10-24T04:21:44.381Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection
2024-10-24T04:21:44.382Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : 	org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor
2024-10-24T04:21:44.382Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them.
2024-10-24T04:21:44.383Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT 
2024-10-24T04:21:44.384Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT 
2024-10-24T04:21:44.385Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT 
2024-10-24T04:21:44.386Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT 
2024-10-24T04:21:44.386Z  INFO 7 --- [control-center] [           main] o.a.interceptor.HeartbeatInterceptor     : HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds
2024-10-24T04:21:44.386Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT 
2024-10-24T04:21:44.386Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT 
2024-10-24T04:21:44.386Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT 
2024-10-24T04:21:44.387Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT 
2024-10-24T04:21:44.387Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT 
2024-10-24T04:21:44.387Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT 
2024-10-24T04:21:44.388Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT 
2024-10-24T04:21:44.388Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Broadcaster Shared List Resources: false
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Broadcaster Polling Wait Time 100
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Shared ExecutorService supported: true
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Async I/O Thread Pool Size: 200
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory
2024-10-24T04:21:44.389Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor
2024-10-24T04:21:44.395Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Invoke AtmosphereInterceptor on WebSocket message true
2024-10-24T04:21:44.395Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : HttpSession supported: true
2024-10-24T04:21:44.395Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation
2024-10-24T04:21:44.395Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/10.1.30 using jakarta.servlet/3.0 and jsr356/WebSocket API
2024-10-24T04:21:44.395Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Atmosphere Framework 3.0.5.slf4jvaadin1 started.
2024-10-24T04:21:44.403Z  INFO 7 --- [control-center] [           main] org.atmosphere.cpr.AtmosphereFramework   : Installed AtmosphereInterceptor  Track Message Size Interceptor using | with priority BEFORE_DEFAULT 
2024-10-24T04:21:44.514Z  INFO 7 --- [control-center] [           main] c.v.f.s.DefaultDeploymentConfiguration   : Vaadin is running in production mode.
2024-10-24T04:21:44.603Z  INFO 7 --- [control-center] [           main] c.vaadin.flow.spring.SpringInstantiator  : The number of beans implementing 'I18NProvider' is 0. Cannot use Spring beans for I18N, falling back to the default behavior
2024-10-24T04:21:44.659Z  INFO 7 --- [control-center] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path '/'
2024-10-24T04:21:44.734Z  INFO 7 --- [control-center] [           main] c.v.c.ControlCenterApplication           : Started ControlCenterApplication in 40.204 seconds (process running for 42.837)
2024-10-24T04:21:53.078Z  INFO 7 --- [control-center] [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-10-24T04:21:53.079Z  INFO 7 --- [control-center] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2024-10-24T04:21:53.081Z  INFO 7 --- [control-center] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 2 ms

Everything looks fine, but Control Center is not yet available at http://localhost:8080.

If a have a look at the status of the pod control-center, I can see the following:

$ kubectl describe pod control-center-687bc546fc-bfmhn 
Name:             control-center-687bc546fc-bfmhn
Namespace:        control-center
Priority:         0
Service Account:  control-center
Node:             minikube/192.168.49.2
Start Time:       Thu, 24 Oct 2024 06:13:32 +0200
Labels:           app.kubernetes.io/instance=control-center
                  app.kubernetes.io/managed-by=Helm
                  app.kubernetes.io/name=control-center
                  app.kubernetes.io/version=1.0.0
                  helm.sh/chart=control-center-1.0.0
                  pod-template-hash=687bc546fc
Annotations:      <none>
Status:           Running
IP:               10.244.0.4
IPs:
  IP:           10.244.0.4
Controlled By:  ReplicaSet/control-center-687bc546fc
Containers:
  app:
    Container ID:   docker://56f101d222883754e34f739af790425e3a9e332e36e9ac3e837b11cf99a53512
    Image:          vaadin/control-center-app:1.0.0
    Image ID:       docker-pullable://vaadin/control-center-app@sha256:8a75e183f0126f3054cf1211586e2a2c1fafc343d460c11be37a7dee5a0ce5bb
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    137
      Started:      Thu, 24 Oct 2024 06:24:50 +0200
      Finished:     Thu, 24 Oct 2024 06:25:43 +0200
    Ready:          False
    Restart Count:  7
    Liveness:       http-get http://:http/actuator/health/liveness delay=0s timeout=1s period=10s #success=1 #failure=3
    Readiness:      http-get http://:http/actuator/health/readiness delay=0s timeout=1s period=10s #success=1 #failure=3
    Environment:
      SPRING_APPLICATION_NAME:  control-center
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-g477l (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  kube-api-access-g477l:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                     From               Message
  ----     ------     ----                    ----               -------
  Normal   Scheduled  13m                     default-scheduler  Successfully assigned control-center/control-center-687bc546fc-bfmhn to minikube
  Normal   Killing    12m                     kubelet            Container app failed liveness probe, will be restarted
  Normal   Pulled     12m (x2 over 13m)       kubelet            Container image "vaadin/control-center-app:1.0.0" already present on machine
  Normal   Created    12m (x2 over 13m)       kubelet            Created container app
  Warning  Unhealthy  11m (x12 over 13m)      kubelet            Readiness probe failed: Get "http://10.244.0.4:8080/actuator/health/readiness": dial tcp 10.244.0.4:8080: connect: connection refused
  Warning  Unhealthy  11m (x6 over 13m)       kubelet            Liveness probe failed: Get "http://10.244.0.4:8080/actuator/health/liveness": dial tcp 10.244.0.4:8080: connect: connection refused
  Normal   Started    8m16s (x6 over 13m)     kubelet            Started container app
  Warning  BackOff    3m16s (x19 over 7m16s)  kubelet            Back-off restarting failed container app in pod control-center-687bc546fc-bfmhn_control-center(369fc720-1fb8-48f7-a61c-280cfd3480fb)

I can see, that the readiness and liveness probes failed, because Kubernetes is not able to connect to the pod.

Any ideas what the problem could be?

Update: After a few additional attempts, the installation on minikube was successful. I suppose the problem was that the timeout for the readiness probe is maybe a bit too short under certain circumstances.

1 Like

Update 2: The problem with the liveness and readiness probes continues when I deploy an application using Control Center. I guess Control Center uses the default values for liveness probes and readiness probes for a pod, which means a pod must be live within 30 seconds after it was started, otherwise Kubernetes treats the pod as unhealthy and triggers a restart for that specific pod. This loop can repeat endlessly…
While 30 seconds may sound like a reasonable amount of time, I think it would be good to give some room for configuration here: Configure Liveness, Readiness and Startup Probes | Kubernetes. Not every application will be compiled to a Native Image and has fast startup. Some bigger applications will probably need more time to start. Or someone like me is using Control Center on minikube on a slightly old MacBook, which means Kubernetes has not that many resources available to operate fast ;)
Being able to specify something like initialDelaySeconds for the liveness probe, or being able to configure a startup probe would help in such cases.
I think I could change the underlying configuration of my deployed application manually and adjust the liveness probe as needed, but I think it would be better to have this kind of configuration in Control Center, because Control Center is in charge of the configuration of my application and I guess Control Center would override any custom changes to the configuration the next time it applies some configuration updates on the application.

1 Like

Thanks René for the feedback! Indeed, the initial failure you reported could have been caused by the default readiness timeout: if an app takes more than 30 seconds to startup, the pod is restarted. As you suggested, we could add a field to set a custom timeout value for apps that are known to take more than that!

1 Like