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);