{"id":6293,"date":"2021-07-26T04:22:44","date_gmt":"2021-07-26T04:22:44","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=6293"},"modified":"2023-09-20T02:18:10","modified_gmt":"2023-09-20T02:18:10","slug":"working-with-kubernetes-cluster-using-kubectl-part-8-pods","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/working-with-kubernetes-cluster-using-kubectl-part-8-pods\/","title":{"rendered":"What is Kubernetes Pods? Working with Pods"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>Kubernetes run PODS<\/li>\n\n\n\n<li>Atomic Unit of Work Scheduling is POD in kubernetes<\/li>\n\n\n\n<li>Pod get instansciated from Kubelet<\/li>\n\n\n\n<li>Pod contains one or more container e.g docker<\/li>\n\n\n\n<li>Pod get assignment of IP from kube proxy<\/li>\n\n\n\n<li>Worker may have one or multiple pods<\/li>\n\n\n\n<li>Pods is Scheduled to kubelet by Schedular<\/li>\n\n\n\n<li>Pods are EMPHERAL. Same POD can not be run. Similar pods you may get<\/li>\n\n\n\n<li>PODS is running state as long as &#8220;All Container&#8221; is running\/succeded.<\/li>\n\n\n\n<li>Pods has state from PEDNING -&gt; RUNNING -&gt; succeded\/failed -&gt; Terminated<\/li>\n\n\n\n<li>Pod name must be unique in Namespace<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Birth Events of PODS<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1044\" height=\"1233\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/09\/1695096106053.gif\" alt=\"\" class=\"wp-image-39973\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Example of POD?<\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: nodehelloworld.example.com\n  labels:\n    app: helloworld\nspec:\n  containers:\n  - name: devopsschool1\n    image: scmgalaxy\/nginx-devopsschoolv1\n    ports:\n    - name: nginx-port\n      containerPort: 80<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Commads for working with POD?<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   <span class=\"hljs-number\">54<\/span>  vi pod.yaml\n   <span class=\"hljs-number\">55<\/span>  ls\n   <span class=\"hljs-number\">56<\/span>  kubectl <span class=\"hljs-keyword\">get<\/span> ns\n   57  kubectl create ns rajesh\n   58  clear\n   59  ls\n   60  kubectl <span class=\"hljs-keyword\">get<\/span> ns\n   61  clear\n   62  kubectl <span class=\"hljs-keyword\">get<\/span> pods\n   63  kubectl <span class=\"hljs-keyword\">get<\/span> pods -n=rajesh\n   64  kubectl <span class=\"hljs-keyword\">get<\/span> pods -n=dev\n   65  clear\n   66  ls\n   67  kubectl create -f pod.yaml\n   68  kubectl <span class=\"hljs-keyword\">get<\/span> pods\n   69  clear\n   70  kubectl <span class=\"hljs-keyword\">get<\/span> pods\n   71  kubectl create -f pod.yaml\n   72  kubectl create -f pod.yaml -n=rajesh\n   73  kubectl <span class=\"hljs-keyword\">get<\/span> pods -n=rajesh\n   74  kubectl <span class=\"hljs-keyword\">get<\/span> pods\n   75  kubectl <span class=\"hljs-keyword\">get<\/span> pods -n=rajesh,dev\n   76  kubectl <span class=\"hljs-keyword\">get<\/span> pods --all-namespaces\n   77  clear\n   78  kubectl <span class=\"hljs-keyword\">get<\/span> pods -o wide\n   79  ping 10.44.0.1\n   80  clear\n   81  ls\n   82  clear\n   83  kubectl <span class=\"hljs-keyword\">get<\/span> pods\n   84  kubectl edit pod nodehelloworld.example.com\n   85  kubectl <span class=\"hljs-keyword\">get<\/span> pods --show-labels\n   86  kubectl -h\n   87  kubectl <span class=\"hljs-keyword\">get<\/span> -h\n   88  clear\n   89  kubectl <span class=\"hljs-keyword\">get<\/span> pods -h\n   90  clear\n   91  ls\n   92  vi pod.yaml\n   93  kubectl apply -f pod.yaml\n   94  kubectl <span class=\"hljs-keyword\">get<\/span> pods --show-labels\n   95  clear\n   96  ls\n   97  kubectl <span class=\"hljs-keyword\">get<\/span> pods\n   98  kubectl delete pod nodehelloworld.example.com\n   99  kubectl delete pod nodehelloworld.example.com -n=rajesh\n  100  kubectl <span class=\"hljs-keyword\">get<\/span> pods --all-namespaces\n  101  history<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>pod.yaml<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: hello-world-pod\nspec:\n  containers:\n  - name: hello-world\n    image: gcr.io\/google-samples\/hello-app:1.0\n    ports:\n    - containerPort: 80\n\n\n<\/code><\/span><\/pre>\n\n\n<p><strong>deployment.yaml<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: hello-world\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: hello-world\n  template:\n    metadata:\n      labels:\n        app: hello-world\n    spec:\n      containers:\n      - name: hello-world\n        image: gcr.io\/google-samples\/hello-app:1.0\n        ports:\n        - containerPort: 8080<\/code><\/span><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">\n<span class=\"hljs-comment\">#Start up kubectl get events --watch and background it.<\/span>\nkubectl get events --watch &amp;\n\n<span class=\"hljs-comment\">#Create a pod...we can see the scheduling, container pulling and container starting.<\/span>\nkubectl apply -f pod.yaml\n\n<span class=\"hljs-comment\">#Start a Deployment with 1 replica. We see the deployment created, scaling the replica set and the replica set starting the first pod<\/span>\nkubectl apply -f deployment.yaml\n\n<span class=\"hljs-comment\">#Scale a Deployment to 2 replicas. We see the scaling the replica set and the replica set starting the second pod<\/span>\nkubectl scale deployment hello-world --replicas=<span class=\"hljs-number\">2<\/span>\n\n<span class=\"hljs-comment\">#We start off with the replica set scaling to 1, then  Pod deletion, then the Pod killing the container <\/span>\nkubectl scale deployment hello-world --replicas=<span class=\"hljs-number\">1<\/span>\n\nkubectl get pods\n\n<span class=\"hljs-comment\">#Let's use exec a command inside our container, we can see the GET and POST api requests through the API server to reach the post.<\/span>\nkubectl -v <span class=\"hljs-number\">6<\/span> exec -it PASTE_POD_NAME_HERE -- \/bin\/sh\nps\n<span class=\"hljs-keyword\">exit<\/span>\n\n<span class=\"hljs-comment\">#Let's look at the running container\/pod from the process level on a Node.<\/span>\nkubectl get pods -o wide\nssh aen@c1-node1\nps -aux | grep hello-app\n<span class=\"hljs-keyword\">exit<\/span>\n\n<span class=\"hljs-comment\">#Now, let's access our Pod's application directly, without a service and also off the Pod network.<\/span>\nkubectl port-forward PASTE_POD_NAME_HERE <span class=\"hljs-number\">80<\/span>:<span class=\"hljs-number\">8080<\/span>\n\n<span class=\"hljs-comment\">#Let's do it again, but this time with a non-priviledged port<\/span>\nkubectl port-forward PASTE_POD_NAME_HERE <span class=\"hljs-number\">8080<\/span>:<span class=\"hljs-number\">8080<\/span> &amp;\n\n<span class=\"hljs-comment\">#We can point curl to localhost, and kubectl port-forward will send the traffic through the API server to the Pod<\/span>\ncurl http:<span class=\"hljs-comment\">\/\/localhost:8080<\/span>\n\n<span class=\"hljs-comment\">#Kill our port forward session.<\/span>\nfg\nctrl+c\n\nkubectl delete deployment hello-world\nkubectl delete pods hello-world-pod\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">How to use &amp; troubleshoot Kubernetes pods?<\/h2>\n\n\n\n<h1 class=\"wp-block-heading\">Troubleshooting and Debugging Commands:<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>explain Documentation of resources<\/li>\n\n\n\n<li>describe Show details of a specific resource or group of resources<\/li>\n\n\n\n<li>logs Print the logs for a container in a pod<\/li>\n\n\n\n<li>attach Attach to a running container<\/li>\n\n\n\n<li>exec Execute a command in a container<\/li>\n\n\n\n<li>port-forward Forward one or more local ports to a pod<\/li>\n\n\n\n<li>cp Copy files and directories to and from containers.<\/li>\n\n\n\n<li>auth Inspect authorization<\/li>\n\n\n\n<li>run Run a particular image on the cluster<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">explain Documentation of resources<\/h1>\n\n\n\n<p>&#8212;<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">  $ kubectl explain -h\n  106  kubectl explain pod\n  107  kubectl explain pod.spec\n  108  clear\n  109  kubectl explain pod.spec.containers\n  110  clear\n  111  kubectl explain ns\n  112  kubectl explain ns.spec\n  113  clear\n  114  history<\/code><\/span><\/pre>\n\n\n<h1 class=\"wp-block-heading\">describe Show details of a specific resource or group of resources<\/h1>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Examples:\n  <span class=\"hljs-number\">122<\/span>  kubectl get pods\n  <span class=\"hljs-number\">123<\/span>  kubectl describe pod nodehelloworld.example.com\n  <span class=\"hljs-number\">124<\/span>  clear\n  <span class=\"hljs-number\">125<\/span>  kubectl get ns\n  <span class=\"hljs-number\">126<\/span>  kubectl describe ns dev\n  <span class=\"hljs-number\">127<\/span>  kubectl describe -h\n\n\n  <span class=\"hljs-comment\"># Describe a node<\/span>\n  kubectl describe nodes kubernetes-node-emt8.c.myproject.internal\n\n  <span class=\"hljs-comment\"># Describe a pod<\/span>\n  kubectl describe pods\/nginx\n\n  <span class=\"hljs-comment\"># Describe a pod identified by type and name in \"pod.json\"<\/span>\n  kubectl describe -f pod.json\n\n  <span class=\"hljs-comment\"># Describe all pods<\/span>\n  kubectl describe pods\n\n  <span class=\"hljs-comment\"># Describe pods by label name=myLabel<\/span>\n  kubectl describe po -l name=myLabel\n\n  <span class=\"hljs-comment\"># Describe all pods managed by the 'frontend' replication controller (rc-created pods<\/span>\n  <span class=\"hljs-comment\"># get the name of the rc as a prefix in the pod the name).<\/span>\n  kubectl describe pods frontend<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h1 class=\"wp-block-heading\">logs Print the logs for a container in a pod<\/h1>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">  <span class=\"hljs-number\">138<\/span>  curl http:<span class=\"hljs-comment\">\/\/10.44.0.1<\/span>\n  <span class=\"hljs-number\">139<\/span>  kubectl logs nodehelloworld.example.com\n  <span class=\"hljs-number\">140<\/span>  kubectl logs nodehelloworld.example.com\n  <span class=\"hljs-number\">141<\/span>  kubectl get nodes\n  <span class=\"hljs-number\">142<\/span>  clear\n  <span class=\"hljs-number\">143<\/span>  kubectl logs nodehelloworld.example.com\n  <span class=\"hljs-number\">144<\/span>  kubectl logs -h\n\n\nExamples:\n  <span class=\"hljs-comment\"># Return snapshot logs from pod nginx with only one container<\/span>\n  kubectl logs nginx\n\n  <span class=\"hljs-comment\"># Return snapshot logs from pod nginx with multi containers<\/span>\n  kubectl logs nginx --all-containers=<span class=\"hljs-keyword\">true<\/span>\n\n  <span class=\"hljs-comment\"># Return snapshot logs from all containers in pods defined by label app=nginx<\/span>\n  kubectl logs -lapp=nginx --all-containers=<span class=\"hljs-keyword\">true<\/span>\n\n  <span class=\"hljs-comment\"># Return snapshot of previous terminated ruby container logs from pod web-1<\/span>\n  kubectl logs -p -c ruby web<span class=\"hljs-number\">-1<\/span>\n\n  <span class=\"hljs-comment\"># Begin streaming the logs of the ruby container in pod web-1<\/span>\n  kubectl logs -f -c ruby web<span class=\"hljs-number\">-1<\/span>\n\n  <span class=\"hljs-comment\"># Begin streaming the logs from all containers in pods defined by label app=nginx<\/span>\n  kubectl logs -f -lapp=nginx --all-containers=<span class=\"hljs-keyword\">true<\/span>\n\n  <span class=\"hljs-comment\"># Display only the most recent 20 lines of output in pod nginx<\/span>\n  kubectl logs --tail=<span class=\"hljs-number\">20<\/span> nginx\n\n  <span class=\"hljs-comment\"># Show all logs from pod nginx written in the last hour<\/span>\n  kubectl logs --since=<span class=\"hljs-number\">1<\/span>h nginx\n\n  <span class=\"hljs-comment\"># Show logs from a kubelet with an expired serving certificate<\/span>\n  kubectl logs --insecure-skip-tls-verify-backend nginx\n\n  <span class=\"hljs-comment\"># Return snapshot logs from first container of a job named hello<\/span>\n  kubectl logs job\/hello\n\n  <span class=\"hljs-comment\"># Return snapshot logs from container nginx-1 of a deployment named nginx<\/span>\n  kubectl logs deployment\/nginx -c nginx<span class=\"hljs-number\">-1<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h1 class=\"wp-block-heading\">attach Attach to a running container<\/h1>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">  <span class=\"hljs-number\">153<\/span>  kubectl get pods\n  <span class=\"hljs-number\">154<\/span>  kubectl attach nodehelloworld.example.com\n  <span class=\"hljs-number\">155<\/span>  clear\n  <span class=\"hljs-number\">156<\/span>  kubectl attach -h\n\n  <span class=\"hljs-number\">37<\/span>  curl http:<span class=\"hljs-comment\">\/\/10.44.0.1<\/span>\n  <span class=\"hljs-number\">38<\/span>  watch curl http:<span class=\"hljs-comment\">\/\/10.44.0.1<\/span>\n\n  <span class=\"hljs-comment\"># Get output from running pod mypod, use the kubectl.kubernetes.io\/default-container annotation<\/span>\n  <span class=\"hljs-comment\"># for selecting the container to be attached or the first container in the pod will be chosen<\/span>\n  kubectl attach mypod\n\n  <span class=\"hljs-comment\"># Get output from ruby-container from pod mypod<\/span>\n  kubectl attach mypod -c ruby-container\n\n  <span class=\"hljs-comment\"># Switch to raw terminal mode, sends stdin to 'bash' in ruby-container from pod mypod<\/span>\n  <span class=\"hljs-comment\"># and sends stdout\/stderr from 'bash' back to the client<\/span>\n  kubectl attach mypod -c ruby-container -i -t\n\n  <span class=\"hljs-comment\"># Get output from the first pod of a ReplicaSet named nginx<\/span>\n  kubectl attach rs\/nginx<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h1 class=\"wp-block-heading\">exec Execute a command in a container<\/h1>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">  <span class=\"hljs-number\">160<\/span>  kubectl get pods\n  <span class=\"hljs-number\">161<\/span>  kubectl exec nodehelloworld.example.com ls\n  <span class=\"hljs-number\">162<\/span>  clear\n  <span class=\"hljs-number\">163<\/span>  kubectl exec nodehelloworld.example.com df -kh\n  <span class=\"hljs-number\">164<\/span>  kubectl exec nodehelloworld.example.com <span class=\"hljs-string\">'df -kh'<\/span>\n  <span class=\"hljs-number\">165<\/span>  kubectl exec nodehelloworld.example.com <span class=\"hljs-string\">'df -h'<\/span>\n  <span class=\"hljs-number\">166<\/span>  kubectl exec nodehelloworld.example.com <span class=\"hljs-string\">'df'<\/span>\n  <span class=\"hljs-number\">167<\/span>  kubectl exec nodehelloworld.example.com du -sh\n  <span class=\"hljs-number\">168<\/span>  clear\n  <span class=\"hljs-number\">169<\/span>  kubectl exec nodehelloworld.example.com du\n  <span class=\"hljs-number\">170<\/span>  clearks\n  <span class=\"hljs-number\">171<\/span>  ckear\n  <span class=\"hljs-number\">172<\/span>  clear\n  <span class=\"hljs-number\">173<\/span>  kubectl exec -it nodehelloworld.example.com \/bin\/bash\n  <span class=\"hljs-number\">174<\/span>  kubectl exec -h\n\n\n  <span class=\"hljs-comment\"># Get output from running 'date' command from pod mypod, using the first container by default<\/span>\n  kubectl exec mypod -- date\n\n  <span class=\"hljs-comment\"># Get output from running 'date' command in ruby-container from pod mypod<\/span>\n  kubectl exec mypod -c ruby-container -- date\n\n  <span class=\"hljs-comment\"># Switch to raw terminal mode, sends stdin to 'bash' in ruby-container from pod mypod<\/span>\n  <span class=\"hljs-comment\"># and sends stdout\/stderr from 'bash' back to the client<\/span>\n  kubectl exec mypod -c ruby-container -i -t -- bash -il\n\n  <span class=\"hljs-comment\"># List contents of \/usr from the first container of pod mypod and sort by modification time.<\/span>\n  <span class=\"hljs-comment\"># If the command you want to execute in the pod has any flags in common (e.g. -i),<\/span>\n  <span class=\"hljs-comment\"># you must use two dashes (--) to separate your command's flags\/arguments.<\/span>\n  <span class=\"hljs-comment\"># Also note, do not surround your command and its flags\/arguments with quotes<\/span>\n  <span class=\"hljs-comment\"># unless that is how you would execute it normally (i.e., do ls -t \/usr, not \"ls -t \/usr\").<\/span>\n  kubectl exec mypod -i -t -- ls -t \/usr<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h1 class=\"wp-block-heading\">port-forward Forward one or more local ports to a pod<\/h1>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">  <span class=\"hljs-comment\"># Listen on ports 5000 and 6000 locally, forwarding data to\/from ports 5000 and 6000 in the pod<\/span>\n  kubectl port-forward pod\/mypod <span class=\"hljs-number\">5000<\/span> <span class=\"hljs-number\">6000<\/span>\n\n  <span class=\"hljs-comment\"># Listen on ports 5000 and 6000 locally, forwarding data to\/from ports 5000 and 6000 in a pod selected by the<\/span>\ndeployment\n  kubectl port-forward deployment\/mydeployment <span class=\"hljs-number\">5000<\/span> <span class=\"hljs-number\">6000<\/span>\n\n  <span class=\"hljs-comment\"># Listen on port 8888 locally, forwarding to 5000 in the pod<\/span>\n  kubectl port-forward pod\/mypod <span class=\"hljs-number\">8888<\/span>:<span class=\"hljs-number\">5000<\/span>\n\n  <span class=\"hljs-comment\"># Listen on port 8888 on all addresses, forwarding to 5000 in the pod<\/span>\n  kubectl port-forward --address <span class=\"hljs-number\">0.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.0<\/span> pod\/mypod <span class=\"hljs-number\">8888<\/span>:<span class=\"hljs-number\">5000<\/span>\n\n  <span class=\"hljs-comment\"># Listen on port 8888 on localhost and selected IP, forwarding to 5000 in the pod<\/span>\n  kubectl port-forward --address localhost,<span class=\"hljs-number\">10.19<\/span><span class=\"hljs-number\">.21<\/span><span class=\"hljs-number\">.23<\/span> pod\/mypod <span class=\"hljs-number\">8888<\/span>:<span class=\"hljs-number\">5000<\/span>\n\n  <span class=\"hljs-number\">192<\/span>  kubectl get pods -o wide\n  <span class=\"hljs-number\">193<\/span>  ping <span class=\"hljs-number\">10.44<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span>\n  <span class=\"hljs-number\">194<\/span>  clear\n  <span class=\"hljs-number\">195<\/span>  ls\n  <span class=\"hljs-number\">197<\/span>  kubectl port-forward -h\n  <span class=\"hljs-number\">199<\/span>  kubectl get pods -o wide\n  <span class=\"hljs-number\">200<\/span>  kubectl port-forward --address <span class=\"hljs-number\">0.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.0<\/span> pod\/nodehelloworld.example.com <span class=\"hljs-number\">8888<\/span>:<span class=\"hljs-number\">80<\/span>\n  <span class=\"hljs-number\">202<\/span>  ifconfig\n  <span class=\"hljs-number\">203<\/span>  clear\n  <span class=\"hljs-number\">204<\/span>  kubectl port-forward --address <span class=\"hljs-number\">0.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.0<\/span> pod\/nodehelloworld.example.com <span class=\"hljs-number\">8888<\/span>:<span class=\"hljs-number\">80<\/span>\n  <span class=\"hljs-number\">205<\/span>  kubectl port-forward -h<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h1 class=\"wp-block-heading\">cp Copy files and directories to and from containers.<\/h1>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">  212  kubectl get pods\n  213  kubectl exec nodehelloworld.example.com ls \/tmp\n  214  ls\n  215  kubectl cp pod.yaml nodehelloworld.example.com:\/tmp\n  216  kubectl exec nodehelloworld.example.com ls \/tmp\n  218  kubectl cp nodehelloworld.example.com:\/tmp\/pod.yaml .\/pod1.yaml\n  219  ls\n  220  kubectl cp -h\n\n  # !!!Important Note!!!\n  # Requires that the 'tar' binary is present in your container\n  # image.  If 'tar' is not present, 'kubectl cp' will fail.\n  #\n  # For advanced use cases, such as symlinks, wildcard expansion or\n  # file mode preservation consider using 'kubectl exec'.\n\n  # Copy \/tmp\/foo local file to \/tmp\/bar in a remote pod in namespace <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-namespace<\/span>&gt;<\/span>\n  tar cf - \/tmp\/foo | kubectl exec -i -n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-namespace<\/span>&gt;<\/span> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-pod<\/span>&gt;<\/span> -- tar xf - -C \/tmp\/bar\n\n  # Copy \/tmp\/foo from a remote pod to \/tmp\/bar locally\n  kubectl exec -n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-namespace<\/span>&gt;<\/span> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-pod<\/span>&gt;<\/span> -- tar cf - \/tmp\/foo | tar xf - -C \/tmp\/bar\n\n  # Copy \/tmp\/foo_dir local directory to \/tmp\/bar_dir in a remote pod in the default namespace\n  kubectl cp \/tmp\/foo_dir <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-pod<\/span>&gt;<\/span>:\/tmp\/bar_dir\n\n  # Copy \/tmp\/foo local file to \/tmp\/bar in a remote pod in a specific container\n  kubectl cp \/tmp\/foo <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-pod<\/span>&gt;<\/span>:\/tmp\/bar -c <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">specific-container<\/span>&gt;<\/span>\n\n  # Copy \/tmp\/foo local file to \/tmp\/bar in a remote pod in namespace <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-namespace<\/span>&gt;<\/span>\n  kubectl cp \/tmp\/foo <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-namespace<\/span>&gt;<\/span>\/<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-pod<\/span>&gt;<\/span>:\/tmp\/bar\n\n  # Copy \/tmp\/foo from a remote pod to \/tmp\/bar locally\n  kubectl cp <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-namespace<\/span>&gt;<\/span>\/<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">some-pod<\/span>&gt;<\/span>:\/tmp\/foo \/tmp\/bar<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h1 class=\"wp-block-heading\">auth Inspect authorization<\/h1>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">  224  kubectl auth\n  225  kubectl auth can-i create pod\n  226  kubectl auth can-i create namespace\n  227  kubectl auth can-i delete namespace\n  228  kubectl auth can-i -h\n\n\n  # Check to see if I can create pods in any namespace\n  kubectl auth can-i create pods --all-namespaces\n\n  # Check to see if I can list deployments in my current namespace\n  kubectl auth can-i list deployments.apps\n\n  # Check to see if I can do everything in my current namespace (\"*\" means all)\n  kubectl auth can-i '*' '*'\n\n  # Check to see if I can get the job named \"bar\" in namespace \"foo\"\n  kubectl auth can-i list jobs.batch\/bar -n foo\n\n  # Check to see if I can read pod logs\n  kubectl auth can-i get pods --subresource=log\n\n  # Check to see if I can access the URL \/logs\/\n  kubectl auth can-i get \/logs\/\n\n  # List all allowed actions in namespace \"foo\"\n  kubectl auth can-i --list --namespace=foo<\/code><\/span><\/pre>\n\n\n<h1 class=\"wp-block-heading\">run Run a particular image on the cluster<\/h1>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">POD     |   RUNNING  |  Succedd    | Failed\n        Container   Container       Container\n        is running  Successfully        Failed\n                completed\n  <span class=\"hljs-comment\"># Start a nginx pod.<\/span>\n  kubectl run nginx --image=nginx\n\n  <span class=\"hljs-comment\"># Start a hazelcast pod and let the container expose port 5701.<\/span>\n  kubectl run hazelcast --image=hazelcast\/hazelcast --port=<span class=\"hljs-number\">5701<\/span>\n\n  <span class=\"hljs-comment\"># Start a hazelcast pod and set environment variables \"DNS_DOMAIN=cluster\" and \"POD_NAMESPACE=default\" in the<\/span>\ncontainer.\n  kubectl run hazelcast --image=hazelcast\/hazelcast --env=<span class=\"hljs-string\">\"DNS_DOMAIN=cluster\"<\/span> --env=<span class=\"hljs-string\">\"POD_NAMESPACE=default\"<\/span>\n\n  <span class=\"hljs-comment\"># Start a hazelcast pod and set labels \"app=hazelcast\" and \"env=prod\" in the container.<\/span>\n  kubectl run hazelcast --image=hazelcast\/hazelcast --labels=<span class=\"hljs-string\">\"app=hazelcast,env=prod\"<\/span>\n\n  <span class=\"hljs-comment\"># Dry run. Print the corresponding API objects without creating them.<\/span>\n  kubectl run nginx --image=nginx --dry-run=client\n\n  <span class=\"hljs-comment\"># Start a nginx pod, but overload the spec with a partial set of values parsed from JSON.<\/span>\n  kubectl run nginx --image=nginx --overrides=<span class=\"hljs-string\">'{ \"apiVersion\": \"v1\", \"spec\": { ... } }'<\/span>\n\n  <span class=\"hljs-comment\"># Start a busybox pod and keep it in the foreground, don't restart it if it exits.<\/span>\n  kubectl run -i -t busybox --image=busybox --restart=Never\n\n  <span class=\"hljs-comment\"># Start the nginx pod using the default command, but use custom arguments (arg1 .. argN) for that command.<\/span>\n  kubectl run nginx --image=nginx -- &lt;arg1&gt; &lt;arg2&gt; ... &lt;argN&gt;\n\n  <span class=\"hljs-comment\"># Start the nginx pod using a different command and custom arguments.<\/span>\n  kubectl run nginx --image=nginx --command -- &lt;cmd&gt; &lt;arg1&gt; ... &lt;argN&gt;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-devops-devsecops-sre-dataops-aiops wp-block-embed-devops-devsecops-sre-dataops-aiops\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"k1gei2ZLuq\"><a href=\"https:\/\/www.bestdevops.com\/how-to-use-troubleshoot-kubernetes-pods\/\" target=\"_blank\" rel=\"noopener\">How to use &#038; troubleshoot Kubernetes pods?<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;How to use &#038; troubleshoot Kubernetes pods?&#8221; &#8212; DevOps - DevSecOps - SRE - DataOps - AIOps\" src=\"https:\/\/www.bestdevops.com\/how-to-use-troubleshoot-kubernetes-pods\/embed\/#?secret=7VrDScazy3#?secret=k1gei2ZLuq\" data-secret=\"k1gei2ZLuq\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_20212\"><iframe loading=\"lazy\"  id=\"_ytid_15761\"  width=\"760\" height=\"427\"  data-origwidth=\"760\" data-origheight=\"427\" src=\"https:\/\/www.youtube.com\/embed\/?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  data-epytgalleryid=\"epyt_gallery_20212\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Birth Events of PODS Example of POD? Commads for working with POD? pod.yaml deployment.yaml How to use &amp; troubleshoot Kubernetes pods? Troubleshooting and Debugging Commands: explain Documentation of resources &#8212;&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4859],"tags":[],"class_list":["post-6293","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/6293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=6293"}],"version-history":[{"count":9,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/6293\/revisions"}],"predecessor-version":[{"id":39974,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/6293\/revisions\/39974"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=6293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=6293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=6293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}