Difference between revisions of "Create and configure a basic Pod"

From wikieduonline
Jump to navigation Jump to search
Tag: Redirect target changed
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
== Create a Pod ==
+
#redirect [[Create and configure basic Pods]]
* To create a [[Pod]] based on a <code>[[yaml]]</code> definition file:  <code>[[kubectl apply]] -f https://k8s.io/examples/pods/storage/redis.yaml</code><ref>https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/</ref>
 
* To create a pod in a [[namespace]]:
 
:<code>[[kubectl create]] [[namespace]] MY_TEST_NAMESPACE</code>
 
:<code>[[kubectl]] apply -f https://k8s.io/examples/pods/storage/redis.yaml --namespace=MY_TEST_NAMESPACE</code><ref>https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/</ref>
 
* To verify container is running:
 
:<code>[[kubectl get pod]] NAME_POD --namespace=MY_TEST_NAMESPACE</code>
 
 
 
==Set up a [[Volume]] for a [[Pod]]==
 
The file system of a [[DevOps/Container|Container]] exists as long as the Container exists. Therefore, when a Container is destroyed or restarted, changes made to the file system are lost. For more consistent storage that is independent of the Container life cycle, you can use a Volume, review different Volume types in https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes.
 
 
 
This feature is especially important for applications that must maintain a status, such as key-value storage engines (for example Redis) and databases.
 
 
 
Create a Pod that runs a single Container. This Pod has a Volume of type <code>emptyDir</code> (empty directory) (see [[DevOps/Kubernetes/Volumes|Volume]] for volume types) that exists throughout the Pod's life cycle, even when the Container is destroyed and restarted. Here is the Pod configuration file:
 
 
 
<code>pods/storage/redis.yaml</code>
 
 
 
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: {}</pre>
 
 
 
 
 
'''1.Create the Pod'''
 
<code>kubectl apply -f https://k8s.io/examples/pods/storage/redis.yaml</code>
 
pod/redis created
 
 
 
'''2. Verify the Pod Container is running'''
 
<code>kubectl get pod redis --watch</code>
 
<pre>NAME      READY    STATUS    RESTARTS  AGE
 
redis    1/1      Running  0          13s</pre>
 
 
 
'''3.In another terminal, open an interactive session inside the Container that is running:'''
 
<code>kubectl exec -it redis -- /bin/bash</code>
 
 
 
'''4.In the terminal, go to <code>/data/redis</code> and create a file:'''
 
<pre>root@redis:/data# cd /data/redis/
 
root@redis:/data/redis# echo Hello > test-file</pre>
 
 
 
'''5.In the terminal, list the running processes:'''
 
<pre>root@redis:/data/redis# apt-get update
 
root@redis:/data/redis# apt-get install procps
 
root@redis:/data/redis# ps aux</pre>
 
 
 
output:
 
<pre>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</pre>
 
 
 
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:
 
 
 
<code>[[kubectl exec]] -it redis -- /bin/bash</code>
 
 
 
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:
 
* <code>[[kubectl delete]] pod redis</code>
 
 
 
== See also ==
 
* {{Pod}}
 
* {{CKA}}
 
* {{K8s}}
 
 
 
[[Category:Kubernetes]]
 
 
 
{{CC license}}
 
Source: wikiversity
 

Latest revision as of 16:23, 17 July 2021

Advertising: