Deployment ai Flashcards
Wat is een Deployment in Kubernetes?
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.
Hoe ziet een eenvoudige Deployment YAML eruit?
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
~~~
Hoe schaal je een Deployment naar 5 replicas met kubectl?
Gebruik het kubectl scale
commando:
```bash
kubectl scale deployment my-deployment –replicas=5
~~~
Wat is een rolling update in Kubernetes?
Een rolling update zorgt ervoor dat de nieuwe versie van de pods geleidelijk wordt uitgerold, zonder downtime, door één pod tegelijk te vernieuwen.
Hoe rol je een Deployment terug naar een vorige versie?
Gebruik het kubectl rollout undo
commando:
```bash
kubectl rollout undo deployment my-deployment
~~~
Waar wordt de pod specificatie gedefinieerd in een Deployment YAML?
De pod specificatie wordt gedefinieerd onder spec.template in de Deployment YAML.
Welke update strategy wordt standaard gebruikt door een Deployment in Kubernetes?
De standaard updateStrategy is RollingUpdate*, waarbij de pods geleidelijk worden geüpdatet.
Wat is een blue/green deployment en hoe kun je het implementeren in Kubernetes?
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.
Hoe geef je omgevingsvariabelen door aan een container in een Deployment?
Gebruik de envsectie in de container-specificatie van een Deployment:
```yaml
env:
- name: MY_ENV_VAR
value: “value”
~~~
Hoe stel je resource requests en limits in voor een container in een Deployment?
Gebruik de resources sectie in de container:
```yaml
resources:
requests:
memory: “500Mi”
cpu: “500m”
limits:
memory: “2Gi”
cpu: “1”
~~~
Wat is het doel van een selector in een Deployment?
De selector bepaalt welke pods onder de Deployment vallen, meestal door een labelSelector te gebruiken om pods te selecteren.
Hoe kun je ervoor zorgen dat een Deployment alleen op nodes met een specifiek label wordt uitgevoerd?
Gebruik nodeSelector in de pod-spec van de Deployment:
```yaml
spec:
template:
spec:
nodeSelector:
disktype: ssd
~~~
Hoe schaal je een Deployment automatisch met behulp van Horizontal Pod Autoscaler (HPA)?
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
~~~
Hoe kun je een affinity instellen voor een pod in een Deployment?
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
~~~
Hoe kun je ervoor zorgen dat een pod in een Deployment alleen op nodes draait die een specifieke taint hebben?
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”
~~~