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.

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