Commencez par créer un espace de noms dans lequel vous pourrez travailler :
kubectl create namespace myspace
kubectl config set-context --current --namespace=myspace
Créer un naked pod :
Observez le cycle de vie du pod :
terminal 2 :
watch kubectl get pods
NAME READY STATUS RESTARTS AGE
quarkus-demo 0/1 ContainerCreating 0 10s
De la création de conteneurs à l’exécution avec Ready 1/1 :
NAME READY STATUS RESTARTS AGE
quarkus-demo 1/1 Running 0 18s
Vérifiez la demande dans le Pod :
kubectl exec -it quarkus-demo /bin/sh
Exécutez la commande suivante. Notez que, comme vous êtes dans l’instance du conteneur, le nom d’hôte est localhost.
curl localhost:8080
Supersonic Subatomic Java with Quarkus quarkus-demo:1
exit
Supprimons le Pod précédent :
kubectl delete pod quarkus-demo
terminal 2
watch kubectl get pods
NAME READY STATUS RESTARTS AGE
quarkus-demo 0/1 Terminating 0 9m35s
No resources found in myspace namespace.
Le pod Naked disparaît à jamais.
Un pod naked est un pod nue et il ne sera pas replanifier en cas d’erreur sur le pod ou de suppression.
Créer un replicaset :
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs-quarkus-demo
spec:
replicas: 3
selector:
matchLabels:
app: quarkus-demo
template:
metadata:
labels:
app: quarkus-demo
env: dev
spec:
containers:
- name: quarkus-demo
image: quay.io/rhdevelopers/quarkus-demo:v1
EOF
Obtenez les pods avec des étiquettes :
terminal 2
watch kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
rs-quarkus-demo-jd6jk 1/1 Running 0 58s app=quarkus-demo,env=dev
rs-quarkus-demo-mlnng 1/1 Running 0 58s app=quarkus-demo,env=dev
rs-quarkus-demo-t26gt 1/1 Running 0 58s app=quarkus-demo,env=dev
Afficher les replicaset créé :
kubectl get rs
NAME DESIRED CURRENT READY AGE
rs-quarkus-demo 3 3 3 79s
Décrire le replicaset
kubectl describe rs rs-quarkus-demo
Les pods sont la “propriété” du ReplicaSet :
kubectl get pod rs-quarkus-demo-mlnng -o json | jq ".metadata.ownerReferences[]"
{
"apiVersion": "apps/v1",
"blockOwnerDeletion": true,
"controller": true,
"kind": "ReplicaSet",
"name": "rs-quarkus-demo",
"uid": "1ed3bb94-dfa5-40ef-8f32-fbc9cf265324"
}
Supprimez maintenant un pod, tout en regardant les pods :
kubectl delete pod rs-quarkus-demo-mlnng
Et une nouvelle pod va naître pour le remplacer :
NAME READY STATUS RESTARTS AGE LABELS
rs-quarkus-demo-2txwk 0/1 ContainerCreating 0 2s app=quarkus-demo,env=dev
rs-quarkus-demo-jd6jk 1/1 Running 0 109s app=quarkus-demo,env=dev
rs-quarkus-demo-t26gt 1/1 Running 0 109s app=quarkus-demo,env=dev
Supprimez le ReplicaSet pour supprimer tous les pods associés :
kubectl delete rs rs-quarkus-demo
Créer un déploiement de 3 replicaset d’un même conteneur.
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: quarkus-demo-deployment
spec:
replicas: 3
selector:
matchLabels:
app: quarkus-demo
template:
metadata:
labels:
app: quarkus-demo
env: dev
spec:
containers:
- name: quarkus-demo
image: quay.io/rhdevelopers/quarkus-demo:v1
imagePullPolicy: Always
ports:
- containerPort: 8080
EOF
kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
quarkus-demo-deployment-5979886fb7-c888m 1/1 Running 0 17s app=quarkus-demo,env=dev,pod-template-hash=5979886fb7
quarkus-demo-deployment-5979886fb7-gdtnz 1/1 Running 0 17s app=quarkus-demo,env=dev,pod-template-hash=5979886fb7
quarkus-demo-deployment-5979886fb7-grf59 1/1 Running 0 17s app=quarkus-demo,env=dev,pod-template-hash=5979886f
Executer une commande shell dans le pods :
kubectl exec -it quarkus-demo-deployment-5979886fb7-c888m -- curl localhost:8080
Supersonic Subatomic Java with Quarkus quarkus-demo-deployment-5979886fb7-c888m:1