Skip to content

Conversation

@pooja-bhavani
Copy link

@pooja-bhavani pooja-bhavani commented Dec 24, 2025

Add comprehensive Kubernetes CKA training content from the CKA repository

This PR includes:

  • Introduction-to-kubernetes.md: Introduction to Kubernetes fundamentals
  • lifecycle-management.md: Cluster lifecycle management and upgrade strategies
  • Modules/module1/: CKA exam module content covering:
    • 01-cluster-lifecycle.md: Cluster Architecture, Installation & Configuration
    • 02-pod-security.md: Pod Security Standards and Admission Control
    • 03-rbac.md: Role-Based Access Control

Content from CKA repository (feature/CKA branch) with all original formatting preserved.
Excluding: kubernetes-challenge directory as per requirements.

Summary by CodeRabbit

  • Documentation
    • Added an Introduction to Kubernetes guide covering fundamentals, microservices examples, resilience, and career relevance.
    • Added Cluster Lifecycle Management with upgrade, backup/restore, maintenance, and troubleshooting procedures.
    • Added Cluster setup and lifecycle module with HA/topology guidance and practical commands.
    • Added Pod Security Standards and admission control guidance with troubleshooting and exam tips.
    • Added RBAC guide with examples and verification workflows.
    • Added CoreDNS and CRD/operator reference docs with patterns and debugging guidance.

✏️ Tip: You can customize this high-level summary in your review settings.

Added an introduction to Kubernetes, explaining its significance in DevOps, microservices, and career advancement.
Added comprehensive documentation on cluster lifecycle management, including upgrade strategies, etcd backup and restore procedures, node maintenance, certificate management, and troubleshooting tips.
This module provides comprehensive coverage of Kubernetes cluster architecture, installation, and configuration, including control plane components, worker node components, and high availability configurations.
Add comprehensive documentation on Pod Security Standards, Admission Control, and troubleshooting common errors in Kubernetes.
Added comprehensive documentation on Role-Based Access Control (RBAC) in Kubernetes, covering core components, ServiceAccount usage, Role and RoleBinding examples, ClusterRole and ClusterRoleBinding, troubleshooting permissions, and common configuration errors.
@coderabbitai
Copy link

coderabbitai bot commented Dec 24, 2025

Warning

Rate limit exceeded

@pooja-bhavani has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 22 minutes and 2 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 03833d4 and 67a874a.

📒 Files selected for processing (1)
  • Modules/module2/01-pod-networking.md
📝 Walkthrough

Walkthrough

Adds six new Kubernetes documentation files covering fundamentals, cluster lifecycle and ops, pod security, RBAC, CoreDNS, and CRDs/operators with practical commands, examples, troubleshooting, and exam-oriented tips.

Changes

Cohort / File(s) Summary
Introduction & Overview
Introduction-to-kubernetes.md
New entry-level guide describing Kubernetes fundamentals, microservices example (Product Catalog, Shopping Cart, Payment), communication/self-healing, deployment automation (ArgoCD/FluxCD), and career relevance.
Cluster Lifecycle & Ops
Modules/module1/01-cluster-lifecycle.md, lifecycle-management.md
01-cluster-lifecycle.md: Cluster architecture, control plane/worker components, pod creation flow, CNI, kubeadm/kind/Helm install steps, HA topologies, node join/verification commands. lifecycle-management.md: Upgrade strategy, etcd backup/restore, node maintenance (drain/cordon), certificate management, troubleshooting checklists and commands.
Pod Security & Admission
Modules/module1/02-pod-security.md
New Pod Security Standards and Pod Security Admission guide: policy levels (Privileged/Baseline/Restricted), admission modes (enforce/audit/warn), namespace labeling, implementation/testing commands, common errors and debugging workflow.
RBAC & Access Control
Modules/module1/03-rbac.md
Comprehensive RBAC reference: Role/ClusterRole/RoleBinding/ClusterRoleBinding/ServiceAccount concepts, YAML examples, namespace vs cluster scope, kubectl auth can-i checks, troubleshooting scenarios and verification workflows.
Networking: DNS (CoreDNS)
Modules/module2/04-core-dns.md
CoreDNS deep-dive: DNS resolution flow, config patterns (custom entries, TTL, caching), troubleshooting guides and debug steps, YAML snippets, monitoring/HA and best practices.
CRDs & Operators
Modules/module1/04-crd's.md
Intro to CRDs and operator patterns, common operators (Prometheus, Cert-Manager, ArgoCD, Istio), CRD examples, installation steps, debugging CRD issues, and applied examples (storageVersion/type mismatches).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested reviewers

  • LondheShubham153

Poem

🐇 I hopped through pages, docs in tow,

Clusters rise where containers grow.
Pods stay safe, DNS sings true,
RBAC locks and CRDs do too.
A rabbit cheers — hooray for kube!

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Add cka content' is vague and overly generic—it does not clearly convey the specific nature of the additions (comprehensive CKA training documentation with 6+ new files across multiple modules). Use a more descriptive title that specifies the key content being added, such as 'Add CKA training documentation: cluster lifecycle, pod security, and RBAC modules' or similar.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (7)
Introduction-to-kubernetes.md (1)

50-51: Fix heading style inconsistency.

Line 50 uses setext-style heading (--- underline), while the rest of the document uses atx-style headings (#). For consistency with markdownlint and the other files in this PR, convert to atx format.

-In this course you'll work on real-world Kubernetes activities such as cluster lifecycle management, security/RBAC, and networking.
----
+## In this course you'll work on real-world Kubernetes activities such as cluster lifecycle management, security/RBAC, and networking.
Modules/module1/02-pod-security.md (2)

1-10: Fix heading level increment and structure.

Line 3 jumps from h1 directly to h3 (skipping h2), violating heading hierarchy. The "Overview" section should be h2.

-# Pod Security Standards and Admission Control
+# Pod Security Standards and Admission Control
 
-## Overview
+## Overview

Additionally, several inline emphasis blocks (e.g., lines 57, 69, 94, 107, 250) are used as pseudo-headings but should be converted to proper h4 headings for consistency with markdown best practices.


26-283: Add language identifiers to fenced code blocks.

Multiple fenced code blocks lack language specifications (bash, yaml, etc.). This improves syntax highlighting and readability. Examples at lines 26, 32, 39, 58, 70, 85, 96, 109, 154, 203, 250.

🔎 Proposed fix for code block languages
-Example: 
+Example 1 – HostPath blocked by restricted policy
 
-Error:
+**Error:**
-```
+```yaml
 Error from server (Forbidden): error when creating "pod.yaml": 
 pods "nginx" is forbidden: violates PodSecurity "restricted:latest": 
 hostPath volumes are not allowed
-```
+```

-Problem Pod:
+**Problem Pod:**
-```yaml
+```yaml

And similarly for bash blocks:

-**Debugging Steps:**
+**Debugging Steps:**
-```bash
+```bash
 # Check namespace Pod Security labels
 kubectl get namespace <namespace> -o yaml | grep pod-security
-```
+```
lifecycle-management.md (1)

92-92: Add language identifiers to two fenced code blocks.

Lines 92 and 240 use plain fenced code blocks without language specifications. Add bash or appropriate language identifier for consistency.

Line 92:

 **Expected Output:**
-```
+```text
 [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.34.1". Enjoy!
 
 [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
-```
+```

Line 240:

 **Output:**
-```
+```text
 +----------+----------+------------+------------+
 |   HASH   | REVISION | TOTAL KEYS | TOTAL SIZE |
 +----------+----------+------------+------------+
-```
+```

Also applies to: 240-240

Modules/module1/01-cluster-lifecycle.md (3)

187-198: Fix heading increment issues in Cluster Lifecycle Management section.

Lines 187 and 223 have improper heading level increments:

  • Line 187: "### Check Cluster Components" should be h2 (##) after the h2 "Cluster Lifecycle Management"
  • Line 223: "#### Weave Net" should be h3 (###) to properly nest under "Install a CNI"
-### Check Cluster Components
+## Check Cluster Components

-#### Weave Net
+### Weave Net

Additionally, several inline emphasis blocks (lines 155, 162, 170, 181, 216, 239) like "kubectl v1.34" and "kind" are used as pseudo-headings. For consistency, convert these to proper h3 or h4 headings.


38-245: Add language identifiers to fenced code blocks.

Multiple code blocks lack language specifications (bash, yaml, etc.). Examples at lines 38, 107, 124, 156, 163, 171, 175, 182, 211, 217, 224, 228, 245. Add appropriate language labels (e.g., bash for shell commands, yaml for YAML examples).

🔎 Example fixes
 Example: API Request 
-```
+```bash
 kubectl create deployment nginx --image=nginx
 # 1. kubectl sends HTTP POST to kube-apiserver
-```
+```

-```
+```bash
 curl -LO "https://dl.k8s.io/release/v1.34.0/bin/linux/amd64/kubectl"
-```
+```

-```
+```text
 Client Pod → Service IP → kube-proxy rules → Backend Pod
-```
+```

200-200: Add missing period after "etc." abbreviation.

Line 200: "NICs, etc" should be "NICs, etc." (with period) per LanguageTool grammar rules.

-- Provides **Dynamic Resource Allocation** for GPUs, TPUs, NICs, etc
+- Provides **Dynamic Resource Allocation** for GPUs, TPUs, NICs, etc.
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6efd9f3 and 025566d.

📒 Files selected for processing (5)
  • Introduction-to-kubernetes.md
  • Modules/module1/01-cluster-lifecycle.md
  • Modules/module1/02-pod-security.md
  • Modules/module1/03-rbac.md
  • lifecycle-management.md
🧰 Additional context used
🪛 LanguageTool
Modules/module1/01-cluster-lifecycle.md

[style] ~200-~200: In American English, abbreviations like “etc.” require a period.
Context: ...urce Allocation** for GPUs, TPUs, NICs, etc - Delayed Job Pod Replacement - Th...

(ETC_PERIOD)

Introduction-to-kubernetes.md

[style] ~16-~16: Consider an alternative for the overused word “exactly”.
Context: ...nning? This seamless orchestration is exactly what K8s provides: emphasize resilience...

(EXACTLY_PRECISELY)


[style] ~23-~23: To elevate your writing, try using an alternative expression here.
Context: ...WS, Azure, GCP, on-prem). Here's why it matters for your DevOps career: - It works on ...

(MATTERS_RELEVANT)

🪛 markdownlint-cli2 (0.18.1)
Modules/module1/01-cluster-lifecycle.md

38-38: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


107-107: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


124-124: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


155-155: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


156-156: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


162-162: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


163-163: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


170-170: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


171-171: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


175-175: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


181-181: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


182-182: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


187-187: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


211-211: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


216-216: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


217-217: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


223-223: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)


224-224: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


228-228: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


239-239: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


245-245: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Modules/module1/02-pod-security.md

3-3: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


26-26: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


32-32: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


39-39: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


57-57: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


58-58: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


69-69: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


70-70: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


85-85: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


94-94: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


96-96: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


107-107: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


109-109: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


154-154: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


203-203: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


250-250: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

lifecycle-management.md

92-92: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


240-240: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Introduction-to-kubernetes.md

50-50: Heading style
Expected: atx; Actual: setext

(MD003, heading-style)

🔇 Additional comments (1)
Modules/module1/03-rbac.md (1)

1-362: LGTM - Well-structured RBAC documentation.

This file is well-organized with clear sections, practical examples, and good use of visual markers (✅/❌) to distinguish correct vs. incorrect configurations. The troubleshooting section provides valuable debugging workflows and permission verification commands. The content aligns well with CKA exam requirements and complements the other files in this PR.

No major issues detected. The examples are contextual and demonstrate common RBAC misconfigurations effectively.

Added comprehensive documentation on CoreDNS configuration, troubleshooting, and best practices for Kubernetes.
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 025566d and f8f8777.

📒 Files selected for processing (1)
  • Modules/module2/04-core-dns.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
Modules/module2/04-core-dns.md

18-18: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


274-274: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

🔇 Additional comments (1)
Modules/module2/04-core-dns.md (1)

1-330: Comprehensive and technically accurate CoreDNS documentation.

The document provides clear, well-organized coverage of CoreDNS fundamentals, practical configuration patterns, detailed troubleshooting workflows with real-world examples, and actionable best practices. The DNS naming conventions, resolution flow, and configuration examples are all technically correct. Troubleshooting sections effectively guide users through diagnosis and remediation steps. This is a strong addition to the CKA training material.


### DNS Naming Convention

```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add language specifier to fenced code block.

The code block at line 18 is missing a language identifier. This helps with syntax highlighting and markdown linting compliance.

🔎 Proposed fix
-```
+```text
 <service-name>.<namespace>.svc.cluster.local
-```
+```
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

18-18: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In Modules/module2/04-core-dns.md around line 18, the fenced code block is
missing a language specifier; update the opening fence to include an appropriate
language tag (e.g., "text" or "bash") so markdown renderers and linters apply
correct syntax highlighting and pass lint rules—replace the opening "```" with
"```text" (or another suitable language) and keep the closing "```" unchanged.


### Example 1: DNS Resolution Fails (nslookup fails)

**ERRor**:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix typo: "ERRor" should be "Error".

🔎 Proposed fix
-**ERRor**:
+**Error**:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**ERRor**:
**Error**:
🤖 Prompt for AI Agents
In Modules/module2/04-core-dns.md around line 121, there's a typo: the word
"ERRor" should be corrected to "Error"; update the text to use the standard
capitalization "Error" so the heading/label reads correctly.

Comment on lines +274 to +284
**A. Corefile syntax error**
```bash
# Check logs for syntax errors
kubectl logs -n kube-system <coredns-pod> | grep -i error

# Fix Corefile
kubectl edit configmap coredns -n kube-system

# Restart CoreDNS
kubectl rollout restart deployment coredns -n kube-system
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use proper heading syntax for subheadings instead of emphasis.

Lines 274, 285, and 302 use bold emphasis (**) to format subheadings within the troubleshooting section (e.g., "A. Corefile syntax error"). These should be markdown headings (###) to maintain consistent document structure and comply with markdown standards.

🔎 Proposed fix
 **Common Causes and Solutions**:
 
-**A. Corefile syntax error**
+### A. Corefile syntax error

Apply the same pattern to lines 285 (B. Loop detection) and 302 (C. Resource limits).

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**A. Corefile syntax error**
```bash
# Check logs for syntax errors
kubectl logs -n kube-system <coredns-pod> | grep -i error
# Fix Corefile
kubectl edit configmap coredns -n kube-system
# Restart CoreDNS
kubectl rollout restart deployment coredns -n kube-system
```
**Common Causes and Solutions**:
### A. Corefile syntax error
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

274-274: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

🤖 Prompt for AI Agents
Modules/module2/04-core-dns.md around lines 274 to 284: the subheading "A.
Corefile syntax error" is formatted using bold emphasis instead of a markdown
heading; replace the bold line with a proper markdown subheading (e.g., "### A.
Corefile syntax error") and ensure the same change is applied to the similar
subheadings at lines 285 ("B. Loop detection") and 302 ("C. Resource limits"),
keeping heading level consistent and updating any surrounding spacing so the
headings render correctly.

Comment on lines +335 to +346












Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove excessive trailing blank lines.

The file ends with 11 blank lines (335–346), which should be reduced to at most one trailing newline.

🔎 Proposed fix
 7. **Log monitoring**: Monitor CoreDNS logs for errors and warnings
 
 ---
-
-
-
-
-
-
-
-
-
-
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
7. **Log monitoring**: Monitor CoreDNS logs for errors and warnings
---
🤖 Prompt for AI Agents
In Modules/module2/04-core-dns.md around lines 335 to 346, remove the excessive
trailing blank lines at the end of the file so there is at most a single
trailing newline; edit the file to trim all but one final newline character and
save the file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant