CKA Examen
CKA Examen
Créez un pod qui affiche ??bonjour le monde?? puis se termine. Faites en sorte que le pod soit supprimé automatiquement lorsque
c'est terminé
Ensuite, utilisez l'outil nslookup pour rechercher les enregistrements DNS du service et du pod et écrivez le
sortie vers /opt/KUNW00601/service.dns et /opt/KUNW00601/pod.dns respectivement.
Contexte -
Vous avez été invité à créer un nouveau ClusterRole pour un pipeline de déploiement et à le lier à un ServiceAccount spécifique à un
espace de noms spécifique.
Tâche -
Créez un nouveau ClusterRole nommé deployment-clusterrole, qui permet uniquement de créer les types de ressources suivants :
✑ Déploiement
✑ Set de Stateful
✑ DaemonSet
Créez un nouveau ServiceAccount nommé cicd-token dans l'espace de noms existant app-team1.
Liez le nouveau ClusterRole deployment-clusterrole au nouveau ServiceAccount cicd-token, limité au namespace app-team1.
Soleil :
Définir le contexte : kubectl config use-context k8s
kubectl créer le clusterrole deployment-clusterrole --verb=create --resource=Déploiement,Set d'états,DaemonSet
kubectl create sa cicd-token -n app-team1
kubectl créer un clusterrolebinding -n app-team1 --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token
déployer-b
################################################################################################
####################################################
Q2 Drain terminé, non disponible
Tâche -
Définissez le nœud nommé ek8s-node-0 comme indisponible et replanifiez tous les pods qui s'exécutent dessus.
kubectl config utiliser-contexte ek8s
################################################################################################
####################################################
Q3 : Mise à niveau terminée de tous les plans de contrôle et nœuds
Tâche -
Étant donné un cluster Kubernetes existant exécutant la version 1.22.1, mettez à jour tous les composants du plan de contrôle et des nœuds de Kubernetes.
sur le nœud master uniquement à la version 1.22.2.
Assurez-vous de vider le nœud principal avant de le mettre à niveau et décordonnez-le après la mise à niveau.
Vous êtes également censé mettre à niveau kubelet et kubectl sur le nœud maître.
Étape 5 :
################################################################################################
####################################################
Étape 2 : Ensuite, allez dans /var/lib/backup/etcd-snapshot.db et vérifiez si le fichier est présent ou non.
Recherchez également etcd-snapshort-previous.db
Étape 3 : arrêter le composant du plan de contrôle :
Sauvegarde Etcd
kubectl config contexte-utilisateur k8s-c3-CCC
vérifiez l'emplacement du fichier et le fichier de base de données en tant que sauvegarde prise
cd /var/lib/etcd
ls -lrt
✑ n'autorise pas l'accès aux Pods qui n'écoutent pas sur le port 9000
✑ n'autorise pas l'accès depuis les Pods qui ne sont pas dans l'espace de noms interne
Réponse :
définir le contexte : kubectl config utiliser le contexte hk8s
versionApi: networking.k8s.io/v1
NetworkPolicy
spec
podSelector: {}
policyTypes
Ingress
entrée
- de :
namespaceSelector
matchLabels
mon-appli mettre à jour le nom
ports
- protocole : TCP
port : 9000
Enregistrer le fichier
###############################################################################################
Q7 : Déploiement de scalee terminé 3
Tâche -
Élever la présentation de déploiement à 3 pods.
###############################################################################################
Q8 : Sélecteur de nœud complété disque : ssd
Tâche -
Planifiez un pod comme suit :
✑ nginx-kusc00401
✑ Image : nginx
✑ Sélecteur de nœud : disque=ssd
Définir le contexte : kubectl config use-context k8s
k run nginx-kusc00401 --image=nginx --dry-run=client -o yaml > 8.yaml
vi 8.yaml
versionApi: v1
Pod
metadata:
labels
exécuter : nginx-kusc00401
nginx-kusc00401
spécification
conteneurs
nginx
nginx-kusc00401
nodeSelector
ssd
kubectl create -f 7.yaml
kubectl obtenir des pods
###############################################################################################
Q9 : De nombreux nœuds complétés
Tâche -
Vérifiez combien de nœuds sont prêts (sans inclure les nœuds teintés NoSchedule) et
écrire le numéro dans /opt/KUSC00402/kusc00402.txt.
versionApi: v1
Pod
labels
exécuter : kucc8
kucc8
spec
conteneurs
nginx
nginx
consul
consul
##############################################################################################
Q11 : Volume persistant complété
Tâche -
Créez un volume persistant nommé app-data, d'une capacité de 2Gi et
mode d'accès ReadOnlyMany.
Le type de volume est hostPath et son emplacement est /srv/app-data.
type: VolumePersistant
versionApi: v1
données-app
spec
capacité
2Go
accessModes
LectureSeulementMultiples
hostPath
/srv/app-data
kubectl obtenir pv
kubeclt créer -f 11.yaml
kubectl get pv # vérifiez la même chose
###############################################################################################
Q12 : Journaux d'erreurs complétés
Tâche -
Surveiller les journaux du pod foo et :
✑ Extraire les lignes de journal correspondant à l'erreur fichier introuvable
✑ Écrivez-les dans /opt/KUTR00101/foo
###############################################################################################
Conteneur sidecar complété
Contexte -
Un Pod existant doit être intégré à l'architecture de journalisation intégrée de Kubernetes (par exemple, kubectl logs).
Ajouter un conteneur sidecar de streaming est une bonne et courante façon d'accomplir cette exigence.
Tâche -
Ajoutez un conteneur sidecar nommé sidecar, en utilisant l'image busybox, au Pod existant big-corp-app.
Le nouveau conteneur de sidecar doit exécuter la commande suivante :
Utilisez un volume, monté à /var/log, pour rendre le fichier journal big-corp-app.log disponible au conteneur sidecar.
Répondre :
définir le contexte : kubectl config utiliser-contexte k8s
spec
volumes
journaux
conteneurs
busybox
sidecar
commande: ["/bin/sh"]
args: ["-c", "tail -n+1 -f /var/log/big-corp-app.log"]
volumeMounts
journaux
/var/log
Tâche -
À partir de l'étiquette de pod nom=overloaded-cpu, trouvez les pods exécutant des charges de travail CPU élevées et
écrire le nom du pod consommant le plus de CPU dans le fichier /opt/KUTR00401/KUTR00401.txt (qui existe déjà).
Répondre :
définir le contexte : kubectl config use-context k8s
kubectl obtenir des pods -A
Tâche -
Un nœud de travail Kubernetes, nommé wk8s-node-0 est dans l'état NotReady.
Investiguer pourquoi c'est le cas et effectuer les étapes appropriées pour ramener le nœud à un état Prêt.
s'assurant que toutes les modifications soient permanentes.
Répondre :
configurer le contexte : kubectl configurer utiliser le contexte wk8s
Enfin, en utilisant kubectl edit ou kubectl patch, augmentez le PersistentVolumeClaim à une capacité de 70Mi et enregistrez ce changement.
Répondre :
configurer le contexte : kubectl configurer utiliser-contexte ok8s
v1
RequêteDeVolumePersistant
volume-pv
spécification
accessModes
ReadWriteOnce
ressources
requests
10Mo
csi-hostpath-sc
enregistrer le fichier 16-pvc.yaml et
Revendication en volume :
v1
Pod
volumeMounts
/usr/share/nginx/html # mettre à jour le chemin
stockage-pv-tâche
volumes
tâche-pv-stockage # mettre à jour le nom
persistentVolumeClaim
volume-pv # mettre à jour le nom
Répondre :
définir le contexte : kubectl config utiliser-contexte k8s
vérifiez le document et recherchez la ressource Nginx Ingress
La ressource Ingress
vi 17.yaml
apiVersion: networking.k8s.io/v1
Ingress
pong
ing-interne
annotations
nginx.ingress.kubernetes.io/rewrite-target: /
spécifications
règles :
- http:
chemins
/bonjour
Préfixe
arrière-plan
service
bonjour
port
5678
enregistrer le fichier et exécuter le fichier
Répondre :
kubectl créer sa pvviewer
kubectl créer un clusterrole pvviewer-role --verb=create --resource=PersistentVolumes
kubectl créer un lien de rôle de cluster pvviewer-role-binding --clusterrole=pvviewer-role --serviceaccount=default:pvviewer
vérifiez-le :
kubectl auth can-i list PersistentVolumes -as system:serviceaccount:default:pvviewer
créer un pod
kubectl run pvviewer --image=redis -n par défaut
versionApi: v1
Pod
translatedText
labels
exécuter : pvviewer
pvviewer
spéc
conteneurs
redis
pvviewer
pvviewer
###############################################################################################
Q19
Créez un nouveau déploiement appelé nginx-deploy, avec l'image nginx:1.16 et 1 réplique.
Enregistrez la version. Ensuite, mettez à niveau le déploiement vers la version 1.17 en utilisant la mise à jour progressive.
Assurez-vous que la mise à niveau de la version soit enregistrée dans l'annotation des ressources.
kubectl créer déploiement nginx-deploy --image=nginx:1.16 --répliques=1 --simulation=client -o yaml > 19.yaml
apiVersion: apps/v1
Déploiement
creationTimestamp: null
étiquettes
nginx-déploy
déploiement-nginx
spécification
replicas: 1
sélecteur
matchLabels
déploiement-nginx
strategy: {}
modèle
métadonnées
creationTimestamp: null
étiquettes
nginx-deploy
spec
conteneurs
nginx:1.16
nginx
resources: {}
status: {}
# Mettez à jour le fichier yaml comme ci-dessous :
apiVersion: apps/v1
Déploiement
étiquettes
déploiement-nginx
déploiement-nginx
spéc
replicas: 1
selector
matchLabels
déploiement-nginx
modèle
labels
nginx-déployer
spec
conteneurs
nginx:1.16
nginx-déployer
ports
- containerPort: 80
plan de contrôle $
###############################################################################################
Q20
Créer un Pod appelé non-root-pod, image : redis:alpine
1000
fsGroup: 2000
apiVersion: v1
Pod
étiquettes
pod-non-root
spécification
securityContext
runAsUser: 1000
fsGroup: 2000
conteneurs
redis:alpine
pod-non-root
###############################################################################################
Q21
Créez une NetworkPolicy qui refuse tout le trafic entrant
apiVersion: networking.k8s.io/v1
PolitiqueRéseau
refuser-par-défaut-tout-entrant
spécification
podSelector: {}
policyTypes
Ingress
refuser-par-défaut-tout-sortie
spec
podSelector: {}
policyTypes
Sortie
Context -
Vous avez été chargé de créer un nouveau ClusterRole pour un pipeline de déploiement et de le lier à un ServiceAccount spécifique limité à un
espace de noms spécifique.
Tâche -
Créez un nouveau ClusterRole nommé deployment-clusterrole, qui ne permet que de créer les types de ressources suivants :
✑ Déploiement
✑ Set Stateful
✑ DaemonSet
Créez un nouveau ServiceAccount nommé cicd-token dans le namespace existant app-team1.
Lier le nouveau ClusterRole deployment-clusterrole au nouveau ServiceAccount cicd-token, limité au namespace app-team1.
T1
Contexte -
Vous avez été invité à créer un nouveau ClusterRole pour un pipeline de déploiement et à l'associer à un ServiceAccount spécifique limité à un domaine spécifique.
espace de noms.
Tâche -
Créez un nouveau ClusterRole nommé deployment-clusterrole, qui permet uniquement de créer les types de ressources suivants :
✑ Déploiement
✑ Ensemble avec état
✑ DémonSet
Créez un nouveau ServiceAccount nommé cicd-token dans le namespace existant app-team1.
Liez le nouveau ClusterRole deployment-clusterrole au nouveau ServiceAccount cicd-token, limité au namespace app-team1.
Solution :
Définir le contexte : kubectl config utiliser-contexte k8s
kubectl créer le clusterrole deployment-clusterrole --verb=create --resource=Deployment,StatefulSet,DaemonSet
kubectl créer sa cicd-token -n app-team1
kubectl créer un clusterrolebinding -n app-team1 --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token deploy-b
#################################################################################################################
T2
Tâche -
Définissez le nœud nommé ek8s-node-0 comme indisponible et reprogrammez tous les pods qui y fonctionnent.
kubectl configuer contexte ek8s
Sauvegarde Etcd
kubectl config user-context k8s-c3-CCC
vérifiez l'emplacement du fichier et le fichier de base de données en tant que sauvegarde prise
cd /var/lib/etcd
ls -lrt
mettez à jour le fichier vi /etc/kub*/mani*/etcd.yaml
mettre à jour le paramètre volumes --> chemin hôte : Chemin : /var/lib/etcd-backup-1
k obtenir des pods -A
k obtenir tout -AC
Cela arrêtera ou suspendra le système pour effectuer la sauvegarde de la base de données et la recréation du cluster.
k obtenir des pods -A
k obtenir les pods -n kube-system --sans-en-têtes | wc -l
#################################################################################################################
Q5
Tâche -
Créez une nouvelle NetworkPolicy nommée allow-port-from-namespace dans le namespace existant fubar.
Assurez-vous que la nouvelle NetworkPolicy permet aux pods dans le namespace interne de se connecter au port 7000 des pods dans le namespace fubar.
Veillez également à ce que la nouvelle politique réseau :
✑ n'autorise pas l'accès aux Pods qui n'écoutent pas sur le port 7000
✑ n'autorise pas l'accès depuis des Pods qui ne sont pas dans l'espace de noms interne
Réponse :
définir le contexte : kubectl config utiliser-contexte hk8s
ports
TCP
port: 7000
Sauvegarder le fichier
versionApi: v1
Pod
métadonnées :
étiquettes
exécuter : nginx-kusc00401
nginx-kusc00401
spéc
conteneurs
nginx
nginx-kusc00401
nodeSelector
ssd
#################################################################################################################
Q7
Tâche -
Vérifiez combien de nœuds sont prêts (sans inclure les nœuds marqués NoSchedule) et
écrivez le nombre dans /opt/KUSC00402/kusc00402.txt.
étiquettes
exécuter : kucc8
kucc8
spéc
conteneurs
nginx
nginx
consul
consul
#################################################################################################################
Q11 :
Tâche -
Créer un volume persistant nommé app-data, d'une capacité de 2Gi et
mode d'accès ReadOnlyMany.
Le type de volume est hostPath et son emplacement est /srv/app-data.
définir le contexte : kubectl config utiliser-contexte hk8s
voir le document de volume persistant et obtenir le fichier yaml et mettre à jour les valeurs ci-dessous
VolumePersistance
versionApi: v1
données-app
spécifications
capacité
2Gi
accessModes
LectureSeuleMultiple
chemin hôte
/srv/app-données
kubectl obtenir pv
kubeclt créer -f 11.yaml
kubectl get pv # vérifier la même chose
#################################################################################################################
Q12
Tâche -
Surveillez les journaux du pod foo et :
✑ Extraire les lignes de journal correspondant à l'erreur fichier introuvable
✑ Écrivez-les dans /opt/KUTR00101/foo
Tâche -
Ajoutez un conteneur sidecar nommé sidecar, en utilisant l'image busybox, au Pod existant big-corp-app.
Le nouveau conteneur de sidecar doit exécuter la commande suivante :
Utilisez un volume, monté à /var/log, pour rendre le fichier journal big-corp-app.log disponible au conteneur sidecar.
Répondre :
définir le contexte : kubectl config utiliser-le-contexte k8s
kubectl obtenir des pods -A
kubectl obtenir les pods Big-corp-app -o yaml > 13.yaml
éditez le vi 13.yaml
ajoutez ce qui suit dedans
spec
volumes
journaux
conteneurs
busybox
sidecar
commande: ["/bin/sh"]
args: ["-c", "tail -n+1 -f /var/log/big-corp-app.log"]
volumeMounts
journaux
/var/log
écrire le nom du pod consommant le plus de CPU dans le fichier /opt/KUTR00401/KUTR00401.txt (qui existe déjà).
Répondre :
définir le contexte : kubectl config use-context k8s
kubectl obtenir pods -A
kubectl top pods
kubectl top pods -l nom=cpu-surcharge --trier-par=cpu
echo "processeur-surchargé-1234" > /opt/KUTR00401/KUTR00401.txt
chat /opt/KUTR00401/KUTR00401.txt
#################################################################################################################
Q15
Tâche -
Un nœud de travail Kubernetes, nommé wk8s-node-0, est en état NotReady.
Enquêtez sur les raisons de cela et effectuez les démarches appropriées pour amener le nœud à un état Prêt.
assurant que tout changement soit permanent.
Répondre :
définir le contexte : kubectl config utiliser le contexte wk8s
kubectl obtenir les nœuds
kubectl décrire nœuds wk8s-node-0
ssh wk8s-noeud-0
sudo -i
systemctl statut kubelet
systemctl redémarrer kubelet
systemctl démarrer kubelet
sortie
kubectl obtenir nœud
#################################################################################################################
Q16
Tâche -
Créer un nouveau PersistentVolumeClaim :
✑ volume-pv
✑ Classe : csi-hostpath-sc
✑ Capacité : 10Mo
Enfin, en utilisant kubectl edit ou kubectl patch, étendez le PersistentVolumeClaim à une capacité de 20Mo et enregistrez ce changement.
Répondre :
définir le contexte : kubectl config utiliser-contexte ok8s
versionApi: v1
PersistentVolumeClaim
pv-volume
spécifications
accessModes
ReadWriteOnce
ressources
requests
10Mi
csi-hostpath-sc
v1
Pod
metadata:
serveur web mettez à jour le nom de la pod
spec
conteneurs
serveur-web # mettre à jour le nom du conteneur
nginx # mettre à jour le nom de l'image
volumeMounts
/usr/share/nginx/html # mettre à jour le chemin
stockage-pv-tâche
volumes
tâche-pv-stockage # mettre à jour le nom
persistentVolumeClaim
volume-pv mettre à jour le nom
Répondre :
définir le contexte : kubectl config utiliser-contexte k8s
vérifiez le document et recherchez la ressource Ingress nginx
La ressource Ingress
vi 12.yaml
apiVersion: networking.k8s.io/v1
Ingress
pong
espace_de_noms: ing-interne
annotatons
nginx.ingress.kubernetes.io/rewrite-target: /
spéc
règles
htp
chemins
/bonjour
Préfixe
backend
service
bonjour
port
number: 5628
Répondre :
kubectl create sa pvviewer
kubectl créer un clusterrole pvviewer-role --verb=create --resource=PersistentVolumes
kubectl créer un lien de rôle de cluster pvviewer-role-binding --clusterrole=pvviewer-role --serviceaccount=default:pvviewer
vérifiez-le :
kubectl auth can-i lister PersistentVolumes --as system:serviceaccount:default:pvviewer
créer un pod
kubectl run pvviewer --image=redis -n par défaut
v1
Pod
labels
exécuter : pvviewer
pvviewer
spéc
conteneurs
redis
pvviewer
pvviewer
#################################################################################################################
Q17
Create a new deployment called nginx-deploy, with image nginx:1.16 and 1 replica.
Enregistrez la version. Ensuite, mettez à niveau le déploiement vers la version 1.12 en utilisant une mise à jour progressive.
Assurez-vous que la mise à niveau de la version est enregistrée dans l'annotation des ressources.
kubectl créer un déploiement nginx-deploy --image=nginx:1.16 --replicas=1 --dry-run=client -o yaml > 17.yaml
versionApi: applications/v1
Déploiement
creatonTimestamp: null
labels
nginx-déployer
nginx-déployer
spécification
replicas: 1
selector
matchLabels
nginx-deploy
strategy: {}
modèle :
creatonTimestamp: null
étiquettes
nginx-déployer
spec
conteneurs
nginx:1.16
nginx
resources: {}
status: {}
# Mettez à jour le fichier yaml comme ci-dessous :
apiVersion: applications/v1
Déploiement
métadonnées
étiquettes
déployer-nginx
déploiement nginx
spec
replicas: 1
selector
matchLabels
nginx-déployer
modèle
étiquettes
nginx-deploy
spéc
conteneurs
nginx:1.16
nginx-déployer
ports
- containerPort: 80
plan de contrôle $
#################################################################################################################
Q20 :
Créer un pod appelé non-root-pod, image : redis:alpine
runAsUser: 1000
fsGroup: 2000
versionApi: v1
Pod
metadata:
labels
pod-non-root
spéc
securityContext
runAsUser: 1000
fsGroup: 2000
conteneurs
redis:alpine
pod-non-root
#################################################################################################################
Q21
Créez une politique de réseau qui refuse tout le trafic entrant
apiVersion: networking.k8s.io/v1
PolitiqueRéseau
refuser-tout-ingress-default
spec
podSelector: {}
policyTypes
Ingress
kubectl appliquer -f 21.yaml
kubectl obtenir des politiques de réseau.networking.k8s.io
versionApi: mise_en_réseau.k8s.io/v1
type: PolitiqueRéseau
métadonnées
refuser-par-defaut-toute-sortie
spécifications
podSelector: {}
policyTypes
Sortie
#################################################################################################################
Site Medium.com 50 questions
labelster:frontend et
sélecteurs aster:frontend.
Créez 3 répliques pour le même.
versionApi: apps/v1
ReplicaSet
rs-1
étiquettes
nginx
frontend
spec
modifiez les réplicas selon votre cas
replicas: 3
sélecteur
matchLabels
frontend
modèle
labels
frontend
spécification
conteneurs
nginx
image: nginx
#################################################################################################################
reate three pods, pod name and their image name is given below:
Nom du Pod
nginx nginx
busybox1 busybox1, dormir 3600
busybox2 busybox2, dormir 1800
Assurez-vous que seul le pod busybox1 puisse communiquer avec le pod nginx sur le port 80.
le pod busybox2 ne devrait pas pouvoir se connecter au pod Nginx.
Répondre :
kubectl run nginx --image:nginx
kubectl run busybox1 --image:busybox1 --sleep 3600
kubectl run busybox2 --image:busybox2 --sleep 1800
kubectl obtenir des pods Cela devrait fonctionner
spéc:
podSelector
matchLabels
exécuter : nginx
policyTypes
– Ingress
entrée
– de :
podSelector
matchLabels
exécuter : busybox1
ports
– protocole : TCP
port: 80
kubectl create -f networkpolicy.yaml
kubectl décrire politique réseau networkpolicy
faire valider
kubectl exec -it busybox1 — telnet 172.168.22.131 80 cela devrait être un succès
kubectl exec -it busybox2 — telnet 172.168.22.131 80 cela devrait échouer
#################################################################################################################
Des pods avec des limites strictes sur le CPU et la mémoire
Créer un pod "cka-pod" utilisant l'image "nginx", avec une limite stricte de 0,5 CPU et 20 Mi de mémoire dans l'espace de noms "cka-exam".
apiVersion: v1
Pod
cka-pod
cka-examen
spécification
conteneurs
cka-pod
nginx
ressources
limites
0,5
20Mo
#################################################################################################################
Les commandes suivantes sont utilisées pour afficher le ReplicaSet
kubectl obtenir rs
Quel est le nombre minimum d'adaptateur(s) réseau par machine virtuelle nécessaire pour former un cluster Kubernetes multinoeud ?
2
Quelle sous-commande de gcloud est utilisée pour définir l'ID du projet ?
config
Lequel est l'outil de conteneurisation parmi les suivants ?
Docker
Quel outil n'est pas installé dans le nœud Worker d'un cluster Kubernetes
Quel service de Google Cloud Platform est utilisé pour créer un cluster Kubernetes ?
Moteur Kubernetes
La commande pour démarrer le tableau de bord depuis minikube
le jeu de réplicas garantit : un nombre spécifique de répliques fonctionne à tout moment
Lequel n'est pas un outil de regroupement de conteneurs ?
ansible
Quelle est la version api valide de POD dans le fichier objet yaml ?
v1
Créer une image personnalisée
Le Dockerfile est utilisé.
Chaque POD obtient une adresse IP
Quel est le nombre minimum de VM nécessaires pour configurer un cluster Kubernetes multinoeuds avec kubeadm ?
3
Par quel outil un cluster Kubernetes à nœud unique peut-il être installé
minikube
Pour garantir une haute disponibilité dans un cluster Kubernetes multi-nœuds, combien de nœuds maîtres sont nécessaires au minimum ?
3
Pour voir les paramètres de configuration détaillés d'un POD
La commande kubectl describe <nomdupod> est utilisée
la commande pour démarrer minikube
minikube démarrer
quelle sous-commande de gcloud est utilisée pour créer un cluster Kubernetes ?
conteneur
Quel outil est utilisé dans aws cli pour créer et gérer un cluster kubernetes dans aws ?
Devrions-nous garder le pare-feu désactivé pour interconnecter toutes les VMs dans un cluster Kubernetes multi-nœuds.
oui
Invalid request. Please provide text for translation.
htps://medium.com/@sensri108/exemples-de-pratique-dumps-tps-pour-l-examen-d-administrateur-kubernetes-certifié-cka-ckad-par-cncf-
4826233ccc22
htps://de.slideshare.net/vinodmeltoe/cka-dumps
********************Pods****************************************
kubectl obtenir des pods
kubectl run nginx --image=nginx --generator=run-pod/v1 --> créer un pod avec le nom nginx
kubectl run redis --image=redis123 --generator=run-pod/v1 --> créer pos
kubectl edit pod podname --> pour éditer les pods
kubectl décrire pod podname-id --> pour obtenir des informations détaillées
kubectl obtenir des pods -o large
kubectl supprimer pod webapp --> supprimer pod
Conteneurs en cours d'exécution 1/2 --> Conteneurs en cours d'exécution dans des pods / Total des conteneurs dans des kubepods
Créez un nouveau pod avec le nom 'redis' et avec l'image 'redis123' --> En utilisant le fichier ###### en attente
*********************************Déploiements*****************
kubectl obtenir déploiement
kubectl obtenir déploiement -o large
kubectl create -f définition-de-déploiement.yaml
---versionApi : apps/v1type : Déploiement
htpd-frontend
spec
replicas: 3
selector
matchLabels
htpd-frontend-pods
modèle
labels
htpd-frontend-pods
spec
conteneurs
conteneur-htpd-frontend
htpd:2.4-alpine
commande :
- sh
-c
- echo Bonjour Kubernetes ! && sleep 3600
********************************Espaces de noms*****************
kubectl obtenir des espaces de noms
kubectl get pods --namespace=spacename --> obtenir des pods dans les espaces de noms
kubectl run redis --image=redis --namespace=finance --generator=run-pos/v1 --> créer un pod dans le namespace
kubectl obtenir des pods --tous les espaces de noms
********************************services*****************
kubectl obtenir le service
Le service par défaut de Kubernetes est clusterIP
kubectl décrire service
kubectl créer -f service-definaton.yaml
Fichiers de définition de service
---
versionApi: v1
type: Service
service-webapp
spec
NodePort
ports
- targetPort: 8080
8080
nodePort: 30080
selector
application-web-simple
*******************************commentaires impératifs*****************
kubectl run nginx-pod --image=nginx:alpine --generator=run-pod/v1 --> créer un pod
kubectl run nginx-pod --image=nginx:alpine --generator=run-pod -lter=db --> création avec étiquette
kubectl expose pod redis --port=6327 --name redis-service --> créer un service pour exposer le port de l'application
kubectl créer un déploiement webapp --image=kodekloud/webapp-color --> créer un déploiement
kubectl scale webapp --replicas=3
kubectl expose deployment webapp --type=NodePort --port=8080 --name=webapp-service --dry-run -o yaml > webapp-service.yaml
*******************************planification et suivi*****************
kubectl obtenir des pods
webapp-vert
Image : kodekloud/webapp-color
Arguments de ligne de commande : --color=vert
apiVersion: v1
Pod
webapp-vert
étiquettes
application-web-verte
spec
conteneurs
application-web-simple
kodekloud/webapp-couleur
command: ["python", "app.py"]
args: ["--color", "pink"]
*****************************Variable d'environnement ****************
ubectl get pod webapp-color -o yaml > webapp-color.yaml
kubectl obtenir des configmaps
kubectl décrire les configmaps db-config
kubectl créer un configmap \
> carte-config-webapp --from-literal=APP_COLOR=bleu-foncé
kubectl obtenir des secrets
kubectl créer un secret générique db-secret --from-literal=DB_HOST=sql01 --from-literal=DB_USER=root --from-
DB_Password=motdepasse123 --< créer un secret
*****************************Pods multiconteneurs**************** le conteneur d'initialisation a besoin de pratiques#######
multcontainer.yaml
versionApi: v1
Pod
métadonnées :
jaune
spec
conteneurs
citron
busybox
or
redismaster
#################################################################################################################
Q1 :
Réponse :
k config obtenir-contexte -o nom
k config obtenir-contexte -o nom > /opt/cours/1/contextes
chat /opt/course/1/contexts
Avec Kubectl
kubectl config current-context # Afficher les contextes actuels
echo "kubectl config current-context" > /opt/course/1/context_default_kubectl.sh
cat /opt/course/1/context_default_kubectl.sh
sh /opt/course/1/context_default_kubectl.sh
Sans Kubectl
vous obtiendrez tout le contexte dans le texte .kube/config
chat /.kube/config | grep -i contexte-actuel
cat /.kube/config | grep -i contexte-actuel | sed 's/contexte-actuel: //'
sh /opt/course/1/context_default_no_kubectl.sh
#################################################################################################################
Q2 :
kubectl config utiliser-contexte k8s-c1-Hello
k run -n default pod1 --image=htpd:2.4.41-alpine --dry-run=client -o yaml
k run -n default pod1 --image=htpd:2.4.41-alpine --dry-run=client -o yaml > 2.yaml
éditez le fichier 2.yaml et mettez à jour le nom du conteneur : pod1-container
programme pod : sous spécification obtenir kubectl obtenir les nœuds en tant que nom de maître
spec
cluster1-maître
k créer -f 2.yaml
versionAPI: v1
Pod
creatonTimestamp: null
labels
exécuter : pod1
pod1
spéc
conteneurs
htpd:2.4.41-alpine
pod1-conteneur changement
resources: {}
ClusterFirst
Toujours
tolérances # ajouter
Pas de programme # ajouter
node-role.kubernetes.io/control-plane # ajouter
# ajouter
cluster1-controlplane1
status: {}
Q3
kubectl config utiliser-contexte k8s-c1-H # définir ce contexte
k obtenir tout -n projet-c13 # pour vérifier les pods
k obtenir des pods -n projet-c13 # pour vérifier les pods
k échelle étatfulset -n projet-c13 o3db --réplicas=1 # Réduire à 1 réplique
k obtenir des pods -n projet-c13 # pour vérifier les pods maintenant un pod devrait fonctionner
k obtenir tout -n projet-c13 # pour vérifier les pods maintenant un pod devrait s'exécuter
#################################################################################################################
Q4
kubectl config utiliser-contexte k8s-c1-H
k run -n default ready-if-service-ready --image=nginx:1.16.1-alpine --dry-run=client -o yaml > 4.yaml
modifier le fichier 4.yaml
# 4_pod1.yaml
versionApi: v1
Pod
metadata:
creatonTimestamp: null
labels
exécuter : prêt-si-service-prêt
prêt-si-service-prêt
spéc
conteneurs
nginx:1.16.1-alpine
prêt-si-service-prêt
resources: {}
livenessProbe # ajouter à partir d'ici
exécuter :
commande
vrai
readinessProbe
exécuter:
commande :
sh
- -c
- 'wget -T2 -O- htp://service-am-i-ready:80' # jusqu'ici
ClusterFirst
Toujours
status: {}
#################################################################################################################
Q5
kubectl config utiliser-contexte k8s-c1-H
k obtenir des pods --tous-noms ou k obtenir des pods -A
k get pods -A --sort-by=metadata.creatonTimestamp
echo "k get pods -A --sort-by=metadata.creatonTimestamp" > /opt/course/5/find_pods.sh
cat /opt/course/5/trouver_des_pods.sh
sh /opt/course/5/find_pods.sh
VolumePersistant
versionApi: v1
safari-pv
spec
capacité
2Gi
accessModes
LireÉcrireUneFois
hostPath
/Volumes/Donnees
k obtenir pv
k create -f 6.yaml
k obtenir pv
**************************************
nom de la réclamation de volume persistant : persistentvolume claim
k obtenir pvc
k créer -f 6-pvc.yaml
PersistentVolumeClaim
v1
safari-pvc
namespace: projet-tger
spec
accessModes
LectureEcritureUneFois
resources
requests
2Gi
spéc
volumes
vol
hostpath
/tmp/données-safari
volumeMounts
vol
/tmp/données-safari
k obtenir déploiements -A
apiVersion: apps/v1
Déploiement
creatonTimestamp: null
étiquettes
safari
safari
projet-tger
spécifications
replicas: 1
selector
matchLabels
safari
strategy: {}
modèle
creatonTimestamp: null
labels
safari
spec
volumes # ajouter
données # ajouter
persistentVolumeClaim # ajouter
safari-pvc # ajouter
conteneurs
hhpd:2.4.41-alpine
conteneur
volumeMounts # ajouter
données ajouter
/tmp/données-safari ajouter
k créer -f 6-dep.yaml
vérifiez les déploiements et décrivez le déploiement
#################################################################################################################
Q2 :
kubectl config utiliser-contexte k8s-c1-H
type de dns
etcd : pod statique
kube-controller-manager Type : pod statique
kube-scheduler Type : pod statique
pod statique
processus
#################################################################################################################
Q7
kubectl config utiliser-contexte k8s-c2-AC
arrêter le planificateur kube :
ssh cluster2-maître1
k obtenir des pods -n kube-system | grep -i kube-scheduler
cd /etc/kub*/manifests
mv kube-scheduler.yaml kube-scheduler_org.yaml
k get pods -n kube-system | grep -i kube-scheduler # le pod doit être terminé
travailleur-cluster1
k -f 7.yaml remplacer --force
k obtenir des pods manual-schedule1 -o large
k créer -f 7.yaml
#################################################################################################################
Q10
Un ClusterRole|Rôle définit un ensemble de permissions et où il est disponible, dans l'ensemble du cluster ou juste dans un seul Namespace.
Un ClusterRoleBinding|RoleBinding connecte un ensemble de permissions avec un compte et définit où il est appliqué, dans tout le cluster ou juste
un seul espace de noms.
À cause de cela, il y a 4 combinaisons RBAC différentes et 3 valides :
Rôle + Liaison de rôle (disponible dans un seul espace de nom, appliqué dans un seul espace de nom)
ClusterRole + ClusterRoleBinding (disponible à l'échelle du cluster, appliqué à l'échelle du cluster)
ClusterRole + RoleBinding (disponible à l'échelle du cluster, appliqué dans un seul Namespace)
Rôle + ClusterRoleBinding (NON POSSIBLE : disponible dans un seul Namespace, appliqué à l'échelle du cluster)
oui
non
non
#################################################################################################################
Q11 :
kubectl config utiliser-contexte k8s-c1-H
# 11.yaml
apiVersion: applications/v1
DémonSets passer de Deployment à Daemonset
creatonTimestamp: null
labels # ajouter
ds-important # ajouter
18426a0b-5f57-4e10-723f-c0e028e82462
ds-important
espace de noms : projet-tger # important
spéc
#replicas: 1 # retirer
sélecteur
matchLabels
ds-important ajouter
18426a0b-5f57-4e10-723f-c0e028e82462
#strategy: {} # enlever
modèle
creatonTimestamp: null
labels
ds-important # ajouter
18426a0b-5f57-4e10-723f-c0e028e82462 # ajouter
spéc
conteneurs
hhpd:2.4-alpine
ds-important
ressources
demandes ajouter
10m # ajouter
10Mi ajouter
tolérances ajouter
Pas de planification ajouter
nœud-rôle.kubernetes.io/plan-de-controle # ajouter
#status: {} # supprimer
k créer -f 11.yaml
vérifiez si toutes les ressources ont été créées ou non
#################################################################################################################
Q12
kubectl config utiliser-contexte k8s-c1-H
k créer un déploiement --namespace projet-tger deploy-important --image=nginx:1.12.6-alpine --réplicas=3 --dry-client=client -o yaml >
Le texte à traduire est manquant.
vi 12.yaml
# 12.yaml
apiVersion : apps/v1
Déploiement
creatonTimestamp: null
étiquettes
très-important # changement
déployer-important
espace de noms : projet-tger # important
spec
replicas: 3 changement
selector
matchLabels
très-important # changement
strategy: {}
modèle
creatonTimestamp: null
étiquettes
très-important changement
spécification
conteneurs
nginx:1.12.6-alpine
conteneur1 # changement
resources: {}
kubernetes/pause # ajouter
container2 ajouter
affinité # ajouter
podAntAffinité # ajouter
# ajouter
labelSelector # ajouter
matchExpressions ajouter
id # ajouter
opérateur : Dans # ajouter
valeurs ajouter
très-important # ajouter
kubernetes.io/nom_d_hôte # ajouter
status: {}
k créer -f 12.yaml
k obtenir le déploiement -n projet-tger # 3 répliques et 2 prêtes et disponibles aussi 2
k obtenir les pods -n projet-tger -o large # 3 pods dont 2 en cours d'exécution et 1 en attente
solution valable
k décrire le déploiement -n projet-tger
--> vérifier le nom
id
#################################################################################################################
Q13
kubectl config utiliser-contexte k8s-c1-H
Créer un pod avec 3 conteneurs + montage de volume par pod + non partagé ou persistant avec un autre pod
aire de jeu à conteneurs multiples
nginx:1.12.6-alpine
VAR_ENV : MON_NOM_DE_NOBE
c2 : busybox:1.31-1
écrire la commande de date de sortie chaque seconde avec le fichier de volume partagé date.log utilisez while true:
c3 : busybox:1.31.1 et envoyer le contenu du fichier date.log depuis le volume partagé vers stdout et utiliser tril-f
vérifiez le journal de c2 pour confirmer la configuration
13.yaml
v1
Pod
creatonTimestamp: null
labels
exécuter : mult-container-playground
terrain de jeu mult-container
spec
conteneurs
nginx:1.12.6-alpine
c1 changement
resources: {}
env : # ajouter
MON_NOM_DE_NŒUD # ajouter
valueFrom # ajouter
fieldRef # ajouter
spec.nodeName ajouter
montagesDeVolume ajouter
vol ajouter
/vol # ajouter
busybox:1.31.1 # ajouter
c2 ajouter
command: ["sh", "-c", "while true; do date >> /vol/date.log; sleep 1; done"] # add
montages de volume ajouter
vol # ajouter
/vol # ajouter
busybox:1.31.1 # ajouter
c3 ajouter
command: ["sh", "-c", "tail -f /vol/date.log"] # ajouter
montagesDeVolume # ajouter
vol # ajouter
/vol # ajouter
ClusterFirst
Toujours
volumes ajouter
vol # ajouter
emptyDir: {} ajouter
status: {}
vérification
k créer -f 13.yaml
k obtenir des pods -n par défaut
ssh cluster1-maître1
k get pods -n kube-system | grep -i kube-api # cela montre le pod statique
cd /etc/kub*/mani/kube-apiserver.yaml
cat /etc/kub*/mani/kube-apiserver.yaml | grep -i plage
touche /opt/course/14/cluster-info
1:1
2:2
3 : 10.76.0.0/12
4 : tisser, /etc/cni/net.d/10-weave-conflist
5 : -cluster1-workeur1
cat /opt/course/14/cluster-info
#################################################################################################################
Q15
kubectl config utiliser-contexte k8s-c2-AC
touch /opt/course/15/cluster_events.sh
echo 'kubectl get events -A sort-by="metadata.creatonTiestamp"' > /opt/course/15/cluster_events.sh
sh /opt/course/15/cluster_events.sh
kubectl get pods -A -o wide | grep kube-proxy --> obtenir le nom du pod
ssh cluster2-travailleur1
crictl ps
copiez le numéro du conteneur ou le nom par rapport au nom du pod
la tâche est de tuer le conteneur
crictl arrêter 653345545(id de conteneur)
crictl rm 653345545(ID_de_conteneur)
crictl ps
kubectl get events -n kube-system --sort-by="metadata.creationTimestamp" --> copier les événements vers /opt/course/15/container_kill.log
#################################################################################################################
Q16
kubectl config utiliser le contexte k8s-c1-H
k obtenir ns
vérifiez avec d'autres ns également juste pour confirmation.
kubectl get roles -A | grep -i project-c14 --no-headers| wc-1
vi /opt/cours/16/espace-namespace-bondé.txt
ajouter
projet-c14 300
enregistrer le fichier et afficher le fichier /opt/course/16/crowded-namespace.txt
#################################################################################################################
Q12
kubectl config utilisateur-contexte k8s-c1-H
k obtenir des pods -n projet-tger -0 large # obtiendra le nom du nœud sur lequel le pod est en cours d'exécution
cluster1-travailleur2
ssh cluster1-worker2
crictl ps | grep -itger-reunite
copier l'identifiant de contenu et écrire dans un fichier txt
vi /opt/course/12/pod-container.txt
5656645656565 io.containerd.runc.v2
creatonTimestamp: null
secret1
espace de noms : secret changement
mettre à jour l'emplacement du fichier yaml secret dans le fichier yaml pour cela vérifier secret1.yaml et mettre à jour namespace = secret
k obtenir des secrets -n secrets
k create -f secret1.yaml # qui est spécifié dans la question
#################################################################################################################
Q20
kubectl config utiliser le contexte k8s-c2-CCC
ssh cluster3-travailleur2
version kubeadmin
1.25.2
kubelet --version
v.1.24.6
********************************************************
ssh Cluster3-master1
kubeadm token créer --imprimer-commande-joindre
copier la sortie et la coller dans le nœud de travail
********************************************************
kubectl obtenir des nœuds
#################################################################################################################
Q21
kubectl config utiliser-contexte k8s-c2-CCC
ssh cluster3-maître1
cd /etc/kub*/mani*
ls -rlt
Allez dans un autre terminal où le contexte est défini
k exécuter mon-pod-statc -n par défaut --image=nginx:1.16-alpine --dry-run=client -o yaml > 21.yaml
vi 21.yaml
/etc/kubernetes/manifests/mon-pod-statique.yaml
versionApi: v1
Pod
creatonTimestamp: null
étiquettes
exécuter : mon-pod-statc
mon-pod-statique
spécification
conteneurs
nginx:1.16-alpine
mon-pod-statique
ressources
requests
10m
20Mi
PremierCluster
Toujours
status: {}
kubeadm certs check-expiration | grep -i apiserver # obtenir la date du certificat en utilisant kubeadm
client kubelet
2. serveur kubelet
ssh cluster2-worker1
service kubelet status # vérifier si le service est en cours d'exécution ou non
cd /etc/systemd/system/kubelet.service
chat 10-kubeadm.conf
cat /etc/kub*/kublet.conf | grep -i cert
vous obtiendrez l'emplacement du certificat client qui est un fichier pem
Problèmes : CN : Kubernets
Utilisation étendue des clés : Authentification de client Web TLS
Émetteur : CN = cluster2-worker-ca@16662622
Utilisation étendue de la clé : Authentification de client Web TLS
#################################################################################################################
Q24
kubectl config utiliser-contexte k8s-c1-H
Créer une politique réseau
définir le contexte :
np-backend
projet-serpent
spécification
sélécteurDePod
matchLabels
serveur
policyTypes
Sortie # la politique concerne uniquement l'Egress
sortie
- # première règle
à: # première condition "à"
podSelector
matchLabels
db1
ports deuxième condition "port"
TCP
1111
- # deuxième règle
à: première condition "à"
podSelector
matchLabels
db2
ports port
TCP
2222
#################################################################################################################
##########
Q25
Sauvegarde Etcd
kubectl config user-context k8s-c3-CCC
vérifiez l'emplacement du fichier et le fichier de base de données en tant que sauvegarde effectuée
cd /var/lib/etcd
ls -lrt
#################################################################################################################