docs: add Kubernetes CKS study notes
This commit is contained in:
231
kubernetes/mock exams/exam-1.md
Normal file
231
kubernetes/mock exams/exam-1.md
Normal file
@@ -0,0 +1,231 @@
|
||||
# Task 1
|
||||
|
||||
```bash
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
labels:
|
||||
run: mc-pod
|
||||
name: mc-pod
|
||||
namespace: mc-namespace
|
||||
spec:
|
||||
containers:
|
||||
- image: nginx:1-alpine
|
||||
name: mc-pod-1
|
||||
env:
|
||||
- name: NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
- image: busybox:1
|
||||
name: mc-pod-2
|
||||
command: ["sh", "-c"]
|
||||
args: ["while true; do date >> /var/log/shared/date.log; sleep 1; done"]
|
||||
volumeMounts:
|
||||
- mountPath: /var/log/shared
|
||||
name: shared-log
|
||||
- image: busybox:1
|
||||
name: mc-pod-3
|
||||
command: ["sh", "-c"]
|
||||
args: ["tail -f /var/log/shared/date.log"]
|
||||
volumeMounts:
|
||||
- mountPath: /var/log/shared
|
||||
name: shared-log
|
||||
volumes:
|
||||
- name: shared-log
|
||||
emptyDir:
|
||||
sizeLimit: 500Mi
|
||||
|
||||
|
||||
echo "verticalpodautoscalercheckpoints" >> /root/vpa-crds.txt
|
||||
echo "verticalpodautoscalers" >> /root/vpa-crds.txt
|
||||
|
||||
|
||||
kubectl expose pod messaging --port=6379 --name=messaging-service
|
||||
|
||||
kubectl create deployment hr-web-app --image=kodekloud/webapp-color --replicas=2
|
||||
|
||||
cat webapp-hpa.yaml
|
||||
apiVersion: autoscaling/v2
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: webapp-hpa
|
||||
namespace: default
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: kkapp-deploy
|
||||
minReplicas: 2
|
||||
maxReplicas: 10
|
||||
|
||||
|
||||
|
||||
cat pv.yaml
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
metadata:
|
||||
name: pv-analytics
|
||||
spec:
|
||||
hostPath:
|
||||
path: /pv/data-analytics
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
capacity:
|
||||
storage: 100Mi
|
||||
|
||||
cat orange.yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
creationTimestamp: "2026-07-21T19:20:48Z"
|
||||
generation: 1
|
||||
name: orange
|
||||
namespace: default
|
||||
resourceVersion: "4629"
|
||||
uid: 3a8c1925-7db8-4518-9489-e6ae2e814ac5
|
||||
spec:
|
||||
containers:
|
||||
- command:
|
||||
- sh
|
||||
- -c
|
||||
- echo The app is running! && sleep 3600
|
||||
image: busybox:1.28
|
||||
imagePullPolicy: IfNotPresent
|
||||
name: orange-container
|
||||
resources: {}
|
||||
terminationMessagePath: /dev/termination-log
|
||||
terminationMessagePolicy: File
|
||||
volumeMounts:
|
||||
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
|
||||
name: kube-api-access-jhc2d
|
||||
readOnly: true
|
||||
dnsPolicy: ClusterFirst
|
||||
enableServiceLinks: true
|
||||
initContainers:
|
||||
- command:
|
||||
- sh
|
||||
- -c
|
||||
- sleep 2;
|
||||
image: busybox
|
||||
imagePullPolicy: Always
|
||||
name: init-myservice
|
||||
resources: {}
|
||||
terminationMessagePath: /dev/termination-log
|
||||
terminationMessagePolicy: File
|
||||
volumeMounts:
|
||||
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
|
||||
name: kube-api-access-jhc2d
|
||||
readOnly: true
|
||||
nodeName: controlplane
|
||||
preemptionPolicy: PreemptLowerPriority
|
||||
priority: 0
|
||||
restartPolicy: Always
|
||||
schedulerName: default-scheduler
|
||||
securityContext: {}
|
||||
serviceAccount: default
|
||||
serviceAccountName: default
|
||||
terminationGracePeriodSeconds: 30
|
||||
tolerations:
|
||||
- effect: NoExecute
|
||||
key: node.kubernetes.io/not-ready
|
||||
operator: Exists
|
||||
tolerationSeconds: 300
|
||||
- effect: NoExecute
|
||||
key: node.kubernetes.io/unreachable
|
||||
operator: Exists
|
||||
tolerationSeconds: 300
|
||||
volumes:
|
||||
- name: kube-api-access-jhc2d
|
||||
projected:
|
||||
defaultMode: 420
|
||||
sources:
|
||||
- serviceAccountToken:
|
||||
expirationSeconds: 3607
|
||||
path: token
|
||||
- configMap:
|
||||
items:
|
||||
- key: ca.crt
|
||||
path: ca.crt
|
||||
name: kube-root-ca.crt
|
||||
- downwardAPI:
|
||||
items:
|
||||
- fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: metadata.namespace
|
||||
path: namespace
|
||||
|
||||
kubectl expose deployment hr-web-app --port=8080 --type=NodePort --name=hr-web-app-service
|
||||
|
||||
-----------
|
||||
|
||||
cat /root/webapp-hpa.yaml
|
||||
apiVersion: autoscaling/v2
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: webapp-hpa
|
||||
spec:
|
||||
maxReplicas: 10
|
||||
metrics:
|
||||
- resource:
|
||||
name: cpu
|
||||
target:
|
||||
averageUtilization: 50
|
||||
type: Utilization
|
||||
type: Resource
|
||||
minReplicas: 1
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: kkapp-deploy
|
||||
status:
|
||||
currentMetrics: null
|
||||
desiredReplicas: 0
|
||||
|
||||
----------------------------
|
||||
|
||||
# vpa
|
||||
# ----------------
|
||||
|
||||
apiVersion: autoscaling.k8s.io/v1
|
||||
kind: VerticalPodAutoscaler
|
||||
metadata:
|
||||
name: analytics-vpa
|
||||
namespace: default
|
||||
spec:
|
||||
targetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: analytics-deployment
|
||||
updatePolicy:
|
||||
updateMode: "Recreate"
|
||||
resourcePolicy:
|
||||
containerPolicies:
|
||||
- containerName: "*"
|
||||
controlledResources: ["cpu", "memory"]
|
||||
|
||||
# -----------------
|
||||
# gateway
|
||||
# -------
|
||||
|
||||
apiVersion: gateway.networking.k8s.io/v1
|
||||
kind: Gateway
|
||||
metadata:
|
||||
name: web-gateway
|
||||
namespace: nginx-gateway
|
||||
spec:
|
||||
gatewayClassName: nginx
|
||||
listeners:
|
||||
- name: http
|
||||
protocol: HTTP
|
||||
port: 80
|
||||
allowedRoutes:
|
||||
namespaces:
|
||||
from: Same
|
||||
|
||||
# --------
|
||||
helm upgrade -n kk-ns kk-mock1 kk-mock1/podinfo --version 6.11.2
|
||||
|
||||
# --------
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user