Deployment ai Flashcards

1
Q

Wat is een Deployment in Kubernetes?

A

Een Deployment is een Kubernetes-resource die wordt gebruikt om applicaties te beheren door een bepaald aantal replicas van een pod te draaien en automatisch bij te werken wanneer er veranderingen zijn.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hoe ziet een eenvoudige Deployment YAML eruit?

A

Een eenvoudige Deployment YAML bevat apiVersion, kind, metadata, spec.replicas, en een template voor de pod:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hoe schaal je een Deployment naar 5 replicas met kubectl?

A

Gebruik het kubectl scale commando:

```bash
kubectl scale deployment my-deployment –replicas=5
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wat is een rolling update in Kubernetes?

A

Een rolling update zorgt ervoor dat de nieuwe versie van de pods geleidelijk wordt uitgerold, zonder downtime, door één pod tegelijk te vernieuwen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hoe rol je een Deployment terug naar een vorige versie?

A

Gebruik het kubectl rollout undo commando:

```bash
kubectl rollout undo deployment my-deployment
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Waar wordt de pod specificatie gedefinieerd in een Deployment YAML?

A

De pod specificatie wordt gedefinieerd onder spec.template in de Deployment YAML.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welke update strategy wordt standaard gebruikt door een Deployment in Kubernetes?

A

De standaard updateStrategy is RollingUpdate*, waarbij de pods geleidelijk worden geüpdatet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wat is een blue/green deployment en hoe kun je het implementeren in Kubernetes?

A

Een blue/green deployment houdt in dat er twee versies van de applicatie draaien: de blue (oude versie) en de green (nieuwe versie). Kubernetes ondersteunt dit met meerdere Deployments en services die naar de juiste versie wijzen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hoe geef je omgevingsvariabelen door aan een container in een Deployment?

A

Gebruik de envsectie in de container-specificatie van een Deployment:

```yaml
env:
- name: MY_ENV_VAR
value: “value”
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hoe stel je resource requests en limits in voor een container in een Deployment?

A

Gebruik de resources sectie in de container:

```yaml
resources:
requests:
memory: “500Mi”
cpu: “500m”
limits:
memory: “2Gi”
cpu: “1”
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wat is het doel van een selector in een Deployment?

A

De selector bepaalt welke pods onder de Deployment vallen, meestal door een labelSelector te gebruiken om pods te selecteren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hoe kun je ervoor zorgen dat een Deployment alleen op nodes met een specifiek label wordt uitgevoerd?

A

Gebruik nodeSelector in de pod-spec van de Deployment:

```yaml
spec:
template:
spec:
nodeSelector:
disktype: ssd
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hoe schaal je een Deployment automatisch met behulp van Horizontal Pod Autoscaler (HPA)?

A

Maak een HorizontalPodAutoscaler aan die het aantal replicas schaling op basis van CPU-gebruik:

```yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: my-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-deployment
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Hoe kun je een affinity instellen voor een pod in een Deployment?

A

Gebruik affinity in de pod-spec van de Deployment om specifieke nodes te targeten:

```yaml
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hoe kun je ervoor zorgen dat een pod in een Deployment alleen op nodes draait die een specifieke taint hebben?

A

Gebruik tolerations in de pod-spec om te tolereren op een node met een bepaalde taint:

```yaml
tolerations:
- key: “key”
operator: “Equal”
value: “value”
effect: “NoSchedule”
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hoe kun je de maxUnavailable en maxSurge instellen tijdens een rolling update?

A

De maxUnavailable en maxSurge configureren hoeveel pods maximaal onbeschikbaar kunnen zijn of hoeveel pods maximaal extra kunnen worden uitgevoerd tijdens een rolling update:

```yaml
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
~~~

17
Q

Wat is de standaard instelling voor de revision history limit van een Deployment?

A

De standaard revisionHistoryLimit is 10. Dit bepaalt hoeveel oude versies van een Deployment bewaard blijven.

18
Q

Wat is het doel van de label selector in een Deployment?

A

De label selector helpt de Deployment te bepalen welke pods het moet beheren door het gebruik van labels die aan de pods worden toegewezen.

19
Q

Hoe geef je een ConfigMap door aan een container binnen een Deployment?

A

Gebruik de envFrom of volumeMounts sectie om een ConfigMap in een container te laden:

```yaml
envFrom:
- configMapRef:
name: my-configmap
~~~

20
Q

Hoe geef je een Secret door aan een container in een Deployment**?

A

Gebruik de envFrom of volumeMounts sectie om een Secret in een container te laden:

```yaml
envFrom:
- secretRef:
name: my-secret
~~~

21
Q

Wat is het doel van de podManagementPolicy in een StatefulSet (maar niet in een Deployment)?

A

PodManagementPolicy bepaalt of pods in een StatefulSet sequentieel of gelijktijdig worden beheerd. Dit is niet van toepassing op Deployments.

22
Q

Hoe voeg je een init container toe aan een Deployment?

A

Gebruik de initContainers sectie in de spec van de Deployment:

```yaml
initContainers:
- name: init-container
image: busybox
command: [‘sh’, ‘-c’, ‘echo Hello Kubernetes’]
~~~

23
Q

Hoe stel je een liveness probe in voor een container in een Deployment?

A

Stel een livenessProbe in die een HTTP-verzoek naar de container stuurt:

```yaml
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
~~~

24
Q

Hoe configureer je de rolling update strategy voor een Deployment?

A

Specificeer de rollingUpdate strategie in de strategy sectie van de Deployment:

```yaml
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
~~~

25
Q

Wat is het verschil tussen een Deployment en een ReplicaSet?

A

Een Deployment beheert ReplicaSets en biedt geavanceerde functies zoals automatische updates en rollbacks. Een ReplicaSet garandeert simpelweg dat een bepaald aantal pods wordt uitgevoerd.