Basic Commands
kubectl create deployment nginx-depl --image=nginx
deployment.apps/nginx-depl created
kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-depl-5796b5c499-2rhcn 1/1 Running 1 (6d ago) 9d
#
kubectl get replicaset
NAME DESIRED CURRENT READY AGE
nginx-depl-5796b5c499 1 1 1 9d
kubectl delete deployment nginx-depl
deployment.apps "nginx-depl" deleted
kubectl create deployment nginx-depl --image=nginx
deployment.apps/nginx-depl created
- CRUD commands
kubectl create deployment [name]
kubectl edit deployment [name]
kubectl delete deployment [name]
- Status of different K8s components
kubectl get nodes | pod | services | replicaset | deployment
-
Debugging pods
- Logs to console
bash kubectl logs [pod name]
- Get interactive terminal
```bash kubectl exec -it [pod name] -- /bin/bash
kubectl exec -it nginx-depl-85db6bcdc5-c28d8 -- /bin/bash ```
Example
> kubectl create deployment nginx-depl --image=nginx
deployment.apps/nginx-depl created
> kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-depl-85db6bcdc5-c28d8 1/1 Running 0 19s
> kubectl logs nginx-depl-85db6bcdc5-c28d8
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
> kubectl exec -it nginx-depl-85db6bcdc5-c28d8 -- /bin/bash
root@nginx-depl-85db6bcdc5-c28d8:/# who
root@nginx-depl-85db6bcdc5-c28d8:/# whoami
root
> kubectl get replicaset
NAME DESIRED CURRENT READY AGE
nginx-depl-85db6bcdc5 1 1 1 5m51s
> kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-depl 1/1 1 1 6m30s
> kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-depl-85db6bcdc5-c28d8 1/1 Running 1 (4m22s ago) 6m45s
> kubectl delete deployment ngnix-depl
Error from server (NotFound): deployments.apps "ngnix-depl" not found
> kubectl delete deployment ngnix-depl
Error from server (NotFound): deployments.apps "ngnix-depl" not found
> kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-depl 1/1 1 1 25m
> kubectl delete deployment nginx-depl
deployment.apps "nginx-depl" deleted
Layers of Abstraction
-
Deployment manages a
- ReplicaSet
-
ReplicaSet manages a
- Pod
-
Pod is an abstraction of
- Container
4. Editing a deployment
```bash
kubectl edit deployment nginx-depl
If we edit, the existing pod is terminated and a new pod is created as soon as we save.
### Pod Monitoring
1. Describe a pod
```bash
kubectl describe pod [pod name]
kubectl describe pod nginx-depl-6f7f5bff95-5ttr6
- View logs of a pod
kubectl logs [pod name]
kubectl logs nginx-depl-6f7f5bff95-5ttr6
Get Terminal of the Pod
kubectl exec -it nginx-depl-6f7f5bff95-5ttr6 -- /bin/bash
Odyssey > kubectl exec -it nginx-depl-6f7f5bff95-5ttr6 -- /bin/bash root@nginx-depl-6f7f5bff95-5ttr6:/# ls bin dev docker-entrypoint.sh home media opt root sbin sys usr boot docker-entrypoint.d etc lib mnt proc run srv tmp var root@nginx-depl-6f7f5bff95-5ttr6:/#
Get Rid of the Pod
kubectl delete deployment <deployment-name>
Odyssey > kubectl delete deployment nginx-depl
deployment.apps "nginx-depl" deleted
Odyssey > kubectl get pods
No resources found in default namespace.
Apply Configuration File
- Apply a configuration file
kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created
- Check the deployment status
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 1/1 1 1 27s
- Edit the configuration file
vi nginx-deployment.yaml
- Re-apply the configuration file
kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment configured
- Verify the updated deployment status
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 2/2 2 2 56s
You can find the nginx-deployment.yaml
file in the same directory here.