{"id":2164,"date":"2024-11-23T04:59:12","date_gmt":"2024-11-23T04:59:12","guid":{"rendered":"https:\/\/www.nicktailor.com\/?p=2164"},"modified":"2025-11-23T05:28:57","modified_gmt":"2025-11-23T05:28:57","slug":"kubernetes-cheat-sheet","status":"publish","type":"post","link":"https:\/\/nicktailor.com\/tech-blog\/kubernetes-cheat-sheet\/","title":{"rendered":"Kubernetes Cheat Sheet"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">kubectl Context and Configuration<\/h2>\n\n\n\n<p>Manage which Kubernetes cluster kubectl communicates with, and configure authentication and namespace defaults.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl config view                               # View merged kubeconfig\n\n# Use multiple kubeconfig files simultaneously\nexport KUBECONFIG=~\/.kube\/config:~\/.kube\/kubconfig2\nkubectl config view\n\n# Extract a specific user's password\nkubectl config view -o jsonpath='{.users&#91;?(@.name == \"e2e\")].user.password}'\n\n# List users\nkubectl config view -o jsonpath='{.users&#91;*].name}'\n\n# Context management\nkubectl config get-contexts                        # List contexts\nkubectl config current-context                     # Show active context\nkubectl config use-context my-cluster              # Switch context\n\n# Add a cluster entry\nkubectl config set-cluster my-cluster\n\n# Set proxy URL for cluster entry\nkubectl config set-cluster my-cluster --proxy-url=my-proxy-url\n\n# Add a user with basic authentication\nkubectl config set-credentials kubeuser\/foo.kubernetes.com \\\n  --username=kubeuser --password=kubepassword\n\n# Set default namespace for current context\nkubectl config set-context --current --namespace=production\n\n# Set a new context with specific namespace and user\nkubectl config set-context gce --user=cluster-admin --namespace=foo \\\n  &amp;&amp; kubectl config use-context gce\n\n# Delete a user\nkubectl config unset users.foo\n<\/code><\/pre>\n\n\n\n<p>Helpful aliases:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Quickly switch or show context\nalias kx='f() { &#91; \"$1\" ] &amp;&amp; kubectl config use-context $1 || kubectl config current-context ; } ; f'\n\n# Quickly switch or show namespace\nalias kn='f() { &#91; \"$1\" ] &amp;&amp; kubectl config set-context --current --namespace $1 \\\n  || kubectl config view --minify | grep namespace | cut -d\" \" -f6 ; } ; f'\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">kubectl apply (Declarative Management)<\/h2>\n\n\n\n<p><code>kubectl apply<\/code> is the recommended method for managing resources in production. It creates or updates resources by applying a desired state.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f .\/app.yaml                         # Apply single file\nkubectl apply -f .\/manifests\/                       # Apply directory\nkubectl apply -f https:\/\/example.com\/app.yaml       # Apply from URL\n\nkubectl create deployment nginx --image=nginx       # Quick one-shot deployment\n<\/code><\/pre>\n\n\n\n<p>Create multiple manifests via stdin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &lt;&lt;EOF | kubectl apply -f -\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-one\nspec:\n  containers:\n  - name: c\n    image: busybox\n    args: &#91;\"sleep\", \"1000\"]\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-two\nspec:\n  containers:\n  - name: c\n    image: busybox\n    args: &#91;\"sleep\", \"2000\"]\nEOF\n<\/code><\/pre>\n\n\n\n<p>Create a secret:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &lt;&lt;EOF | kubectl apply -f -\napiVersion: v1\nkind: Secret\nmetadata:\n  name: mysecret\ntype: Opaque\ndata:\n  username: $(echo -n \"jane\" | base64 -w0)\n  password: $(echo -n \"s33msi4\" | base64 -w0)\nEOF\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Viewing and Finding Resources<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get pods                                   # Pods in namespace\nkubectl get pods -A                                # All namespaces\nkubectl get pods -o wide                           # Pod node placement\nkubectl get deployments                            # Deployments\nkubectl get svc                                     # Services\nkubectl describe pod my-pod                         # Detailed pod info\nkubectl describe node my-node                       # Node details\n<\/code><\/pre>\n\n\n\n<p>Sorting:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get pods --sort-by='.status.containerStatuses&#91;0].restartCount'\nkubectl get pv --sort-by=.spec.capacity.storage\n<\/code><\/pre>\n\n\n\n<p>Field and label selectors:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get pods --field-selector=status.phase=Running\nkubectl get pods -l app=web\nkubectl get nodes --selector='!node-role.kubernetes.io\/control-plane'\n<\/code><\/pre>\n\n\n\n<p>Retrieve specific fields:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get configmap myconfig -o jsonpath='{.data.ca\\.crt}'\nkubectl get secret my-secret -o jsonpath='{.data.username}' | base64 --decode\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Updating Resources and Rolling Updates<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl set image deployment\/web web=nginx:1.25          # Update image\nkubectl rollout history deployment\/web                    # View history\nkubectl rollout undo deployment\/web                       # Roll back\nkubectl rollout restart deployment\/web                    # Rolling restart\nkubectl rollout status deployment\/web                     # Watch rollout\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Patching Resources<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl patch node node1 -p '{\"spec\": {\"unschedulable\": true}}'\n\n# Strategic merge patch\nkubectl patch pod app-pod -p '{\n  \"spec\": {\"containers\":&#91;{\"name\":\"app\",\"image\":\"new-image\"}]}\n}'\n\n# JSON patch\nkubectl patch pod app-pod --type=json -p='&#91;\n  {\"op\":\"replace\",\"path\":\"\/spec\/containers\/0\/image\",\"value\":\"new-image\"}\n]'\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Editing Resources<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl edit svc\/web-service\nKUBE_EDITOR=\"nano\" kubectl edit deployment\/web\n\nChange between:\nClusterIP\nNodePort\nLoadBalancer\nExternalName\nPort\nTargetport\nNodePort\nProtocol\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Scaling Resources<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl scale deployment\/web --replicas=5\nkubectl scale -f deployment.yaml --replicas=4\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Deleting Resources<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl delete -f .\/app.yaml\nkubectl delete pod my-pod --now\nkubectl delete pods,svc -l app=web\nkubectl delete pod,svc --all -n test\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Interacting With Running Pods<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl logs my-pod\nkubectl logs -f my-pod\nkubectl exec my-pod -- ls \/\nkubectl exec -it my-pod -- sh\nkubectl port-forward svc\/web 8080:80\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Copying Files to and from Containers<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl cp \/tmp\/localfile my-pod:\/tmp\/remote\nkubectl cp my-pod:\/tmp\/remote \/tmp\/localfile\n<\/code><\/pre>\n\n\n\n<p>Advanced (using tar):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tar cf - . | kubectl exec -i my-pod -- tar xf - -C \/tmp\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Interacting With Nodes and Cluster<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl cordon node1\nkubectl drain node1\nkubectl uncordon node1\n\nkubectl top node\nkubectl top pod\n\nkubectl cluster-info\nkubectl cluster-info dump\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Discovering API Resources<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl api-resources\nkubectl api-resources --namespaced=true\nkubectl api-resources -o wide\nkubectl api-resources --verbs=list,get\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Kubectl Output Formatting<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get pods -o json\nkubectl get pods -o yaml\nkubectl get pods -o wide\nkubectl get pods -o name\nkubectl get pods -o jsonpath='{.items&#91;*].metadata.name}'\n<\/code><\/pre>\n\n\n\n<p>Custom columns:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get pods -A -o=custom-columns='IMAGE:spec.containers&#91;*].image'\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Kubectl Verbosity and Debugging<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8211;v=0 Minimal logs<\/li>\n\n\n\n<li>&#8211;v=2 Recommended default<\/li>\n\n\n\n<li>&#8211;v=4 Debug level<\/li>\n\n\n\n<li>&#8211;v=6+ Full HTTP request inspection<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Production-Ready Deployment YAML (Corrected)<\/h2>\n\n\n\n<p>Below is a cleaned-up and production-ready Deployment YAML based on your original example.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  namespace: my-namespace\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  revisionHistoryLimit: 5\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 1000\n        fsGroup: 1000\n      containers:\n        - name: nginx\n          image: nginx:1.25\n          ports:\n            - containerPort: 80\n          resources:\n            requests:\n              cpu: \"100m\"\n              memory: \"128Mi\"\n            limits:\n              cpu: \"300m\"\n              memory: \"256Mi\"\n          readinessProbe:\n            httpGet:\n              path: \/\n              port: 80\n            initialDelaySeconds: 3\n            periodSeconds: 10\n          livenessProbe:\n            httpGet:\n              path: \/\n              port: 80\n            initialDelaySeconds: 10\n            periodSeconds: 20\n          securityContext:\n            readOnlyRootFilesystem: true\n            allowPrivilegeEscalation: false\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<h1>Kubernetes Cheat Sheet<\/h1>\n<p>\nThis Kubernetes cheat sheet is a comprehensive and practical reference for working with <code>kubectl<\/code>, managing kubeconfig files, deploying Kubernetes workloads, viewing and troubleshooting cluster resources, and interacting with running workloads. It also includes a corrected production-ready Deployment YAML example. Everything below is ready to copy and paste directly into your WordPress editor.\n<\/p>\n<hr \/>\n<h2>kubectl Context and Configuration<\/h2>\n<p>Manage which Kubernetes cluster kubectl communicates with, and configure authentication and namespace defaults.<\/p>\n<pre><code>kubectl config view                               # View merged kubeconfig\n# Use multiple kubeconfig files simultaneously\nexport KUBECONFIG=~\/.kube\/config:~\/.kube\/kubconfig2\nkubectl config view\n# Extract a specific user's password\nkubectl config view -o jsonpath='{.users[?(@.name == \"e2e\")].user.password}'\n# List users\nkubectl config view -o jsonpath='{.users[*].name}'\n# Context management\nkubectl config get-contexts                        # List contexts\nkubectl config current-context                     # Show active context\nkubectl config use-context my-cluster              # Switch context\n# Add a cluster entry\nkubectl config set-cluster my-cluster\n# Set proxy URL for cluster entry\nkubectl config set-cluster my-cluster --proxy-url=my-proxy-url\n# Add a user with basic authentication\nkubectl config set-credentials kubeuser\/foo.kubernetes.com \\\n  --username=kubeuser --password=kubepassword\n# Set default namespace for current context\nkubectl config set-context --current --namespace=production\n# Set a new context with specific namespace and user\nkubectl config set-context gce --user=cluster-admin --namespace=foo \\\n  && kubectl config use-context gce\n# Delete a user\nkubectl config unset users.foo\n<\/code><\/pre>\n<p>Helpful aliases:<\/p>\n<pre><code># Quickly switch or show context\nalias kx='f() { [ \"$1\" ] && kubectl config use-context $1 || kubectl config current-context ; } ; f'\n# Quickly switch or show namespace\nalias kn='f() { [ \"$1\" ] && kubectl config set-context --current --namespace $1 \\\n  || kubectl config view --minify | grep namespace | cut -d\" \" -f6 ; } ; f'\n<\/code><\/pre>\n<hr \/>\n<h2>kubectl apply (Declarative Management)<\/h2>\n<p><code>kubectl apply<\/code> is the recommended method for managing resources in production. It creates or updates resources by applying a desired state.<\/p>\n<pre><code>kubectl apply -f .\/app.yaml                         # Apply single file\nkubectl apply -f .\/manifests\/                       # Apply directory\nkubectl apply -f https:\/\/example.com\/app.yaml       # Apply from URL\nkubectl create deployment nginx --image=nginx       # Quick one-shot deployment\n<\/code><\/pre>\n<p>Create multiple manifests via stdin:<\/p>\n<pre><code>cat <<eof | kubectl apply -f -\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-one\nspec:\n  containers:\n  - name: c\n    image: busybox\n    args: [\"sleep\", \"1000\"]\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: pod-two\nspec:\n  containers:\n  - name: c\n    image: busybox\n    args: [\"sleep\", \"2000\"]\nEOF\n<\/code><\/eof><\/code><\/pre>\n<p>Create a secret:<\/p>\n<pre><code>cat <<eof | kubectl apply -f -\napiVersion: v1\nkind: Secret\nmetadata:\n  name: mysecret\ntype: Opaque\ndata:\n  username: $(echo -n \"jane\" | base64 -w0)\n  password: $(echo -n \"s33msi4\" | base64 -w0)\nEOF\n<\/code><\/eof><\/code><\/pre>\n<hr \/>\n<h2>Viewing and Finding Resources<\/h2>\n<pre><code>kubectl get pods                                   # Pods in namespace\nkubectl get pods -A                                # All namespaces\nkubectl get pods -o wide                           # Pod node placement\nkubectl get deployments                            # Deployments\nkubectl get svc                                     # Services\nkubectl describe pod my-pod                         # Detailed pod info\nkubectl describe node my-node                       # Node details\n<\/code><\/pre>\n<p>Sorting:<\/p>\n<pre><code>kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'\nkubectl get pv --sort-by=.spec.capacity.storage\n<\/code><\/pre>\n<p>Field and label selectors:<\/p>\n<pre><code>kubectl get pods --field-selector=status.phase=Running\nkubectl get pods -l app=web\nkubectl get nodes --selector='!node-role.kubernetes.io\/control-plane'\n<\/code><\/pre>\n<p>Retrieve specific fields:<\/p>\n<pre><code>kubectl get configmap myconfig -o jsonpath='{.data.ca\\.crt}'\nkubectl get secret my-secret -o jsonpath='{.data.username}' | base64 --decode\n<\/code><\/pre>\n<hr \/>\n<h2>Updating Resources and Rolling Updates<\/h2>\n<pre><code>kubectl set image deployment\/web web=nginx:1.25          # Update image\nkubectl rollout history deployment\/web                    # View history\nkubectl rollout undo deployment\/web                       # Roll back\nkubectl rollout restart deployment\/web                    # Rolling restart\nkubectl rollout status deployment\/web                     # Watch rollout\n<\/code><\/pre>\n<hr \/>\n<h2>Patching Resources<\/h2>\n<pre><code>kubectl patch node node1 -p '{\"spec\": {\"unschedulable\": true}}'\n# Strategic merge patch\nkubectl patch pod app-pod -p '{\n  \"spec\": {\"containers\":[{\"name\":\"app\",\"image\":\"new-image\"}]}\n}'\n# JSON patch\nkubectl patch pod app-pod --type=json -p='[\n  {\"op\":\"replace\",\"path\":\"\/spec\/containers\/0\/image\",\"value\":\"new-image\"}\n]'\n<\/code><\/pre>\n<hr \/>\n<h2>Editing Resources<\/h2>\n<pre><code>kubectl edit svc\/web-service\nKUBE_EDITOR=\"nano\" kubectl edit deployment\/web\n<\/code><\/pre>\n<hr \/>\n<h2>Scaling Resources<\/h2>\n<pre><code>kubectl scale deployment\/web --replicas=5\nkubectl scale -f deployment.yaml --replicas=4\n<\/code><\/pre>\n<hr \/>\n<h2>Deleting Resources<\/h2>\n<pre><code>kubectl delete -f .\/app.yaml\nkubectl delete pod my-pod --now\nkubectl delete pods,svc -l app=web\nkubectl delete pod,svc --all -n test\n<\/code><\/pre>\n<hr \/>\n<h2>Interacting With Running Pods<\/h2>\n<pre><code>kubectl logs my-pod\nkubectl logs -f my-pod\nkubectl exec my-pod -- ls \/\nkubectl exec -it my-pod -- sh\nkubectl port-forward svc\/web 8080:80\n<\/code><\/pre>\n<hr \/>\n<h2>Copying Files to and from Containers<\/h2>\n<pre><code>kubectl cp \/tmp\/localfile my-pod:\/tmp\/remote\nkubectl cp my-pod:\/tmp\/remote \/tmp\/localfile\n<\/code><\/pre>\n<p>Advanced (using tar):<\/p>\n<pre><code>tar cf - . | kubectl exec -i my-pod -- tar xf - -C \/tmp\n<\/code><\/pre>\n<hr \/>\n<h2>Interacting With Nodes and Cluster<\/h2>\n<pre><code>kubectl cordon node1\nkubectl drain node1\nkubectl uncordon node1\nkubectl top node\nkubectl top pod\nkubectl cluster-info\nkubectl cluster-info dump\n<\/code><\/pre>\n<hr \/>\n<h2>Discovering API Resources<\/h2>\n<pre><code>kubectl api-resources\nkubectl api-resources --namespaced=true\nkubectl api-resources -o wide\nkubectl api-resources --verbs=list,get\n<\/code><\/pre>\n<hr \/>\n<h2>Kubectl Output Formatting<\/h2>\n<pre><code>kubectl get pods -o json\nkubectl get pods -o yaml\nkubectl get pods -o wide\nkubectl get pods -o name\nkubectl get pods -o jsonpath='{.items[*].metadata.name}'\n<\/code><\/pre>\n<p>Custom columns:<\/p>\n<pre><code>kubectl get pods -A -o=custom-columns='IMAGE:spec.containers[*].image'\n<\/code><\/pre>\n<hr \/>\n<h2>Kubectl Verbosity and Debugging<\/h2>\n<ul>\n  <li>&#8211;v=0  Minimal logs<\/li>\n  <li>&#8211;v=2  Recommended default<\/li>\n  <li>&#8211;v=4  Debug level<\/li>\n  <li>&#8211;v=6+ Full HTTP request inspection<\/li>\n<\/ul>\n<hr \/>\n<h2>Production-Ready Deployment YAML (Corrected)<\/h2>\n<p>Below is a cleaned-up and production-ready Deployment YAML based on your original example.<\/p>\n<pre><code class=\"language-yaml\">apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  namespace: my-namespace\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  revisionHistoryLimit: 5\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 1000\n        fsGroup: 1000\n      containers:\n        - name: nginx\n          image: nginx:1.25\n          ports:\n            - containerPort: 80\n          resources:\n            requests:\n              cpu: \"100m\"\n              memory: \"128Mi\"\n            limits:\n              cpu: \"300m\"\n              memory: \"256Mi\"\n          readinessProbe:\n            httpGet:\n              path: \/\n              port: 80\n            initialDelaySeconds: 3\n            periodSeconds: 10\n          livenessProbe:\n            httpGet:\n              path: \/\n              port: 80\n            initialDelaySeconds: 10\n            periodSeconds: 20\n          securityContext:\n            readOnlyRootFilesystem: true\n            allowPrivilegeEscalation: false\n<\/code><\/pre>\n<hr \/>\n<h2>Conclusion<\/h2>\n<p>\nThis Kubernetes cheat sheet provides a complete quick-reference for daily cluster operations, including context switching, applying manifests, rolling updates, patching, scaling, and debugging. With the included production-ready Deployment YAML and working examples, you can confidently operate Kubernetes clusters and deploy applications using the recommended declarative approach.\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>kubectl Context and Configuration Manage which Kubernetes cluster kubectl communicates with, and configure authentication and namespace defaults. Helpful aliases: kubectl apply (Declarative Management) kubectl apply is the recommended method for managing resources in production. It creates or updates resources by applying a desired state. Create multiple manifests via stdin: Create a secret: Viewing and Finding Resources Sorting: Field and label<a href=\"https:\/\/nicktailor.com\/tech-blog\/kubernetes-cheat-sheet\/\" class=\"read-more\">Read More &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[148],"tags":[],"class_list":["post-2164","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts\/2164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/comments?post=2164"}],"version-history":[{"count":3,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts\/2164\/revisions"}],"predecessor-version":[{"id":2169,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/posts\/2164\/revisions\/2169"}],"wp:attachment":[{"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/media?parent=2164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/categories?post=2164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nicktailor.com\/tech-blog\/wp-json\/wp\/v2\/tags?post=2164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}