CKA: Create and configure basic Pods
Create a Pod
- To create a pod based on a yaml definition file:
kubectl apply -f https://k8s.io/examples/pods/storage/redis.yaml
[1] - To create a pod in a namespace:
kubectl create namespace MY_TEST_NAMESPACE
kubectl apply -f https://k8s.io/examples/pods/storage/redis.yaml --namespace=MY_TEST_NAMESPACE
[2]- To verify container is running:
kubectl get pod NAME_POD --namespace=MY_TEST_NAMESPACE
Set up a Volume for a Pod
Review different Volume types in https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes.
Create a Pod that runs a single Container. This Pod has a Volume of type emptyDir
(empty directory) (see Volume for volume types) that exists throughout the Pod's life cycle, even when the Container is destroyed and restarted.
Example:
pods/storage/redis.yaml
apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis volumeMounts: - name: redis-storage mountPath: /data/redis volumes: - name: redis-storage emptyDir: {}
Steps
Create Pod
kubectl apply -f https://k8s.io/examples/pods/storage/redis.yaml
pod/redis created
Verify Pod is running
kubectl get pods NAME READY STATUS RESTARTS AGE redis 1/1 Running 0 3m29s
List all Kubernetes resources created
kubectl get all NAME READY STATUS RESTARTS AGE pod/redis 1/1 Running 0 10m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d21h
In another terminal, open an interactive session inside the Container that is running:
kubectl exec -it redis -- /bin/bash
5. Create a file in /data/redis
root@redis:/data# cd /data/redis/ root@redis:/data/redis# echo Hello > test-file
6. List running processes:
root@redis:/data/redis# apt-get update root@redis:/data/redis# apt-get install procps root@redis:/data/redis# ps aux
output:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND redis 1 0.1 0.1 33308 3828 ? Ssl 00:46 0:00 redis-server *:6379 root 12 0.0 0.0 20228 3020 ? Ss 00:47 0:00 /bin/bash root 15 0.0 0.0 17500 2072 ? R+ 00:48 0:00 ps aux
6.In the terminal, kill the Redis process:
root@redis:/data/redis# kill <pid>
where <pid>is the process ID (PID) of Redis.
7.In the original terminal, observe the changes in the Redis Pod. You will eventually see something like the following:
NAME READY STATUS RESTARTS AGE redis 1/1 Running 0 13s redis 0/1 Completed 0 6m redis 1/1 Running 1 6m
At this point, the Container has been destroyed and restarted. This is because the Redis Pod has a restartPolicy (restart policy) of Always(always).
1.Open a terminal in the restarted Container:
kubectl exec -it redis -- /bin/bash
2.In the terminal, go to /data/redisand verify that it test-filestill exists:
root@redis:/data/redis# cd /data/redis/ root@redis:/data/redis# ls test-file
3.Remove the Pod you created for this exercise:
kubectl delete pod redis
Related terms
See also
kubectl
: [cp | config | create
|delete
|edit | explain |
apply
|exec
|get
|set
|drain | uncordon | rolling-update
|rollout
|logs
|run
|auth
|label | annotate
|version
|top
|diff
|debug
|replace
|describe
|port-forward | proxy
|scale
|rollout
|api-resources
| expose deployment | expose | patch | attach | get endpoints | ~/.kube/config | kubectl logs --help | kubectl --help, kubectl-convert, kubectl autoscale, kubectl.kubernetes.io- CKA: v1.28: API, Namespace, Pods, secrets, Services, deployments, nodes, Volumes, Ingress, CKS
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.
Advertising: