From 64e6614680e8f4a32c4e269c97121e19d708245b Mon Sep 17 00:00:00 2001 From: abregman Date: Sun, 16 Oct 2022 18:19:39 +0300 Subject: [PATCH] Add a couple of Kubernetes questions and exercises Also updated CKA page. --- topics/kubernetes/CKA.md | 143 ++++++++++ topics/kubernetes/README.md | 255 ++++++++++++------ .../labels_and_selectors/exercise.md | 11 + .../labels_and_selectors/solution.md | 13 + .../exercises/taints_101/exercise.md | 17 ++ topics/kubernetes/images/service_exercise.png | Bin 0 -> 27380 bytes topics/kubernetes/images/service_solution.png | Bin 0 -> 25341 bytes 7 files changed, 358 insertions(+), 81 deletions(-) create mode 100644 topics/kubernetes/exercises/labels_and_selectors/exercise.md create mode 100644 topics/kubernetes/exercises/labels_and_selectors/solution.md create mode 100644 topics/kubernetes/exercises/taints_101/exercise.md create mode 100644 topics/kubernetes/images/service_exercise.png create mode 100644 topics/kubernetes/images/service_solution.png diff --git a/topics/kubernetes/CKA.md b/topics/kubernetes/CKA.md index 935fe57..ca24bd7 100644 --- a/topics/kubernetes/CKA.md +++ b/topics/kubernetes/CKA.md @@ -11,6 +11,9 @@ - [Troubleshooting ReplicaSets](#troubleshooting-replicasets) - [Deployments](#deployments) - [Troubleshooting Deployments](#troubleshooting-deployments) + - [Scheduler](#scheduler) + - [Labels and Selectors](#labels-and-selectors) + - [Taints](#taints) ## Setup @@ -136,6 +139,14 @@ You can also run `k describe po POD_NAME` `k delete po nm` +
+List all the pods with the label "env=prod"
+ +`k get po -l env=prod` + +To count them: `k get po -l env=prod --no-headers | wc -l` +
+ ### Troubleshooting Pods
@@ -180,6 +191,12 @@ Because there is no such image `sheris`. At least for now :) To fix it, run `kubectl edit ohno` and modify the following line `- image: sheris` to `- image: redis` or any other image you prefer.
+
+You try to run a Pod but it's in "Pending" state. What might be the reason?
+ +One possible reason is that the scheduler which supposed to schedule Pods on nodes, is not running. To verify it, you can run `kubectl get po -A | grep scheduler` or check directly in `kube-system` namespace. +
+ ## Namespaces
@@ -194,6 +211,32 @@ To fix it, run `kubectl edit ohno` and modify the following line `- image: sheri `k create ns alle`
+
+Check how many namespaces are there
+ +`k get ns --no-headers | wc -l` +
+ +
+Check how many pods exist in the "dev" namespace
+ +`k get po -n dev` +
+ +
+Create a pod called "kartos" in the namespace dev. The pod should be using the "redis" image.
+ +If the namespace doesn't exist already: `k create ns dev` + +`k run kratos --image=redis -n dev` +
+ +
+You are looking for a Pod called "atreus". How to check in which namespace it runs?
+ +`k get po -A | grep atreus` +
+ ## Nodes
@@ -212,10 +255,57 @@ Note: create an alias (`alias k=kubectl`) and get used to `k get no` ## Services +
+Check how many services are running in the current namespace
+ +`k get svc` +
+
Create an internal service called "sevi" to expose the app 'web' on port 1991
+
+How to reference by name a service called "app-service" within the same namespace?
+ +app-service +
+ +
+How to check the TargetPort of a service?
+ +`k describe svc ` +
+ +
+How to check what endpoints the svc has?
+ +`k describe svc ` +
+ +
+How to reference by name a service called "app-service" within a different namespace, called "dev"?
+ +app-service.dev.svc.cluster.local +
+ +
+Assume you have a deployment running and you need to create a Service for exposing the pods. This is what is required/known: + +* Deployment name: jabulik +* Target port: 8080 +* Service type: NodePort +* Selector: jabulik-app +* Port: 8080 +
+ +`kubectl expose deployment jabulik --name=jabulik-service --target-port=8080 --type=NodePort --port=8080 --dry-run=client -o yaml -> svc.yaml` + +`vi svc.yaml` (make sure selector is set to `jabulik-app`) + +`k apply -f svc.yaml` +
+ ## ReplicaSets
@@ -427,3 +517,56 @@ status: {} The selector doesn't match the label (dep vs depdep). To solve it, fix depdep so it's dep instead.
+ +## Scheduler + +
+How to schedule a pod on a node called "node1"?
+ +`k run some-pod --image=redix -o yaml --dry-run=client > pod.yaml` + +`vi pod.yaml` and add: + +``` +spec: + nodeName: node1 +``` + +`k apply -f pod.yaml` + +Note: if you don't have a node1 in your cluster the Pod will be stuck on "Pending" state. +
+ +## Labels and Selectors + +
+How to list all the Pods with the label "app=web"?
+ +`k get po -l app=web` +
+ +
+How to list all objects labeled as "env=staging"?
+ +`k get all -l env=staging` +
+ +
+How to list all deployments from "env=prod" and "type=web"?
+ +`k get deploy -l env=prod,type=web` +
+ +## Taints + +
+Check if there are taints on node "master"
+ +`k describe no master | grep -i taints` +
+ +
+Create a taint on one of the nodes in your cluster with key of "app" and value of "web" and effect of "NoSchedule"
+ +`k taint node minikube app=web:NoSchedule` +
\ No newline at end of file diff --git a/topics/kubernetes/README.md b/topics/kubernetes/README.md index 87a1ec4..963fae4 100644 --- a/topics/kubernetes/README.md +++ b/topics/kubernetes/README.md @@ -15,10 +15,14 @@ What's your goal? - [Pods](#pods) - [Service](#service) - [ReplicaSet](#replicaset) + - [Labels and Selectors](#labels-and-selectors) + - [Scheduler](#scheduler) - [Kubernetes Questions](#kubernetes-questions) - [Kubernetes 101](#kubernetes-101) - [Cluster and Architecture](#cluster-and-architecture) - [Pods](#pods-1) + - [Pods - Commands](#pods---commands) + - [Pods - Troubleshooting and Debugging](#pods---troubleshooting-and-debugging) - [Deployments](#deployments) - [Services](#services) - [Ingress](#ingress) @@ -43,6 +47,8 @@ What's your goal? - [Troubleshooting Scenarios](#troubleshooting-scenarios) - [Istio](#istio) - [Controllers](#controllers) + - [Scheduler](#scheduler-1) + - [Taints](#taints) - [Scenarios](#scenarios) ## Kubernetes Exercises @@ -68,6 +74,18 @@ What's your goal? | Operating ReplicaSets | ReplicaSet | [Exercise](replicaset_02.md) | [Solution](solutions/replicaset_02_solution.md) | ReplicaSets Selectors | ReplicaSet | [Exercise](replicaset_03.md) | [Solution](solutions/replicaset_03_solution.md) +### Labels and Selectors + +|Name|Topic|Objective & Instructions|Solution|Comments| +|--------|--------|------|----|----| +| Labels and Selectors 101 | Labels, Selectors | [Exercise](exercises/labels_and_selectors/exercise.md) | [Solution](exercises/labels_and_selectors/solution.md) + +### Scheduler + +|Name|Topic|Objective & Instructions|Solution|Comments| +|--------|--------|------|----|----| +| Taints 101 | Taints | [Exercise](exercises/taints_101/exercise.md) | [Solution](exercises/taints_101/solution.md) + ## Kubernetes Questions ### Kubernetes 101 @@ -259,9 +277,9 @@ Apply requests and limits, especially on third party applications (where the unc
-True of False? The scheduler is responsible for both deciding where a Pod will run and actually run it
+What kubectl get componentstatus does?
-False. While the scheduler is responsible for choosing the node on which the Pod will run, Kubelet is the one that actually runs the Pod. +Outputs the status of each of the control plane components.
### Pods @@ -330,40 +348,16 @@ False. By default, pods are non-isolated = pods accept traffic from any source. False. "Pending" is after the Pod was accepted by the cluster, but the container can't run for different reasons like images not yet downloaded. -
-How to list the pods in the current namespace?
- -`kubectl get po` -
- -
-How view all the pods running in all the namespaces?
- -`kubectl get pods --all-namespaces` -
-
True or False? A single Pod can be split across multiple nodes
False. A single Pod can run on a single node.
-
-How to delete a pod?
- -`kubectl delete pod pod_name` -
-
You run a pod and you see the status ContainerCreating
-
-How to find out on which node a certain pod is running?
- -`kubectl get po -o wide` -
-
What are "Static Pods"?
@@ -513,12 +507,48 @@ False. Each Pod gets an IP address but an internal one and not publicly accessib To make a Pod externally accessible, we need to use an object called Service in Kubernetes.
+#### Pods - Commands +
-How to check to which worker node the pods were scheduled to?
+How to check to which worker node the pods were scheduled to? In other words, how to check on which node a certain Pod is running?
`kubectl get pods -o wide`
+
+How to delete a pod?
+ +`kubectl delete pod pod_name` +
+ +
+List all the pods with the label "env=prod"
+ +`k get po -l env=prod` + +To count them: `k get po -l env=prod --no-headers | wc -l` +
+ +
+How to list the pods in the current namespace?
+ +`kubectl get po` +
+ +
+How view all the pods running in all the namespaces?
+ +`kubectl get pods --all-namespaces` +
+ +#### Pods - Troubleshooting and Debugging + +
+You try to run a Pod but it's in "Pending" state. What might be the reason?
+ +One possible reason is that the scheduler which supposed to schedule Pods on nodes, is not running. To verify it, you can run `kubectl get po -A | grep scheduler` or check directly in `kube-system` namespace. +
+ ### Deployments
@@ -700,6 +730,16 @@ The selector doesn't match the label (dep vs depdep). To solve it, fix depdep so In simpler words, it allows you to add an internal or external connectivity to a certain application running in a container.
+
+Place the components in the right placeholders in regards to Kubernetes service
+ +

+ + + +
+ +
How to create a service for an existing deployment called "alle" on port 8080 so the Pod(s) accessible via a Load Balancer?
@@ -708,12 +748,6 @@ The imperative way: `kubectl expose deployment alle --type=LoadBalancer --port 8080`
-
-An internal load balancer in Kubernetes is called ____ and an external load balancer is called ____
- -An internal load balancer in Kubernetes is called Service and an external load balancer is Ingress -
-
True or False? The lifecycle of Pods and Services isn't connected so when a Pod dies, the Service still stays
@@ -726,6 +760,12 @@ True `kubectl get svc`
+
+What's the default Service type?
+ +ClusterIP - used for internal communication. +
+
What Service types are there?
@@ -926,6 +966,12 @@ Explanation as to who added them: You can run `curl :` to examine the output.
+
+An internal load balancer in Kubernetes is called ____ and an external load balancer is called ____
+ +An internal load balancer in Kubernetes is called Service and an external load balancer is Ingress +
+ ### Ingress
@@ -1435,7 +1481,6 @@ When chosen as the data store etcd was (and still is of course): Namespaces allow you split your cluster into virtual clusters where you can group your applications in a way that makes sense and is completely separated from the other groups (so you can for example create an app with the same name in two different namespaces)
-
Why to use namespaces? What is the problem with using one default namespace?
@@ -1471,20 +1516,58 @@ False. When a namespace is deleted, the resources in that namespace are deleted
How to list all namespaces?
-`kubectl get namespaces` +`kubectl get namespaces` OR `kubectl get ns` + +
+ +
+Create a namespace called 'alle'
+ +`k create ns alle` + +
+ +
+Check how many namespaces are there
+ +`k get ns --no-headers | wc -l` + +
+ +
+Check how many pods exist in the "dev" namespace
+ +`k get po -n dev` + +
+ +
+Create a pod called "kartos" in the namespace dev. The pod should be using the "redis" image.
+ +If the namespace doesn't exist already: `k create ns dev` + +`k run kratos --image=redis -n dev` + +
+ +
+You are looking for a Pod called "atreus". How to check in which namespace it runs?
+ +`k get po -A | grep atreus` +
What kube-public contains?
* A configmap, which contains cluster information -* Publicely accessible data +* Publicly accessible data
How to get the name of the current namespace?
-kubectl config view | grep namespace +`kubectl config view | grep namespace`
@@ -1493,27 +1576,6 @@ kubectl config view | grep namespace It holds information on hearbeats of nodes. Each node gets an object which holds information about its availability.
-
-How to create a namespace?
- -One way is by running `kubectl create namespace [NAMESPACE_NAME]` - -Another way is by using namespace configuration file: -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: some-cofngimap - namespace: some-namespace -``` -
- -
-What default namespace contains?
- -Any resource you create while using Kubernetes. -
-
True or False? With namespaces you can limit the resources consumed by the users/teams
@@ -1545,13 +1607,7 @@ kubectl create quota some-quota --hard-cpu=2,pods=2
Which resources are accessible from different namespaces?
-Service. -
- -
-Let's say you have three namespaces: x, y and z. In x namespace you have a ConfigMap referencing service in z namespace. Can you reference the ConfigMap in x namespace from y namespace?
- -No, you would have to create separate namespace in y namespace. +Services.
@@ -1653,22 +1709,6 @@ kubectl delete pods --field-selector=status.phase!='Running' kubectl top pod
-
-What kubectl get componentstatus does?
- -Outputs the status of each of the control plane components. -
- -
-What is Minikube?
- -Minikube is a lightweight Kubernetes implementation. It create a local virtual machine and deploys a simple (single node) cluster. -
- -
-How do you monitor your Kubernetes?
-
-
You suspect one of the pods is having issues, what do you do?
@@ -2410,6 +2450,53 @@ Explained [here](https://www.youtube.com/watch?v=i9V4oCa5f9I) - Act - Bring current cluster state to the desired state (basically reach a state where there is no diff)
+### Scheduler + +
+True of False? The scheduler is responsible for both deciding where a Pod will run and actually running it
+ +False. While the scheduler is responsible for choosing the node on which the Pod will run, Kubelet is the one that actually runs the Pod. +
+ +
+How to schedule a pod on a node called "node1"?
+ +`k run some-pod --image=redix -o yaml --dry-run=client > pod.yaml` + +`vi pod.yaml` and add: + +``` +spec: + nodeName: node1 +``` + +`k apply -f pod.yaml` + +Note: if you don't have a node1 in your cluster the Pod will be stuck on "Pending" state. +
+ +## Taints + +
+Check if there are taints on node "master"
+ +`k describe no master | grep -i taints` +
+ +
+Create a taint on one of the nodes in your cluster with key of "app" and value of "web" and effect of "NoSchedule"
+ +`k taint node minikube app=web:NoSchedule` +
+ +
+What taint effects are there? Explain each one of them
+ +`NoSchedule`: prevents from resources to be scheduled on a certain node +`PreferNoSchedule`: will prefer to shcedule resources on other nodes before resorting to scheduling the resource on the chosen node (on which the taint was applied) +`NoExecute`: Appling "NoSchedule" will not evict already running Pods (or other resources) from the node as opposed to "NoExecute" which will evict any already running resource from the Node +
+ ### Scenarios
@@ -2434,4 +2521,10 @@ Some ways to debug: 2. Run `kubectl logs mypod` 1. This should provide an accurate output of 2. For specific container, you can add `-c CONTAINER_NAME` +
+ +
+An engineer form your organization asked whether there is a way to prevent from Pods (with cretain label) to be scheduled on one of the nodes in the cluster. Your reply is:
+ +Yes, using taints, we could run the following command and it will prevent from all resources with label "app=web" to be scheduled on node1: `kubectl taint node node1 app=web:NoSchedule`
\ No newline at end of file diff --git a/topics/kubernetes/exercises/labels_and_selectors/exercise.md b/topics/kubernetes/exercises/labels_and_selectors/exercise.md new file mode 100644 index 0000000..d8600c2 --- /dev/null +++ b/topics/kubernetes/exercises/labels_and_selectors/exercise.md @@ -0,0 +1,11 @@ +# Labels and Selectors 101 + +## Objectives + +1. How to list all the Pods with the label "app=web"? +2. How to list all objects labeled as "env=staging"? +3. How to list all deployments from "env=prod" and "type=web"? + +## Solution + +Click [here](solution.md) to view the solution. \ No newline at end of file diff --git a/topics/kubernetes/exercises/labels_and_selectors/solution.md b/topics/kubernetes/exercises/labels_and_selectors/solution.md new file mode 100644 index 0000000..def344e --- /dev/null +++ b/topics/kubernetes/exercises/labels_and_selectors/solution.md @@ -0,0 +1,13 @@ +# Labels and Selectors 101 + +## Objectives + +1. How to list all the Pods with the label "app=web"? +2. How to list all objects labeled as "env=staging"? +3. How to list all deployments from "env=prod" and "type=web"? + +## Solution + +`k get po -l app=web` +`k get all -l env=staging` +`k get deploy -l env=prod,type=web` \ No newline at end of file diff --git a/topics/kubernetes/exercises/taints_101/exercise.md b/topics/kubernetes/exercises/taints_101/exercise.md new file mode 100644 index 0000000..2830398 --- /dev/null +++ b/topics/kubernetes/exercises/taints_101/exercise.md @@ -0,0 +1,17 @@ +# Taints 101 + +## Objectives + +1. Check if one of the nodes in the cluster has taints (doesn't matter which node) +2. Create a taint on one of the nodes in your cluster with key of "app" and value of "web" and effect of "NoSchedule" + 1. Explain what it does exactly + 2. Verify it was applied + +## Solution + +Click [here](solution.md) to view the solution. + +1. `kubectl describe no minikube | grep -i taints` +2. `kubectl taint node minikube app=web:NoSchedule` + 1. Any resource with "app=web" key value will not be scheduled on node `minikube` + 2. `kubectl describe no minikube | grep -i taints` \ No newline at end of file diff --git a/topics/kubernetes/images/service_exercise.png b/topics/kubernetes/images/service_exercise.png new file mode 100644 index 0000000000000000000000000000000000000000..b924eb6930f3644cdabb2bdd224f16cdc92a34dd GIT binary patch literal 27380 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 A(f|Me literal 0 HcmV?d00001 diff --git a/topics/kubernetes/images/service_solution.png b/topics/kubernetes/images/service_solution.png new file mode 100644 index 0000000000000000000000000000000000000000..5e01c4c57edc56132f8f3780eeb8ac2fd712a938 GIT binary patch literal 25341 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