You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tr...@apache.org on 2021/03/02 17:43:57 UTC

[flink] branch release-1.12 updated: [FLINK-21521][k8s] Pretty print K8s specifications in logs

This is an automated email from the ASF dual-hosted git repository.

trohrmann pushed a commit to branch release-1.12
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.12 by this push:
     new b0609a6  [FLINK-21521][k8s] Pretty print K8s specifications in logs
b0609a6 is described below

commit b0609a6a89d17c5b1258bcf26ae957d2613d4f6e
Author: wangyang0918 <da...@alibaba-inc.com>
AuthorDate: Mon Mar 1 12:07:57 2021 +0800

    [FLINK-21521][k8s] Pretty print K8s specifications in logs
    
    This closes #15052.
---
 flink-kubernetes/pom.xml                           |  6 ++++++
 .../kubeclient/Fabric8FlinkKubeClient.java         | 12 +++++++----
 .../resources/KubernetesConfigMapWatcher.java      |  6 ++++--
 .../resources/KubernetesPodsWatcher.java           |  6 ++++--
 .../flink/kubernetes/utils/KubernetesUtils.java    | 23 ++++++++++++++++++++++
 5 files changed, 45 insertions(+), 8 deletions(-)

diff --git a/flink-kubernetes/pom.xml b/flink-kubernetes/pom.xml
index e4df890..898f14a 100644
--- a/flink-kubernetes/pom.xml
+++ b/flink-kubernetes/pom.xml
@@ -65,6 +65,12 @@ under the License.
 		</dependency>
 
 		<dependency>
+			<groupId>org.apache.flink</groupId>
+			<artifactId>flink-shaded-jackson</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
 			<groupId>io.fabric8</groupId>
 			<artifactId>kubernetes-client</artifactId>
 			<version>${kubernetes.client.version}</version>
diff --git a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/Fabric8FlinkKubeClient.java b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/Fabric8FlinkKubeClient.java
index 779b369..b963dd1 100644
--- a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/Fabric8FlinkKubeClient.java
+++ b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/Fabric8FlinkKubeClient.java
@@ -97,7 +97,10 @@ public class Fabric8FlinkKubeClient implements FlinkKubeClient {
         final List<HasMetadata> accompanyingResources = kubernetesJMSpec.getAccompanyingResources();
 
         // create Deployment
-        LOG.debug("Start to create deployment with spec {}", deployment.getSpec().toString());
+        LOG.debug(
+                "Start to create deployment with spec {}{}",
+                System.lineSeparator(),
+                KubernetesUtils.tryToGetPrettyPrintYaml(deployment));
         final Deployment createdDeployment =
                 this.internalClient.apps().deployments().create(deployment);
 
@@ -133,9 +136,10 @@ public class Fabric8FlinkKubeClient implements FlinkKubeClient {
                             Collections.singletonList(kubernetesPod.getInternalResource()));
 
                     LOG.debug(
-                            "Start to create pod with metadata {}, spec {}",
-                            kubernetesPod.getInternalResource().getMetadata(),
-                            kubernetesPod.getInternalResource().getSpec());
+                            "Start to create pod with spec {}{}",
+                            System.lineSeparator(),
+                            KubernetesUtils.tryToGetPrettyPrintYaml(
+                                    kubernetesPod.getInternalResource()));
 
                     this.internalClient.pods().create(kubernetesPod.getInternalResource());
                 },
diff --git a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/resources/KubernetesConfigMapWatcher.java b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/resources/KubernetesConfigMapWatcher.java
index 22a6062..17aea35 100644
--- a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/resources/KubernetesConfigMapWatcher.java
+++ b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/resources/KubernetesConfigMapWatcher.java
@@ -19,6 +19,7 @@
 package org.apache.flink.kubernetes.kubeclient.resources;
 
 import org.apache.flink.kubernetes.kubeclient.FlinkKubeClient;
+import org.apache.flink.kubernetes.utils.KubernetesUtils;
 
 import io.fabric8.kubernetes.api.model.ConfigMap;
 
@@ -37,10 +38,11 @@ public class KubernetesConfigMapWatcher
     @Override
     public void eventReceived(Action action, ConfigMap configMap) {
         logger.debug(
-                "Received {} event for configMap {}, details: {}",
+                "Received {} event for configMap {}, details: {}{}",
                 action,
                 configMap.getMetadata().getName(),
-                configMap.getData());
+                System.lineSeparator(),
+                KubernetesUtils.tryToGetPrettyPrintYaml(configMap));
         final List<KubernetesConfigMap> configMaps =
                 Collections.singletonList(new KubernetesConfigMap(configMap));
         switch (action) {
diff --git a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/resources/KubernetesPodsWatcher.java b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/resources/KubernetesPodsWatcher.java
index b586dad..21e4800 100644
--- a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/resources/KubernetesPodsWatcher.java
+++ b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/resources/KubernetesPodsWatcher.java
@@ -19,6 +19,7 @@
 package org.apache.flink.kubernetes.kubeclient.resources;
 
 import org.apache.flink.kubernetes.kubeclient.FlinkKubeClient;
+import org.apache.flink.kubernetes.utils.KubernetesUtils;
 
 import io.fabric8.kubernetes.api.model.Pod;
 
@@ -36,10 +37,11 @@ public class KubernetesPodsWatcher extends AbstractKubernetesWatcher<Pod, Kubern
     @Override
     public void eventReceived(Action action, Pod pod) {
         logger.debug(
-                "Received {} event for pod {}, details: {}",
+                "Received {} event for pod {}, details: {}{}",
                 action,
                 pod.getMetadata().getName(),
-                pod.getStatus());
+                System.lineSeparator(),
+                KubernetesUtils.tryToGetPrettyPrintYaml(pod.getStatus()));
         final List<KubernetesPod> pods = Collections.singletonList(new KubernetesPod(pod));
         switch (action) {
             case ADDED:
diff --git a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/utils/KubernetesUtils.java b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/utils/KubernetesUtils.java
index 3f27d37..789a982 100644
--- a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/utils/KubernetesUtils.java
+++ b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/utils/KubernetesUtils.java
@@ -44,6 +44,9 @@ import org.apache.flink.runtime.persistence.filesystem.FileSystemStateStorageHel
 import org.apache.flink.util.FlinkRuntimeException;
 import org.apache.flink.util.function.FunctionUtils;
 
+import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
+
+import io.fabric8.kubernetes.api.model.KubernetesResource;
 import io.fabric8.kubernetes.api.model.Quantity;
 import io.fabric8.kubernetes.api.model.ResourceRequirements;
 import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder;
@@ -77,6 +80,8 @@ public class KubernetesUtils {
 
     private static final Logger LOG = LoggerFactory.getLogger(KubernetesUtils.class);
 
+    private static final YAMLMapper yamlMapper = new YAMLMapper();
+
     /**
      * Check whether the port config option is a fixed port. If not, the fallback port will be set
      * to configuration.
@@ -391,6 +396,24 @@ public class KubernetesUtils {
                 .collect(Collectors.toList());
     }
 
+    /**
+     * Try to get the pretty print yaml for Kubernetes resource.
+     *
+     * @param kubernetesResource kubernetes resource
+     * @return the pretty print yaml, or the {@link KubernetesResource#toString()} if parse failed.
+     */
+    public static String tryToGetPrettyPrintYaml(KubernetesResource kubernetesResource) {
+        try {
+            return yamlMapper
+                    .writerWithDefaultPrettyPrinter()
+                    .writeValueAsString(kubernetesResource);
+        } catch (Exception ex) {
+            LOG.debug(
+                    "Failed to get the pretty print yaml, fallback to {}", kubernetesResource, ex);
+            return kubernetesResource.toString();
+        }
+    }
+
     private static String getJavaOpts(
             Configuration flinkConfig, ConfigOption<String> configOption) {
         String baseJavaOpts = flinkConfig.getString(CoreOptions.FLINK_JVM_OPTIONS);