diff --git a/pom.xml b/pom.xml
index 2a60235..b49ad04 100644
--- a/pom.xml
+++ b/pom.xml
@@ -135,9 +135,9 @@
     <json.version>20211205</json.version>
 
     <!--  Submarine on Kubernetes  -->
-    <k8s.client-java.version>17.0.2</k8s.client-java.version>
+    <k8s.client-java.version>18.0.1</k8s.client-java.version>
     <kotlin-stdlib.version>1.6.10</kotlin-stdlib.version>
-    <k8s.fabric8.version>6.6.1</k8s.fabric8.version>
+    <k8s.fabric8.version>6.7.2</k8s.fabric8.version>
     <jersey.test-framework>2.27</jersey.test-framework>
 
     <!-- integration test-->
@@ -149,7 +149,7 @@
     <guice-servlet.version>3.0</guice-servlet.version>
     <guice.version>3.0</guice.version>
     <!--  server API  -->
-    <protobuf-java.version>3.21.10</protobuf-java.version>
+    <protobuf-java.version>3.22.0</protobuf-java.version>
     <joda-time.version>2.10.8</joda-time.version>
     <!--  pac4j  -->
     <pac4j.version>5.6.1</pac4j.version>
diff --git a/submarine-server/server-submitter/submarine-k8s-agent/pom.xml b/submarine-server/server-submitter/submarine-k8s-agent/pom.xml
index 000ac80..76fd3d8 100644
--- a/submarine-server/server-submitter/submarine-k8s-agent/pom.xml
+++ b/submarine-server/server-submitter/submarine-k8s-agent/pom.xml
@@ -37,7 +37,7 @@
     <dependency>
       <groupId>io.javaoperatorsdk</groupId>
       <artifactId>operator-framework</artifactId>
-      <version>4.3.2</version>
+      <version>4.5.0</version>
       <exclusions>
         <exclusion>
           <groupId>com.fasterxml.jackson.core</groupId>
diff --git a/submarine-server/server-submitter/submarine-k8s-agent/src/main/java/org/apache/submarine/server/k8s/agent/SubmarineAgentListener.java b/submarine-server/server-submitter/submarine-k8s-agent/src/main/java/org/apache/submarine/server/k8s/agent/SubmarineAgentListener.java
index 1ae7ec9..dd0a599 100644
--- a/submarine-server/server-submitter/submarine-k8s-agent/src/main/java/org/apache/submarine/server/k8s/agent/SubmarineAgentListener.java
+++ b/submarine-server/server-submitter/submarine-k8s-agent/src/main/java/org/apache/submarine/server/k8s/agent/SubmarineAgentListener.java
@@ -19,8 +19,6 @@
 
 package org.apache.submarine.server.k8s.agent;
 
-import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.KubernetesClientBuilder;
 import io.javaoperatorsdk.operator.Operator;
 import io.javaoperatorsdk.operator.api.config.ControllerConfigurationOverrider;
 import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
@@ -49,10 +47,8 @@
   public static final DateTimeFormatter DTF = DateTimeFormatter.ISO_DATE_TIME;
 
   public static void main(String[] args) throws IOException {
-    // create kubernetes client
-    KubernetesClient client = new KubernetesClientBuilder().build();
     // create operator
-    Operator operator = new Operator(client);
+    Operator operator = new Operator();
     // scan all Reconciler implemented subclasses
     Reflections reflections = new Reflections("org.apache.submarine.server.k8s.agent");
     Set<Class<? extends Reconciler>> reconcilers = reflections.getSubTypesOf(Reconciler.class);
@@ -69,8 +65,6 @@
         }
     );
     LOGGER.info("Starting agent with SUBMARINE_UID={}", OwnerReferenceConfig.getSubmarineUid());
-    // Adds a shutdown hook that automatically calls stop() when the app shuts down.
-    operator.installShutdownHook();
     // start operator
     operator.start();
     // Provide a lightweight service to handle health checks
diff --git a/submarine-server/server-submitter/submarine-k8s-agent/src/test/java/org/apache/submarine/server/k8s/agent/SubmitSubmarineAgentTest.java b/submarine-server/server-submitter/submarine-k8s-agent/src/test/java/org/apache/submarine/server/k8s/agent/SubmitSubmarineAgentTest.java
index fe20aed..779bddf 100644
--- a/submarine-server/server-submitter/submarine-k8s-agent/src/test/java/org/apache/submarine/server/k8s/agent/SubmitSubmarineAgentTest.java
+++ b/submarine-server/server-submitter/submarine-k8s-agent/src/test/java/org/apache/submarine/server/k8s/agent/SubmitSubmarineAgentTest.java
@@ -24,9 +24,7 @@
 import io.fabric8.kubernetes.api.model.OwnerReferenceBuilder;
 import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinition;
 import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.dsl.base.CustomResourceDefinitionContext;
 import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
-import io.fabric8.kubernetes.internal.KubernetesDeserializer;
 import io.javaoperatorsdk.operator.Operator;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.commons.utils.SubmarineConfiguration;
@@ -103,10 +101,10 @@
 
     // set client and operator
     client = server.getClient();
-    operator = new Operator(client);
+    operator = new Operator(client, null);
 
     // create notbook resource
-    KubernetesDeserializer.registerCustomKind("apiextensions.k8s.io/v1","Notebook", NotebookResource.class);
+    client.getKubernetesSerialization().registerKubernetesResource("apiextensions.k8s.io/v1","Notebook", NotebookResource.class);
     CustomResourceDefinition notebookCrd = client
             .apiextensions().v1()
             .customResourceDefinitions()
@@ -116,7 +114,7 @@
     client.apiextensions().v1().customResourceDefinitions().createOrReplace(notebookCrd);
 
     // create tf resource
-    KubernetesDeserializer.registerCustomKind("apiextensions.k8s.io/v1", "TFJob", TFJob.class);
+    client.getKubernetesSerialization().registerKubernetesResource("apiextensions.k8s.io/v1", "TFJob", TFJob.class);
     CustomResourceDefinition tfCrd = client
             .apiextensions().v1()
             .customResourceDefinitions()
@@ -126,7 +124,7 @@
     client.apiextensions().v1().customResourceDefinitions().create(tfCrd);
 
     // create pytorch resource
-    KubernetesDeserializer.registerCustomKind("apiextensions.k8s.io/v1", "PyTorchJob", PyTorchJob.class);
+    client.getKubernetesSerialization().registerKubernetesResource("apiextensions.k8s.io/v1", "PyTorchJob", PyTorchJob.class);
     CustomResourceDefinition ptCrd = client
             .apiextensions().v1()
             .customResourceDefinitions()
@@ -136,7 +134,7 @@
     client.apiextensions().v1().customResourceDefinitions().create(ptCrd);
 
     // create xgboost resource
-    KubernetesDeserializer.registerCustomKind("apiextensions.k8s.io/v1", "XGBoostJob", XGBoostJob.class);
+    client.getKubernetesSerialization().registerKubernetesResource("apiextensions.k8s.io/v1", "XGBoostJob", XGBoostJob.class);
     CustomResourceDefinition xgbCrd = client
             .apiextensions().v1()
             .customResourceDefinitions()
