<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT admins &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/tag/it-admins/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bestdevops.com</link>
	<description>Lets Learn, Do it &#38; Share! Thats a Best DevOps!!!</description>
	<lastBuildDate>Wed, 14 Oct 2026 08:01:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Container Logging: Tips for IT Troubleshooting and Effective Log Management</title>
		<link>https://www.bestdevops.com/container-logging-tips-for-it-troubleshooting-and-more/</link>
					<comments>https://www.bestdevops.com/container-logging-tips-for-it-troubleshooting-and-more/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 11 Apr 2020 05:38:10 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker Swarm]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[IT admins]]></category>
		<category><![CDATA[IT infrastructure]]></category>
		<category><![CDATA[IT troubleshooting]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=11786</guid>

					<description><![CDATA[Container logs are short-lived and easy to lose. Learn the four main container logging approaches, their trade-offs, and the best practices every DevOps team should follow to stay in control.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Containers have become central to modern DevOps workflows — supporting continuous delivery, automation, and immutable infrastructure patterns. But their defining characteristic, ephemerality, is also their biggest logging challenge. Containers can spin up and tear down in seconds, taking their log data with them. Without a deliberate logging strategy, that data disappears before anyone can act on it.</p>



<p class="wp-block-paragraph">This article covers why container logging is uniquely difficult, the four most common logging architectures, and the operational best practices that keep log pipelines reliable in production.</p>



<h2 class="wp-block-heading">Why Container Logging Is Different from Traditional Logging</h2>



<p class="wp-block-paragraph">In a traditional VM or bare-metal environment, a running process writes logs to a file, and that file stays on disk indefinitely. Containers break this assumption in several important ways.</p>



<h3 class="wp-block-heading">Short Lifespans Make Log Persistence Difficult</h3>



<p class="wp-block-paragraph">Containers are designed to be stateless. When a container stops — whether due to a crash, a scale-in event, or a deliberate shutdown — any data written inside the container&#8217;s writable layer is gone unless it was explicitly exported. This includes log files written to local paths inside the container. A log tied to the container&#8217;s own filesystem is effectively lost the moment the container exits.</p>



<h3 class="wp-block-heading">Logging Must Span Three Distinct Layers</h3>



<p class="wp-block-paragraph">A containerized application runs within at least three overlapping environments, and meaningful troubleshooting requires visibility into all three:</p>



<ul class="wp-block-list">
<li><strong>The application layer</strong> — logs emitted by the application code running inside the container.</li>
<li><strong>The container engine layer</strong> — events generated by the runtime itself (e.g., the Docker daemon), such as container start, stop, OOM kills, and image pulls.</li>
<li><strong>The host OS layer</strong> — kernel messages, system calls, and OS-level security events that affect every container sharing that kernel.</li>
</ul>



<p class="wp-block-paragraph">Correlating events across all three layers is essential for root-cause analysis. A crash that appears at the application layer may actually be triggered by a host-level memory constraint or a container engine restart.</p>



<h3 class="wp-block-heading">VM-Wrapped Containers Add a Fourth Layer</h3>



<p class="wp-block-paragraph">Some organizations run containers inside VMs as an additional security boundary — for example, to isolate workloads that share a kernel. This is a legitimate hardening pattern, but it means the logging pipeline must also account for the VM guest OS and the hypervisor. Each additional layer increases both coverage requirements and operational complexity.</p>



<h2 class="wp-block-heading">Four Container Logging Approaches</h2>



<p class="wp-block-paragraph">There is no universally correct approach. The right choice depends on your infrastructure, team maturity, and operational requirements. The four models below are not mutually exclusive — many production environments combine elements of all of them.</p>



<h3 class="wp-block-heading">1. Application-Based Logging</h3>



<p class="wp-block-paragraph">In this model, the application handles its own logging using a library or framework built into the code — for example, a Java service using Apache Log4j to write structured log events and ship them directly to a remote log aggregator.</p>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Familiar to teams migrating from monolithic architectures.</li>
<li>The application controls log structure, levels, and destinations.</li>
<li>Can send logs directly to a remote endpoint, bypassing local storage entirely.</li>
</ul>



<p class="wp-block-paragraph"><strong>Disadvantages:</strong></p>



<ul class="wp-block-list">
<li>The logging library runs inside the container, consuming CPU and memory and potentially degrading application performance.</li>
<li>No visibility into the container engine or host OS layers.</li>
<li>If the remote endpoint is unreachable and there is no local buffer configured, log events are dropped.</li>
<li>Log data stored locally inside the container is lost when the container stops unless forwarding is working correctly.</li>
</ul>



<h3 class="wp-block-heading">2. Volume-Based Logging</h3>



<p class="wp-block-paragraph">Container engines such as Docker support named volumes — storage areas managed by the engine that exist independently of the container&#8217;s lifecycle. Mounting a volume at the path where the application writes logs means those log files persist after the container is destroyed.</p>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Log data survives container restarts and termination.</li>
<li>A single volume can be shared across multiple containers, enabling centralized log collection at the host level.</li>
<li>Log files can be backed up, rotated, or consumed by a separate log-shipping agent running on the host.</li>
</ul>



<p class="wp-block-paragraph"><strong>Disadvantages:</strong></p>



<ul class="wp-block-list">
<li>Volumes are tied to a specific host. If a container is rescheduled to a different node (common in Kubernetes or Docker Swarm environments), the volume does not follow it, and logs from the new host are written to a different location.</li>
<li>Requires a separate process to ship logs from the volume to a central aggregator.</li>
</ul>



<h3 class="wp-block-heading">3. Container Engine Native Logging Drivers</h3>



<p class="wp-block-paragraph">Most container engines provide built-in logging drivers that capture a container&#8217;s standard output (<code>stdout</code>) and standard error (<code>stderr</code>) streams and forward them to a configured destination. Docker, for example, ships with drivers for syslog, journald, Fluentd, AWS CloudWatch Logs, Google Cloud Logging, and others.</p>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>No changes required to application code — any process writing to stdout/stderr is automatically captured.</li>
<li>Decouples log delivery from the application, reducing in-container resource overhead.</li>
<li>Direct integration with many common log aggregation platforms.</li>
</ul>



<p class="wp-block-paragraph"><strong>Disadvantages:</strong></p>



<ul class="wp-block-list">
<li>Only captures stdout and stderr. Applications that write logs to internal files require an additional mechanism.</li>
<li>Some drivers (e.g., the Docker <code>journald</code> driver) have blocking behavior that can slow container startup or affect performance under high log volume.</li>
<li>Driver availability and configuration options vary between engine versions.</li>
</ul>



<h3 class="wp-block-heading">4. Dedicated Logging Containers (Sidecar or DaemonSet Pattern)</h3>



<p class="wp-block-paragraph">Rather than relying on application code or the host engine alone, this pattern uses a purpose-built container to collect, aggregate, and forward logs. Two variants are common:</p>



<ul class="wp-block-list">
<li><strong>Sidecar pattern:</strong> A logging container runs alongside each application container in the same pod (Kubernetes) or task. It reads the application&#8217;s log stream and forwards it to a central aggregator.</li>
<li><strong>DaemonSet / host-level agent pattern:</strong> A single logging container (or agent) runs once per host node and collects logs from all containers running on that node. Tools like Logspout can capture stdout/stderr from every container on a host and forward the combined stream to a remote syslog endpoint.</li>
</ul>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Well-suited to microservices architectures — each service concern (running the app, shipping logs) is handled by a separate container.</li>
<li>The logging container moves with the application containers, solving the portability problem that affects volume-based logging.</li>
<li>Centralizes log aggregation logic, making it easier to update or replace the logging stack without touching application code.</li>
</ul>



<p class="wp-block-paragraph"><strong>Disadvantages:</strong></p>



<ul class="wp-block-list">
<li>Adds operational overhead — the logging container must be monitored, maintained, and updated.</li>
<li>In the sidecar pattern, resource usage scales with the number of application containers.</li>
</ul>



<h2 class="wp-block-heading">Container Log Management Best Practices</h2>



<h3 class="wp-block-heading">Measure the Performance Impact of Your Logging Approach</h3>



<p class="wp-block-paragraph">Every logging mechanism adds some overhead. Application-based logging consumes CPU inside the container. High-volume native logging drivers can introduce latency. Before committing to an approach in production, test it under realistic load. Verify that log collection does not degrade application response times or throughput to an unacceptable degree.</p>



<h3 class="wp-block-heading">Use Container-Aware Monitoring Tools</h3>



<p class="wp-block-paragraph">Generic monitoring platforms were not designed for ephemeral, dynamically scheduled workloads. Use tools that understand container lifecycles and can associate log events with the correct container, pod, or service — even after the source container has been removed. Tools such as Google&#8217;s cAdvisor collect container resource metrics, and many commercial observability platforms offer purpose-built container integrations.</p>



<h3 class="wp-block-heading">Prioritize Integrations Over Point Solutions</h3>



<p class="wp-block-paragraph">Modern container environments often span multiple orchestrators, cloud providers, and runtimes. A logging or observability platform that integrates broadly — for example, supporting Docker, Kubernetes, and managed Kubernetes services from multiple cloud providers — reduces the number of tools required and enables cross-environment log correlation. Evaluate platforms by their integration breadth before committing to one.</p>



<h3 class="wp-block-heading">Use Logs and Metrics Together</h3>



<p class="wp-block-paragraph">Logs and metrics answer different questions. Log entries capture discrete events — errors, warnings, specific user actions. Metrics capture continuous measurements — CPU utilization, memory usage, request rates. Effective troubleshooting requires both. Configure your logging pipeline to correlate log errors with concurrent metric anomalies, so that engineers can move quickly from symptom to root cause.</p>



<h3 class="wp-block-heading">Define Log Retention and Deletion Policies</h3>



<p class="wp-block-paragraph">Container environments generate logs at very high volume. Storing everything indefinitely is expensive and often unnecessary. Define retention periods based on two factors: the business value of the data over time (most operational logs lose diagnostic utility after a few weeks) and any applicable regulatory or compliance requirements that mandate minimum retention periods. Automate deletion of logs that have exceeded their retention window to avoid uncontrolled storage growth.</p>



<h3 class="wp-block-heading">Protect Log Files</h3>



<p class="wp-block-paragraph">Container logs frequently contain sensitive infrastructure details: host names, IP addresses, environment variable values, directory paths, and in some cases application secrets that were incorrectly logged. Restrict read access to log storage using appropriate access controls, and encrypt log data in transit and at rest. Audit who has access to log aggregation platforms, especially in multi-tenant environments.</p>



<h3 class="wp-block-heading">Keep Logging Infrastructure Separate from Application Infrastructure</h3>



<p class="wp-block-paragraph">If your logging platform runs in the same cluster as the applications it monitors, a cluster-wide incident — a network partition, a resource exhaustion event, a botched deployment — can take down both the application and the logging system simultaneously. This is precisely when you need logs most. Deploy your log aggregation and storage infrastructure in a separate environment or cluster, and ensure it is configured for high availability. A logging pipeline that goes dark during an incident provides no value.</p>



<h2 class="wp-block-heading">Choosing the Right Approach for Your Environment</h2>



<p class="wp-block-paragraph">The four logging models — application-based, volume-based, engine-native, and dedicated logging containers — each suit different operational contexts. Teams running simple single-host Docker environments may find the native logging driver sufficient. Large-scale Kubernetes environments typically benefit from a DaemonSet-based log agent combined with a centralized aggregation platform. Teams with strict compliance requirements may need multiple layers running in parallel.</p>



<p class="wp-block-paragraph">Regardless of which model you choose, enforce logging at all three layers — application, container engine, and host OS — and make sure your logging pipeline is tested, monitored, and treated as production-critical infrastructure in its own right. Log data you cannot access when you need it is the same as no log data at all.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/container-logging-tips-for-it-troubleshooting-and-more/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Nutanix Karbon 2.0: Air-Gapped Kubernetes Clusters and One-Click Upgrades</title>
		<link>https://www.bestdevops.com/nutanix-to-run-karbon-kubernetes-clusters-in-no-network-isolation-zone/</link>
					<comments>https://www.bestdevops.com/nutanix-to-run-karbon-kubernetes-clusters-in-no-network-isolation-zone/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 13 Feb 2020 05:25:20 +0000</pubDate>
				<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[IT admins]]></category>
		<category><![CDATA[IT-technolgoy]]></category>
		<category><![CDATA[Software-Market]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=10537</guid>

					<description><![CDATA[Nutanix Karbon 2.0 introduces air-gap support for running Kubernetes clusters in network-isolated environments, along with one-click Kubernetes version upgrades and improved Prism Central integration.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on reporting originally published by <a href="https://blocksandfiles.com" rel="noopener">blocksandfiles.com</a> and a since-deleted blog post by Nutanix senior systems engineer Alexander Ervik Johnsen. Some details could not be independently verified at time of writing.</em></p>



<h2 class="wp-block-heading">What Is Nutanix Karbon?</h2>



<p class="wp-block-paragraph">Nutanix Karbon is a curated Kubernetes distribution and management platform built on top of upstream Kubernetes. It abstracts away much of the operational complexity involved in deploying and managing Kubernetes clusters on Nutanix HCI infrastructure, making it easier for enterprise teams to run cloud-native, containerised workloads without deep Kubernetes expertise.</p>



<h2 class="wp-block-heading">The Air-Gap Problem With Kubernetes</h2>



<p class="wp-block-paragraph">A core operational challenge with standard Kubernetes deployments is external network dependency. During cluster bootstrapping and normal operation, Kubernetes pulls container images and configuration data from public registries such as Docker Hub or gcr.io. This makes running Kubernetes in a fully network-isolated — or <em>air-gapped</em> — environment effectively impossible without additional tooling.</p>



<p class="wp-block-paragraph">Air-gapped environments are common in:</p>



<ul class="wp-block-list">
  <li>Government and defence networks handling classified data</li>
  <li>Industrial control and SCADA systems</li>
  <li>Financial institutions with strict regulatory segmentation requirements</li>
  <li>Organisations defending against ransomware and malware by physically or logically isolating workloads from internet-connected networks</li>
</ul>



<p class="wp-block-paragraph">Prior to Karbon 2.0, none of these environments could realistically run Karbon-managed Kubernetes clusters without some form of internet connectivity.</p>



<h2 class="wp-block-heading">Karbon 2.0: Air-Gap Support Explained</h2>



<p class="wp-block-paragraph">Karbon 2.0 introduces the <strong>Karbon Air Gap</strong> feature, which allows Kubernetes clusters to operate in network-isolated environments by replacing the dependency on external registries with a locally hosted Docker registry.</p>



<p class="wp-block-paragraph">According to Ervik Johnsen&#8217;s blog post (since removed), the architecture works as follows:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;The Air Gap uses a local Docker registry, hosted on a separate VM, to provide Karbon services. Deploying the Air Gap requires Internet access to download the deployment package from the Nutanix Support Portal and transfer it to a local web server.&#8221;</p><cite>Alexander Ervik Johnsen, Nutanix Senior Systems Engineer</cite></blockquote>



<h3 class="wp-block-heading">Deployment Workflow</h3>



<p class="wp-block-paragraph">The air-gap deployment process follows a standard sneakernet pattern used in secure environments:</p>



<ol class="wp-block-list">
  <li><strong>Download</strong> the Karbon Air Gap deployment bundle from the Nutanix Support Portal. This requires a machine with internet access.</li>
  <li><strong>Transfer</strong> the bundle to a portable storage device (USB drive, external disk, or similar removable media).</li>
  <li><strong>Transport</strong> the storage device physically to the air-gapped site. This step can be performed by Nutanix, a certified system integrator, or the customer&#8217;s own staff.</li>
  <li><strong>Install</strong> the binaries onto a local web server within the isolated environment.</li>
  <li><strong>Serve</strong> container images from the locally hosted Docker registry VM, replacing all external registry calls.</li>
</ol>



<p class="wp-block-paragraph">Once the local registry is operational, Kubernetes clusters managed by Karbon pull all required images from within the isolated network, eliminating the external internet dependency entirely.</p>



<h2 class="wp-block-heading">One-Click Kubernetes Version Upgrades</h2>



<p class="wp-block-paragraph">A historically painful operational task for Kubernetes administrators is performing in-place version upgrades. Without purpose-built tooling, upgrading Kubernetes often means redeploying entire clusters or individual applications — a disruptive, time-consuming process that many teams avoid, leading to clusters running outdated Kubernetes versions.</p>



<p class="wp-block-paragraph">Karbon 2.0 addresses this directly by introducing <strong>one-click Kubernetes upgrades</strong> accessible via the <code>karbonctl</code> command-line tool. Administrators can trigger a Kubernetes version upgrade on an existing cluster without redeployment, reducing both downtime risk and operational complexity.</p>



<h2 class="wp-block-heading">Prism Central and Active Directory Integration</h2>



<p class="wp-block-paragraph">Karbon 2.0 deepens integration with Nutanix Prism Central, the unified management plane for Nutanix infrastructure. Specifically, administrators can now leverage an existing <strong>Prism Central + Active Directory (AD)</strong> configuration to grant <em>read-only</em> Prism user access to Karbon resources.</p>



<p class="wp-block-paragraph">This allows organisations to extend role-based access control (RBAC) from their existing AD infrastructure into their Kubernetes management layer without managing a separate identity system for Karbon.</p>



<h2 class="wp-block-heading">Summary of Karbon 2.0 Capabilities</h2>



<figure class="wp-block-table"><table><thead><tr><th>Feature</th><th>Description</th></tr></thead><tbody><tr><td>Air-Gap Support</td><td>Run Kubernetes clusters in fully network-isolated environments using a local Docker registry VM</td></tr><tr><td>One-Click Kubernetes Upgrades</td><td>Upgrade Kubernetes version on existing clusters via <code>karbonctl</code> without redeployment</td></tr><tr><td>Prism Central Integration</td><td>Use existing Prism Central + AD setup to manage read-only Karbon user access</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Why This Matters for Enterprise and Regulated Environments</h2>



<p class="wp-block-paragraph">The air-gap capability is a meaningful step toward making Kubernetes viable in sectors where network isolation is non-negotiable. Combined with simplified upgrades and tighter identity management integration, Karbon 2.0 positions Nutanix&#8217;s Kubernetes offering more competitively for enterprise customers who have previously been blocked from adopting container orchestration due to connectivity requirements.</p>



<p class="wp-block-paragraph">For teams already running Nutanix HCI with Prism Central, these additions lower the barrier to adopting and maintaining Kubernetes clusters at scale within their existing operational workflows.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/nutanix-to-run-karbon-kubernetes-clusters-in-no-network-isolation-zone/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
