diff --git a/docs/EN_US/ContainerizedHPCC/ContainerizedHPCCSystemsPlatform.xml b/docs/EN_US/ContainerizedHPCC/ContainerizedHPCCSystemsPlatform.xml
index a6cf61bccfb..42c59d9c7b5 100644
--- a/docs/EN_US/ContainerizedHPCC/ContainerizedHPCCSystemsPlatform.xml
+++ b/docs/EN_US/ContainerizedHPCC/ContainerizedHPCCSystemsPlatform.xml
@@ -227,4 +227,6 @@
+
diff --git a/docs/EN_US/ContainerizedHPCC/ContainerizedMods/TroubleshootingHelmDeployments.xml b/docs/EN_US/ContainerizedHPCC/ContainerizedMods/TroubleshootingHelmDeployments.xml
new file mode 100644
index 00000000000..b67944e90db
--- /dev/null
+++ b/docs/EN_US/ContainerizedHPCC/ContainerizedMods/TroubleshootingHelmDeployments.xml
@@ -0,0 +1,513 @@
+
+
+
+ Troubleshooting Containerized Deployments
+
+
+ Introduction
+
+ Helm is a powerful package manager for Kubernetes, simplifying the
+ deployment and management of complex applications. However, even with
+ Helm, deployment issues can arise. This chapter will guide you through
+ common troubleshooting steps for Helm deployments. Command-line tools,
+ such as kubectl and helm are
+ available for both local and cloud deployments.
+
+
+
+ Useful Helm Commands
+
+ Here are some useful Helm commands for troubleshooting.
+
+ List deployments using this command
+ in a terminal window:
+
+ helm list
+
+ This returns all installed Helm releases.
+
+ If you have multiple namespaces, use this command:
+
+ helm list -A
+
+ Returns all installed Helm releases across all namespaces.
+
+ Get the status of a specific
+ release using this command in a terminal window:
+
+ helm status <release-name>
+
+ This returns the status of a specific release.
+
+ Get the user supplied values for a
+ release using this command in a terminal window:
+
+ helm get values <release-name>
+
+ By effectively using these Helm commands, you can quickly identify
+ and resolve issues with your Helm deployments. Remember to consult the
+ official Helm documentation for more detailed information and specific use
+ cases.
+
+
+
+ Check the Status of Pods
+
+ Pods are the smallest deployable units of computing that can be
+ created and managed in Kubernetes. Checking the status of pods is a
+ fundamental step in troubleshooting Kubernetes deployments. By monitoring
+ pod status, you can quickly identify and address potential issues,
+ ensuring the health and performance of your applications.
+
+ The HPCC Systems platform has one or more pods for each component of
+ a deployed system.
+
+ To get a quick overview of pod status, use the following command in
+ a terminal window:
+
+ kubectl get pods
+
+ This lists all pods in your cluster, along with their status,
+ restart count, and other details.
+
+ If you have deployments to more than one namespace, use this
+ command:
+
+ kubectl get pods -A
+
+ This lists all pods in all namespaces.
+
+ Each pod should indicate a status of Running and have a matching number of pods
+ displayed in the READY column.
+
+ Check the RESTARTS column, a high
+ number of restarts may indicate issues.
+
+
+ Identifying Other Issues and Their Root Cause
+
+ Pending Status:
+
+ Insufficient Resources
+
+
+ The pod might be waiting for resources like CPU or memory
+ to become available.
+
+
+
+
+ Scheduling Failures
+
+
+ There might be scheduling conflicts or node issues
+ preventing the pod from being scheduled.
+
+
+
+
+ Running Status:
+
+
+
+ High Restart Count
+
+
+ Frequent restarts could indicate issues with the pod's
+ configuration, image, or underlying infrastructure.
+
+
+
+
+ Resource Constraints
+
+
+ The pod might be experiencing resource limitations, leading
+ to performance degradation or crashes.
+
+
+
+
+ Failed Status:
+
+
+
+ Container Failures
+
+
+ One or more containers within the pod might have failed due
+ to errors or crashes.
+
+
+
+
+ Termination Signals
+
+
+ The pod might have been intentionally terminated,
+ potentially due to a deployment or scaling operation.
+
+
+
+
+
+
+
+ Describe a Pod
+
+ Use the kubectl command-line tool
+ to get detailed information about pods. By describing a pod, you can gain
+ valuable insights into its current state, configuration, and resource
+ utilization.
+
+ To get detailed information about a pod, use the following command
+ in a terminal window:
+
+ kubectl describe pod <pod-name>
+
+ The output provides detailed information about the pod,
+ including:
+
+
+
+ Events
+
+
+ A timeline of events related to the pod's lifecycle. If
+ there are issues with the deployment, they are commonly found in
+ this section.
+
+
+
+
+ Containers
+
+
+ Information about the containers running within the
+ pod.
+
+
+
+
+ Status
+
+
+ The current status of the pod.
+
+
+
+
+ Conditions
+
+
+ The conditions that the pod must meet to be considered
+ running.
+
+
+
+
+ If you have deployments to more than one namespace, use this
+ command:
+
+ kubectl describe pod <pod-name> -A
+
+ This describes the pod across all namespaces.
+
+ By carefully analyzing this information, you can:
+
+
+
+ Identify and troubleshoot issues
+
+
+ Pinpoint the root cause of problems, such as resource
+ constraints, configuration errors, or network connectivity
+ issues.
+
+
+
+
+ Monitor pod health and performance
+
+
+ Track the pod's status, resource usage, and event history to
+ ensure it's operating as expected.
+
+
+
+
+ Optimize resource allocation
+
+
+ Adjust resource requests and limits to improve performance
+ and cost-efficiency.
+
+
+
+
+ Gain insights into Kubernetes scheduling and resource
+ management
+
+
+ Learn how Kubernetes allocates resources to pods and handles
+ failures.
+
+
+
+
+ By mastering the art of describing pods, you can become a more
+ effective Kubernetes administrator and troubleshoot your deployments with
+ confidence.
+
+
+
+ Check the Status of Services
+
+ Services expose applications running on a cluster.
+
+ The kubectl get services command is a powerful
+ tool for troubleshooting Kubernetes deployments. It provides a concise
+ overview of the services running in your cluster, helping you identify
+ potential issues and their root causes.
+
+ To get a quick overview of services status, use the following
+ command in a terminal window:
+
+ kubectl get services
+
+ This lists all services in your cluster, along with their type,
+ internal and external IP addresses, port, and uptime (Age).
+
+ If you have deployments to more than one namespace, use this
+ command:
+
+ kubectl get service -A
+
+ This lists all services in all namespaces.
+
+ If a service that should have an external IP listed does not have
+ one displayed, that pod has an issue.
+
+
+
+ Describe a Service
+
+ Use the kubectl command-line tool
+ to get detailed information about a service. By describing a service in
+ Kubernetes, you can gain valuable insights into its configuration, health,
+ and how it interacts with pods.
+
+ To get detailed information about a service, use the following
+ command in a terminal window:
+
+ kubectl describe service <service-name>
+
+ The output provides detailed information about the service,
+ including the service's IP address, port, selectors, and other
+ details.
+
+ If you have deployments to more than one namespace, use this
+ command:
+
+ kubectl describe service <service-name> -A
+
+ This describes the service across all namespaces.
+
+
+
+ Viewing Pod Logs
+
+ Viewing pod logs is a crucial step in troubleshooting Helm
+ deployments because it provides real-time insights into the behavior and
+ errors occurring within your application containers. By analyzing these
+ logs, you can quickly identify and address a wide range of issues.
+
+ To view the logs of a specific pod, use the following command in a
+ terminal window:
+
+ kubectl logs <pod-name>
+
+ This returns the entire log for a pod.
+
+ To tail the logs and see real-time output:
+
+ kubectl logs -f <pod-name>
+
+ If the pod has more than one container, use this command to get logs
+ for a specific container:
+
+ kubectl logs <pod-name> -c <container-name>
+
+
+
+ Viewing Service Logs
+
+ While services themselves don't produce logs, you can view the logs
+ of the pods that are running the service.
+
+ To do this, you'll need to identify the pods that are selected by
+ the service's selector. You can use the describe command to see the
+ selector:
+
+ kubectl describe service <service-name>
+
+ Once you know the selector, you can list the pods that match
+ it:
+
+ kubectl get pods -l <selector-label>
+
+ Then, you can view the logs of those pods using the logs
+ command:
+
+ kubectl logs <pod-name>
+
+
+
+ Effective Log Analysis
+
+ Here are some additional tips for effective log analysis for
+ troubleshooting.
+
+
+
+ Filter and Search Logs
+
+
+ Use kubectl logs options to filter logs
+ by timestamp, container name, or specific keywords to focus on
+ relevant information.
+
+ For example:
+
+ kubectl logs <pod-name> --since=10m
+
+ Filters logs from a specific time.
+
+ Even though kubectl logs doesn't have a
+ direct keyword search option, you can use tools like
+ grep to filter the output.
+
+ For example:
+
+ kubectl logs <pod-name> | grep "TLS"
+
+
+
+
+ Correlate Logs with Metrics
+
+
+ Combine log analysis with monitoring metrics to gain a
+ holistic view of application performance.
+
+
+
+
+ Leverage Logging Tools
+
+
+ Consider using advanced logging tools like Elasticsearch,
+ Logstash, and Kibana (ELK Stack) to centralize, aggregate, and
+ analyze logs from multiple pods and services.
+
+
+
+
+ Set Appropriate Log Levels
+
+
+ Configure your application to log at the appropriate level of
+ detail, balancing the need for informative logs with the risk of
+ excessive log verbosity. You can then use a filter to show only
+ those log entries that meet the criteria.
+
+
+
+
+ Monitor logs in real-time.
+
+
+ Monitoring logs in real-time can be useful to debug ongoing
+ issues. Use the following command:
+
+ kubectl logs -f
+
+
+
+
+
+
+ Additional Troubleshooting Tips
+
+ Here are some additional tips for troubleshooting your
+ deployments.
+
+
+
+ Check your Helm chart configuration.
+
+
+ Ensure that your Helm chart(s) are configured correctly, with
+ accurate values for images, resources, and environment
+ variables.
+
+
+
+
+ Verify Image Availability.
+
+
+ Make sure that the images used in your Helm chart are
+ accessible and can be pulled by Kubernetes.
+
+
+
+
+ Inspect Resource Limits and Requests.
+
+
+ Review the resource limits and requests defined for your pods
+ and services. Insufficient resources can lead to performance issues
+ or pod failures.
+
+
+
+
+ Examine Kubernetes Logs.
+
+
+ Use the kubectl logs command to view the
+ logs of specific pods and containers. These logs can provide
+ valuable insights into errors and unexpected behavior.
+
+
+
+
+ Review Network Connectivity.
+
+
+ Ensure that your Kubernetes cluster has proper network
+ connectivity, both internally and externally. Network issues can
+ prevent pods from communicating with each other or with external
+ services.
+
+
+
+
+ Consider Persistent Volume Claims (PVCs).
+
+
+ If your application requires persistent storage, verify that
+ PVCs are provisioned correctly and that the underlying storage is
+ accessible.
+
+
+
+
+ By following these steps and tips, you can effectively troubleshoot
+ your containerized deployments and quickly identify the root cause of
+ issues.
+
+