Wiki workshop · Ελληνικά

Kubernetes Assessment: 01 Fundamentals

Αυτό το Assessment ελέγχει τις βασικές έννοιες του Kubernetes και την ελεγχόμενη ανάπτυξη απλών Workloads.

Παραδείγματα workshop σε ZIP
Πρόοδος μάθησης στη web app

Σημειώστε κεφάλαια ως αναγνωσμένα, δείτε την πρόοδο ανάγνωσης και ολοκληρώστε πρακτικές ενότητες αφού ενεργοποιήσετε την προαιρετική web app. Η πρόοδος του workshop υπολογίζεται από τα κεφάλαια όλων των σελίδων τεκμηρίωσης. Οι επιλογές μένουν σε αυτή τη συσκευή· δεν υπάρχει λογαριασμός ή συγχρονισμός με server. Δεν απαιτείται εγκατάσταση. Η ανάκληση στις Ρυθμίσεις απορρήτου διαγράφει την πρόοδο.

Πρόοδος ανάγνωσης0%
0%
0 / 11 κεφάλαια που διαβάστηκαν
Άλλη γλωσσική έκδοσηΓερμανικά ↗Αγγλικά ↗

Kubernetes Assessment: 01 Fundamentals

Επίπεδο δυσκολίας: Fundamentals

Γλώσσα: Ελληνικά

Μορφή: γραπτό Assessment με μικρό πρακτικό μέρος

Προτεινόμενη διάρκεια: 90 έως 120 λεπτά

Μέγιστη βαθμολογία: 100 μονάδες

Όριο επιτυχίας: 70 μονάδες

Αυτό το Assessment περιλαμβάνει εργασίες, απαιτήσεις υποβολής και κριτήρια βαθμολόγησης. Δεν περιλαμβάνει την πλήρη ενδεικτική λύση.


1. Στόχος του Assessment

Αυτό το Assessment ελέγχει αν μπορείτε να κατανοείτε αξιόπιστα τις βασικές έννοιες του Kubernetes και να εκτελείτε Rollout απλών Workloads με ελεγχόμενο τρόπο. Εστιάζει στη βασική ορολογία, στο μοντέλο Kubernetes Objects, στο kubectl, στα Namespaces, Pods, Deployments, ReplicaSets, Services, Labels, Selectors, ConfigMaps, Secrets, Rollouts και στο αρχικό Troubleshooting.

Μετά το Assessment πρέπει να είναι σαφές ότι μπορείτε να:

  • εξηγείτε τον σκοπό του Kubernetes και την αρχή του Desired State,
  • αναγνωρίζετε σωστά τα βασικά Cluster Components,
  • διαβάζετε και να δημιουργείτε απλά YAML Manifests,
  • αναπτύσσετε Resources σε ξεχωριστό Namespace,
  • συνδέετε Services με Pods μέσω Labels και Selectors,
  • χρησιμοποιείτε Logs, Events και Rollout Status για διάγνωση,
  • διερευνάτε συστηματικά απλά σφάλματα όπως λάθος Image, λάθος Selector και CrashLoopBackOff,
  • τεκμηριώνετε και να καθαρίζετε σωστά τα Lab Resources.
01 / 11

2. Προαπαιτούμενα και επιτρεπόμενοι πόροι

Χρειάζεστε:

  • ένα ασφαλές Kubernetes Lab Cluster, για παράδειγμα kind, minikube, k3d ή ένα παρεχόμενο Lab Environment,
  • kubectl,
  • δικαιώματα εγγραφής στο δικό σας Namespace,
  • ένα Shell και έναν Text Editor.

Επιτρέπονται:

  • η επίσημη τεκμηρίωση του Kubernetes,
  • οι δικές σας σημειώσεις από το workshop,
  • τα kubectl explain, kubectl api-resources, kubectl describe, kubectl logs και kubectl get events.

Δεν επιτρέπονται:

  • Production Cluster Contexts,
  • πραγματικά Credentials, Tokens ή Private Keys,
  • έτοιμες ενδεικτικές λύσεις από προηγούμενα Assessments,
  • αλλαγές εκτός του Namespace του Assessment.

Προτεινόμενο Namespace:

bash
export NS=exam-fundamentals
02 / 11

3. Σενάριο

Μια ομάδα θέλει να λειτουργήσει μια πολύ απλή εσωτερική Web Application στο Kubernetes. Η εφαρμογή πρέπει να αποτελείται από ένα Deployment με δύο Replicas και να είναι προσβάσιμη εσωτερικά μέσω ενός ClusterIP Service. Μέρος του Configuration παρέχεται μέσω ενός ConfigMap και ενός δοκιμαστικού Secret.

Το Cluster είναι Lab Cluster. Στόχος δεν είναι η High Availability επιπέδου Production, αλλά ο σωστός χειρισμός των βασικών εννοιών, τα κατανοητά Manifests και η καθαρή διάγνωση.

03 / 11

4. Αναμενόμενη υποβολή

Υποβάλετε έναν φάκελο ή ένα Archive με τα ακόλουθα αρχεία:

text
01-fundamentals-submission/
  answers.md
  namespace.yml
  deployment.yml
  service.yml
  configmap.yml
  secret.yml
  evidence.md
  cleanup.md

Το answers.md περιέχει τις απαντήσεις στις ερωτήσεις γνώσεων και στην ανάλυση του Manifest.

Το evidence.md περιέχει σχετικά αποτελέσματα ή σύντομες περιλήψεις από kubectl get, describe, logs, Events και Rollout Status.

Το cleanup.md περιγράφει τη διαδικασία Cleanup.

04 / 11

5. Μέρος A: Ερωτήσεις γνώσεων

Απαντήστε με ακρίβεια. Μια καλή απάντηση αναφέρει τον σκοπό, το σχετικό Resource ή Component, μια συνηθισμένη αιτία σφάλματος και τουλάχιστον μία δυνατότητα επαλήθευσης.

  1. Ποιος είναι ο σκοπός του Kubernetes και τι σημαίνει Declarative Desired State;
  2. Ποιος είναι ο ρόλος του API Server;
  3. Γιατί είναι κρίσιμο το etcd για ένα Kubernetes Cluster;
  4. Ποιους ρόλους έχουν ο Scheduler, ο Controller Manager και το kubelet;
  5. Ποια είναι η διαφορά μεταξύ Pod, ReplicaSet και Deployment;
  6. Γιατί τα Pods σπάνια δημιουργούνται απευθείας στην κανονική λειτουργία;
  7. Πώς βρίσκει ένα Service τα Pods του;
  8. Ποια είναι η διαφορά μεταξύ Label και Annotation;
  9. Τι είναι ένα Namespace και ποιο όριο ασφαλείας δεν αντικαθιστά;
  10. Σε τι χρησιμοποιούνται τα ConfigMaps και σε τι τα Secrets;
  11. Γιατί το Base64 στα Kubernetes Secrets δεν αποτελεί Encryption;
  12. Ποιες εντολές χρησιμοποιείτε πρώτες για ImagePullBackOff, CrashLoopBackOff και Service χωρίς Endpoints;
05 / 11

6. Μέρος B: Ανάλυση Manifest

Αναλύστε γραπτώς το ακόλουθο Manifest.

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: exam-fundamentals
  labels:
    app: web
    tier: frontend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
        tier: frontend
    spec:
      containers:
        - name: nginx
          image: nginx:1.27
          ports:
            - containerPort: 80

Απαντήστε:

  1. Ποιο API Group και ποια Version χρησιμοποιούνται;
  2. Ποιο Resource δημιουργείται;
  3. Πού ορίζεται το Desired State;
  4. Ποια Labels λαμβάνει το Deployment και ποια τα Pods;
  5. Ποιος είναι ο ρόλος του spec.selector.matchLabels;
  6. Γιατί πρέπει να ταιριάζουν ο Selector και τα Labels του Pod Template;
  7. Ποιο Resource δημιουργεί έμμεσα το Deployment;
  8. Πώς θα ελέγχατε αν το Rollout ολοκληρώθηκε επιτυχώς;
06 / 11

7. Μέρος C: Πρακτική εργασία

Εργασία C1: Προετοιμασία του Namespace

  1. Ελέγξτε το ενεργό Context.
  2. Δημιουργήστε το Namespace exam-fundamentals.
  3. Ορίστε αυτό το Namespace για το τρέχον Context ή χρησιμοποιείτε με συνέπεια το -n exam-fundamentals.
  4. Τεκμηριώστε το όνομα του Cluster, τον αριθμό Nodes και την Client Version.

Αναμενόμενα Evidence:

bash
kubectl config current-context
kubectl get nodes -o wide
kubectl get namespace exam-fundamentals

Εργασία C2: Rollout του Deployment

Δημιουργήστε το deployment.yml για μια Web Application με τις ακόλουθες απαιτήσεις:

  • Resource: Deployment
  • όνομα: web
  • Namespace: exam-fundamentals
  • Image: nginx:1.27
  • Replicas: 2
  • Labels: app=web, tier=frontend, environment=exam
  • Container Port: 80

Εφαρμόστε το Manifest και ελέγξτε το:

bash
kubectl apply --dry-run=server -f deployment.yml
kubectl apply -f deployment.yml
kubectl rollout status deployment/web -n exam-fundamentals
kubectl get deployment,replicaset,pod -n exam-fundamentals

Εργασία C3: Δημιουργία του Service

Δημιουργήστε το service.yml με τις ακόλουθες απαιτήσεις:

  • Resource: Service
  • όνομα: web
  • τύπος: ClusterIP
  • Selector: app=web
  • Port: 80
  • TargetPort: 80

Ελέγξτε το Service, τα Endpoints και τα EndpointSlices.

bash
kubectl get svc,endpoints,endpointslices -n exam-fundamentals
kubectl describe svc web -n exam-fundamentals

Εργασία C4: Προσάρτηση ConfigMap και Secret

Δημιουργήστε ένα ConfigMap web-config με:

text
APP_MODE=exam
WELCOME_TEXT=Hello from the Fundamentals assessment

Δημιουργήστε ένα Secret web-secret με stringData:

text
DEMO_PASSWORD=not-a-real-secret

Επεκτείνετε το Deployment ώστε:

  • το APP_MODE να είναι διαθέσιμο ως Environment Variable μέσα στο Container,
  • το Secret να προσαρτάται ως αρχείο Read-Only στη διαδρομή /etc/demo-secret.

Σημαντικό: Μη χρησιμοποιείτε πραγματικό Password ή Token.

Εργασία C5: Rollout, Scaling και Rollback

  1. Αυξήστε τα Replicas του Deployment σε τρία.
  2. Αλλάξτε το Image σε nginx:1.26.
  3. Ελέγξτε το Rollout Status και το Rollout History.
  4. Εκτελέστε Rollback.
  5. Τεκμηριώστε ποιο Image είναι ενεργό μετά το Rollback.

Κατάλληλες εντολές:

bash
kubectl scale deployment/web --replicas=3 -n exam-fundamentals
kubectl set image deployment/web nginx=nginx:1.26 -n exam-fundamentals
kubectl rollout status deployment/web -n exam-fundamentals
kubectl rollout history deployment/web -n exam-fundamentals
kubectl rollout undo deployment/web -n exam-fundamentals
07 / 11

8. Μέρος D: Διάγνωση και σύντομη λειτουργική σημείωση

Εργασία D1: Service χωρίς Endpoints

Αλλάξτε σκόπιμα τον Service Selector σε λανθασμένη τιμή, για παράδειγμα:

yaml
selector:
  app: wrong-web

Τεκμηριώστε:

  • το σύμπτωμα,
  • την εντολή διάγνωσης,
  • την αιτία,
  • τη διόρθωση,
  • την επαλήθευση μετά τη διόρθωση.

Εργασία D2: Εξήγηση μοτίβων σφαλμάτων

Εξηγήστε σύντομα τη διάγνωση και την πιθανότερη αιτία για κάθε περίπτωση:

Μοτίβο σφάλματος Αναμενόμενη διάγνωση
ImagePullBackOff Ποια Events ελέγχετε;
CrashLoopBackOff Ποια Logs ελέγχετε;
Service χωρίς Endpoints Ποια Labels, Selector και Endpoints ελέγχετε;
Το Pod παραμένει Pending Ποια Events και ποιες πληροφορίες για Nodes και Resources ελέγχετε;

Εργασία D3: Λειτουργική σημείωση

Δημιουργήστε μια σύντομη λειτουργική σημείωση στο evidence.md που περιλαμβάνει:

  • το Context και το Namespace,
  • τα Manifests που εφαρμόστηκαν,
  • τα Resources που δημιουργήθηκαν,
  • τις σημαντικότερες εντολές επαλήθευσης,
  • το σφάλμα που εντοπίστηκε και τη διόρθωσή του,
  • τη διαδικασία Cleanup.
08 / 11

9. Βαθμολόγηση

Πεδίο Μονάδες Προσδοκία
Ερωτήσεις γνώσεων 24 Σωστή, σύντομη εξήγηση των όρων μέσα στο πλαίσιο Kubernetes
Ανάλυση Manifest 16 Κατανόηση των apiVersion, kind, metadata, spec, Selector και Rollout
Πρακτική εργασία 34 Λειτουργούν τα Namespace, Deployment, Service, ConfigMap, Secret, Scaling και Rollback
Διάγνωση 16 Συστηματική χρήση Logs, Events, Rollout Status, Selector και Endpoints
Τεκμηρίωση και Cleanup 10 Η υποβολή είναι ιχνηλατήσιμη, δεν περιέχει πραγματικά Secrets και τεκμηριώνει το Cleanup
Σύνολο 100

Κλίμακα βαθμολόγησης:

Μονάδες Αποτέλεσμα
90-100 πολύ καλά
80-89 καλά
70-79 επιτυχία
0-69 αποτυχία
09 / 11

10. Κριτήρια άμεσης αποτυχίας

Το Assessment θεωρείται αποτυχημένο ανεξάρτητα από τις μονάδες, αν ισχύει ένα από τα παρακάτω:

  • χρησιμοποιείται ή τροποποιείται Production Context,
  • πραγματικά Credentials, Tokens ή Private Keys καταχωρίζονται στο Version Control ή υποβάλλονται,
  • δημιουργούνται Resources εκτός του Namespace του Assessment χωρίς έγκριση,
  • ο εξεταζόμενος δεν μπορεί να εξηγήσει τα Manifests που υπέβαλε,
  • δεν παρέχεται διαδικασία Cleanup.
10 / 11

11. Λίστα ελέγχου εξεταστή

  • Ο εξεταζόμενος έλεγξε το Context πριν αρχίσει.
  • Όλα τα Manifests χρησιμοποιούν το Namespace exam-fundamentals.
  • Το Deployment έχει δύο ή τρία Replicas, ανάλογα με το στάδιο της εργασίας.
  • Το Service επιλέγει τα σωστά Pods μέσω app=web.
  • Τα ConfigMap και Secret προσαρτώνται ή αναφέρονται σωστά.
  • Το Rollout, η αλλαγή Image και το Rollback επαληθεύτηκαν.
  • Η διάγνωση του εσφαλμένου Service Selector είναι τεχνικά σωστή.
  • Δεν υπάρχουν πραγματικά Secrets.
  • Το Cleanup είναι πλήρες και επαναλήψιμο.
11 / 11

K8S · Orthevs Academy

31 modules ως ενιαία διαδρομή μάθησης.

Η σειρά παραμένει αμετάβλητη: από τη βασική δομή του lab μέσω τεχνικών θεμελίων και λειτουργικών μοντέλων έως το τελικό troubleshooting. Τα τεχνικά ονόματα καταλόγων διατηρούνται σκόπιμα.

Orthevs – Η μηχανική ως βάση για όσα ακολουθούν.

Το Orthevs ως εφαρμογή

Εγκατάσταση του Orthevs

Η web app του Orthevs μπορεί να εγκατασταθεί σε υποστηριζόμενες κινητές συσκευές και browsers υπολογιστή.

iPhone και iPad

Ανοίξτε το Orthevs στο Safari. Πατήστε Κοινή χρήση και μετά Προσθήκη στην οθόνη αφετηρίας. Ενεργοποιήστε το Άνοιγμα ως web app, αν εμφανίζεται, και πατήστε Προσθήκη.

Android

Για τη web app, ανοίξτε το μενού του browser και επιλέξτε Εγκατάσταση εφαρμογής ή Προσθήκη στην αρχική οθόνη. Επιβεβαιώστε την εγκατάσταση.

Browser υπολογιστή

Ανοίξτε το μενού του browser ή το εικονίδιο εγκατάστασης στη γραμμή διευθύνσεων και επιλέξτε Εγκατάσταση εφαρμογής ή Προσθήκη στο Dock.

Η εγκατάσταση της web app εξαρτάται από τον browser. Αν δεν εμφανιστεί διάλογος εγκατάστασης, ακολουθήστε τα βήματα του browser που αναφέρονται παραπάνω.