<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes | Luis Cacho</title><link>https://luiscachog.io/category/kubernetes/</link><atom:link href="https://luiscachog.io/category/kubernetes/index.xml" rel="self" type="application/rss+xml"/><description>Kubernetes</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Thu, 22 Jun 2023 00:00:00 +0000</lastBuildDate><image><url>https://luiscachog.io/media/icon_hu4fa4dbbaafd6f1b45a88958b9b4a0dd0_11007_512x512_fill_lanczos_center_3.png</url><title>Kubernetes</title><link>https://luiscachog.io/category/kubernetes/</link></image><item><title>Trigger a scheduled job manually on Kubernetes</title><link>https://luiscachog.io/garden/trigger-scheduled-job-kubernetes/</link><pubDate>Thu, 22 Jun 2023 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/trigger-scheduled-job-kubernetes/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Mockup command&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kubectl create job --from&lt;span class="o">=&lt;/span>cronjob/&amp;lt;cronjob-name&amp;gt; &amp;lt;job-name&amp;gt; -n &amp;lt;namespace-name&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>How can I trigger a Kubernetes Scheduled Job manually?&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://stackoverflow.com/questions/40401795/how-can-i-trigger-a-kubernetes-scheduled-job-manually" target="_blank" rel="noopener">https://stackoverflow.com/questions/40401795/how-can-i-trigger-a-kubernetes-scheduled-job-manually&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Delete OpenShift Operator</title><link>https://luiscachog.io/garden/delete-openshift-operator/</link><pubDate>Mon, 15 Aug 2022 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/delete-openshift-operator/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Mockup commands&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc get subscription &amp;lt;operator&amp;gt; -n openshift-operators -o yaml &lt;span class="p">|&lt;/span> grep
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">currentCSV
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc delete subscription &amp;lt;operator&amp;gt; -n openshift-operators
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc delete clusterserviceversion &amp;lt;currentCSV&amp;gt; -n openshift-operators
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"># Example commands
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc get subscription jaeger -n openshift-operators -o yaml | grep currentCSV
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc delete subscription jaeger -n openshift-operators
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc delete clusterserviceversion jaeger-operator.v1.8.2 -n openshift-operators
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Delete OpenShift Project</title><link>https://luiscachog.io/garden/delete-openshift-project/</link><pubDate>Mon, 15 Aug 2022 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/delete-openshift-project/</guid><description>&lt;ul>
&lt;li>Issue, can&amp;rsquo;t delete a namespace/project and is stuck in a &amp;ldquo;Terminating&amp;rdquo; status&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">oc delete project fishbone
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc get projects fishbone
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">NAME DISPLAY NAME STATUS
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">fishbone Fishbone Terminating
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>
&lt;p>Solution&lt;/p>
&lt;ul>
&lt;li>Define the namespace/project to delete&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">NAMESPACE&lt;/span>&lt;span class="o">=&lt;/span>fishbone
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Cleanup the finalizers section from the namespace definition and define a json file with that&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">oc get namespace &lt;span class="nv">$NAMESPACE&lt;/span> -o&lt;span class="o">=&lt;/span>json &lt;span class="p">|&lt;/span> jq &lt;span class="s1">&amp;#39;.spec = {&amp;#34;finalizers&amp;#34;:[]}&amp;#39;&lt;/span> &amp;gt; &lt;span class="nv">$NAMESPACE&lt;/span>.json
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;apiVersion&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;v1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;Namespace&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;metadata&amp;#34;&lt;/span>: &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;annotations&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;openshift.io/description&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;openshift.io/display-name&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;Fishbone&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;openshift.io/requester&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;system:admin&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;openshift.io/sa.scc.mcs&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;s0:c24,c14&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;openshift.io/sa.scc.supplemental-groups&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;1000580000/10000&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;openshift.io/sa.scc.uid-range&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;1000580000/10000&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">}&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;creationTimestamp&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;2021-02-20T03:29:59Z&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;deletionTimestamp&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;2021-02-20T03:31:35Z&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;name&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;fishbone&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;resourceVersion&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;270664&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;selfLink&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;/api/v1/namespaces/fishbone&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;uid&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;885c4440-6f05-4e72-a103-28e61705406f&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">}&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;spec&amp;#34;&lt;/span>: &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;finalizers&amp;#34;&lt;/span>: &lt;span class="o">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;kubernetes&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">}&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>: &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;conditions&amp;#34;&lt;/span>: &lt;span class="o">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">]&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;phase&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;Terminating&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Apply the json file from the previous step to delete the finalizers and therefore the deletion of the namespace/project&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">curl -k -H &lt;span class="s2">&amp;#34;authorization: Bearer &lt;/span>&lt;span class="k">$(&lt;/span>oc whoami --show-token&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> -X PUT --data-binary @&lt;span class="nv">$NAMESPACE&lt;/span>.json &lt;span class="k">$(&lt;/span>oc whoami --show-server&lt;span class="k">)&lt;/span>/api/v1/namespaces/&lt;span class="nv">$NAMESPACE&lt;/span>/finalize
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Verify that the namspace/project has been deleted&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">oc get projects &lt;span class="nv">$NAMESPACE&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Error from server &lt;span class="o">(&lt;/span>NotFound&lt;span class="o">)&lt;/span>: namespaces &lt;span class="s2">&amp;#34;fishbone&amp;#34;&lt;/span> not found
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Kubernetes Advanced Topics&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Kubernetes Namespace Stuck&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Red Hat article[^3]&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#advanced-topics" target="_blank" rel="noopener">https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#advanced-topics&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://success.mirantis.com/article/kubernetes-namespace-stuck-in-terminating" target="_blank" rel="noopener">https://success.mirantis.com/article/kubernetes-namespace-stuck-in-terminating&lt;/a>
[^3]:&lt;a href="https://www.redhat.com/sysadmin/troubleshooting-terminating-namespaces" target="_blank" rel="noopener">https://www.redhat.com/sysadmin/troubleshooting-terminating-namespaces&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>How to Retrieve secrets values</title><link>https://luiscachog.io/garden/retrieve-secrets-values/</link><pubDate>Mon, 15 Aug 2022 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/retrieve-secrets-values/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">oc get secret my-secret -n my-project --template&lt;span class="o">={{&lt;/span>.data.my-secret-key&lt;span class="o">}}&lt;/span> &lt;span class="p">|&lt;/span> base64 -d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc get secret my-secret -n my-project -o go-template --template&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;{{.data.my-secret-key|base64decode}}&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc extract secrets/my-secret -n my-project
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc get secret my-secret -n my-project -o &lt;span class="nv">jsonpath&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;{.data[&amp;#39;tls\.key&amp;#39;]}&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> base64 -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>How to list the taints on kubernetes nodes</title><link>https://luiscachog.io/garden/list-node-taints/</link><pubDate>Sun, 14 Aug 2022 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/list-node-taints/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">oc get nodes -o json &lt;span class="p">|&lt;/span> jq &lt;span class="s1">&amp;#39;.items[].spec.taints&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">oc get nodes -o json &lt;span class="p">|&lt;/span> jq &lt;span class="s1">&amp;#39;.items[] | {node_name:.metadata.name,taints:.spec.taints[]?}
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">oc get nodes -o=custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">get nodes -o=jsonpath=&amp;#39;&lt;/span>&lt;span class="o">{&lt;/span>range .items&lt;span class="o">[&lt;/span>*&lt;span class="o">]}{&lt;/span>.metadata.name&lt;span class="o">}{&lt;/span>&lt;span class="s2">&amp;#34;\t&amp;#34;&lt;/span>&lt;span class="o">}{&lt;/span>.spec.taints&lt;span class="o">}{&lt;/span>&lt;span class="s2">&amp;#34;\n&amp;#34;&lt;/span>&lt;span class="o">}{&lt;/span>end&lt;span class="o">}&lt;/span>&lt;span class="err">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> StackOverflow&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>]: &lt;a href="https://stackoverflow.com/questions/43379415/how-can-i-list-the-taints-on-kubernetes-nodes" target="_blank" rel="noopener">https://stackoverflow.com/questions/43379415/how-can-i-list-the-taints-on-kubernetes-nodes&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Command to perform a curl to a PodIP</title><link>https://luiscachog.io/garden/curl-podip/</link><pubDate>Thu, 05 Aug 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/curl-podip/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">curl &lt;span class="k">$(&lt;/span>oc get pod &amp;lt;pod-name&amp;gt; --template &lt;span class="err">&amp;#39;&lt;/span>&lt;span class="o">{{&lt;/span> .status.podIP&lt;span class="o">}}&lt;/span>&lt;span class="k">)&lt;/span>:8080
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Kubernetes debug commands</title><link>https://luiscachog.io/garden/debug-k8s/</link><pubDate>Sun, 01 Aug 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/debug-k8s/</guid><description>&lt;ul>
&lt;li>Kubernetes error messages&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">kubectl get events -n kube-system
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Kubernetes pods logs&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">stern prox -n kube-system
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Debug with busybox&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">kubectl run --generator&lt;span class="o">=&lt;/span>run-pod/v1 -i --tty busybox --image&lt;span class="o">=&lt;/span>busybox --restart&lt;span class="o">=&lt;/span>Never -- sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Wait for pod to be ready</title><link>https://luiscachog.io/garden/wait-for-pod-to-be-ready/</link><pubDate>Thu, 15 Jul 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/wait-for-pod-to-be-ready/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">POD_NAME&lt;/span>&lt;span class="o">=&lt;/span>hello-d8d8d7455-j9nzw
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">while&lt;/span> &lt;span class="o">[[&lt;/span> &lt;span class="k">$(&lt;/span>oc get pods &lt;span class="nv">$POD_NAME&lt;/span> -o &lt;span class="s1">&amp;#39;jsonpath={..status.conditions[?(@.type==&amp;#34;Ready&amp;#34;)].status}&amp;#39;&lt;/span>&lt;span class="k">)&lt;/span> !&lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;True&amp;#34;&lt;/span> &lt;span class="o">]]&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;waiting for pod&amp;#34;&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sleep 1&lt;span class="p">;&lt;/span> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>If you want to wait until all the pods with a common label you can do:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="k">while&lt;/span> &lt;span class="o">[[&lt;/span> &lt;span class="k">$(&lt;/span>kubectl get pods -l &lt;span class="nv">app&lt;/span>&lt;span class="o">=&lt;/span>hello -o &lt;span class="s1">&amp;#39;jsonpath={..status.conditions[?(@.type==&amp;#34;Ready&amp;#34;)].status}&amp;#39;&lt;/span>&lt;span class="k">)&lt;/span> !&lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;True&amp;#34;&lt;/span> &lt;span class="o">]]&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;waiting for pod&amp;#34;&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sleep 1&lt;span class="p">;&lt;/span> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Differences between Kubernetes and Openshift</title><link>https://luiscachog.io/slides/k8s-vs-ocp/</link><pubDate>Thu, 25 Mar 2021 09:10:47 -0500</pubDate><guid>https://luiscachog.io/slides/k8s-vs-ocp/</guid><description>&lt;!-- [revealoptions]
controlsBackArrows= "hidden"
history= false
center= true
showNotes= false
width= "100%"
height= "100%"
margin= 0.2
minScale= 0.2
maxScale= 1.5 -->
&lt;h1 id="heading">&lt;/h1>
&lt;h2 id="differences-between-kubernetes-and-openshift">Differences between Kubernetes and Openshift&lt;/h2>
&lt;hr>
&lt;h3 id="luis-cacho">Luis Cacho&lt;/h3>
&lt;h4 id="senior-container-infrastructure-consultant">Senior Container Infrastructure Consultant&lt;/h4>
&lt;h5 id="red-hathttpsredhatcom">&lt;a href="https://redhat.com" target="_blank" rel="noopener">@Red Hat&lt;/a>&lt;/h5>
&lt;hr>
&lt;section data-shortcode-section>
&lt;h3 id="kubernetes">Kubernetes&lt;/h3>
&lt;h4 id="some-assembly-required">Some assembly required&lt;/h4>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/media/slides/k8s-vs-ocp/k8s-lego_hu5d4fa49e9520c9dd96a24d33f6995b83_231012_48794af0155d9a2bccc567c0020e68ae.webp 400w,
/media/slides/k8s-vs-ocp/k8s-lego_hu5d4fa49e9520c9dd96a24d33f6995b83_231012_dd12ccf7664715d6e555f2ac927603a6.webp 760w,
/media/slides/k8s-vs-ocp/k8s-lego_hu5d4fa49e9520c9dd96a24d33f6995b83_231012_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://luiscachog.io/media/slides/k8s-vs-ocp/k8s-lego_hu5d4fa49e9520c9dd96a24d33f6995b83_231012_48794af0155d9a2bccc567c0020e68ae.webp"
width="50%"
height="760"
loading="lazy" />&lt;/div>
&lt;/div>&lt;/figure>
&lt;hr>
&lt;!-- markdownlint-capture -->
&lt;!-- markdownlint-disable -->
&lt;h3 id="kubernetes-1">Kubernetes&lt;/h3>
&lt;!-- markdownlint-restore -->
&lt;h4 id="some-assembly-required-1">Some assembly required&lt;/h4>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/media/slides/k8s-vs-ocp/k8s-lack_hue22ff0180dba771c4b2ced3e722d392b_12541_e93d7511a3f9d6d1a8a73de2dceb786c.webp 400w,
/media/slides/k8s-vs-ocp/k8s-lack_hue22ff0180dba771c4b2ced3e722d392b_12541_832425835d1bbb59e844aefb220cdae5.webp 760w,
/media/slides/k8s-vs-ocp/k8s-lack_hue22ff0180dba771c4b2ced3e722d392b_12541_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/slides/k8s-vs-ocp/k8s-lack_hue22ff0180dba771c4b2ced3e722d392b_12541_e93d7511a3f9d6d1a8a73de2dceb786c.webp"
width="100%"
height="327"
loading="lazy" />&lt;/div>
&lt;/div>&lt;/figure>
&lt;aside class="notes">
&lt;ul>
&lt;li>Press &lt;code>S&lt;/code> key to view -&lt;/li>
&lt;/ul>
&lt;p>Kubernetes does not provide (out-of-the-box):&lt;/p>
&lt;ol>
&lt;li>Operative System&lt;/li>
&lt;li>Developer tooling and UX&lt;/li>
&lt;li>Container runtime (CRI-O, Containerd, Docker, etc).&lt;/li>
&lt;li>Image registry&lt;/li>
&lt;li>Software-defined networking&lt;/li>
&lt;li>Load‐balancer and routing&lt;/li>
&lt;li>Log management&lt;/li>
&lt;li>Container metrics and monitoring&lt;/li>
&lt;li>DNS&lt;/li>
&lt;li>Ingress&lt;/li>
&lt;li>RBAC&lt;/li>
&lt;li>Storage&lt;/li>
&lt;li>Management&lt;/li>
&lt;li>Service Catalog (Operators)&lt;/li>
&lt;/ol>
&lt;/aside>
&lt;hr>
&lt;!-- markdownlint-capture -->
&lt;!-- markdownlint-disable -->
&lt;h3 id="kubernetes-2">Kubernetes&lt;/h3>
&lt;!-- markdownlint-restore -->
&lt;h4 id="some-assembly-required-2">Some assembly required&lt;/h4>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/media/slides/k8s-vs-ocp/k8s-landscape_hud934df60cc460e6bdc2a2320bcb1b77e_6556548_3714d455a464221b6a1d8baf8dd3d70d.webp 400w,
/media/slides/k8s-vs-ocp/k8s-landscape_hud934df60cc460e6bdc2a2320bcb1b77e_6556548_2d3810e7e57aa438895b4bee44290b15.webp 760w,
/media/slides/k8s-vs-ocp/k8s-landscape_hud934df60cc460e6bdc2a2320bcb1b77e_6556548_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/slides/k8s-vs-ocp/k8s-landscape_hud934df60cc460e6bdc2a2320bcb1b77e_6556548_3714d455a464221b6a1d8baf8dd3d70d.webp"
width="100%"
height="460"
loading="lazy" />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/section>
&lt;hr>
&lt;section data-shortcode-section>
&lt;h3 id="openshift">Openshift&lt;/h3>
&lt;h4 id="value-added">Value Added&lt;/h4>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/media/slides/k8s-vs-ocp/ocp-logo_hub55d0082020858bd8e0d2513214bb36a_58983_27ac333dfa6b7cab104fa5c4bf33e82d.webp 400w,
/media/slides/k8s-vs-ocp/ocp-logo_hub55d0082020858bd8e0d2513214bb36a_58983_360fe55c5a4b106c7fe23b1a6cd1e52f.webp 760w,
/media/slides/k8s-vs-ocp/ocp-logo_hub55d0082020858bd8e0d2513214bb36a_58983_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/slides/k8s-vs-ocp/ocp-logo_hub55d0082020858bd8e0d2513214bb36a_58983_27ac333dfa6b7cab104fa5c4bf33e82d.webp"
width="70%"
height="324"
loading="lazy" />&lt;/div>
&lt;/div>&lt;/figure>
&lt;hr>
&lt;!-- markdownlint-capture -->
&lt;!-- markdownlint-disable -->
&lt;h3 id="openshift-1">Openshift&lt;/h3>
&lt;!-- markdownlint-restore -->
&lt;h4 id="value-added-1">Value Added&lt;/h4>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/media/slides/k8s-vs-ocp/ocp-landscape_hud934df60cc460e6bdc2a2320bcb1b77e_6563729_1aaf0e92aea7613704fa9ac8bebc3a0f.webp 400w,
/media/slides/k8s-vs-ocp/ocp-landscape_hud934df60cc460e6bdc2a2320bcb1b77e_6563729_641a6e6fa95ce9815f897687463d4ca1.webp 760w,
/media/slides/k8s-vs-ocp/ocp-landscape_hud934df60cc460e6bdc2a2320bcb1b77e_6563729_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/slides/k8s-vs-ocp/ocp-landscape_hud934df60cc460e6bdc2a2320bcb1b77e_6563729_1aaf0e92aea7613704fa9ac8bebc3a0f.webp"
width="100%"
height="460"
loading="lazy" />&lt;/div>
&lt;/div>&lt;/figure>
&lt;hr>
&lt;!-- markdownlint-capture -->
&lt;!-- markdownlint-disable -->
&lt;h3 id="openshift-2">Openshift&lt;/h3>
&lt;!-- markdownlint-restore -->
&lt;h4 id="value-added-2">Value Added&lt;/h4>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/media/slides/k8s-vs-ocp/ocp-arch_hu5ad65d1c520fefa54127e833cd143ea7_167834_b5727e55f72b3d94cb10d01346c89252.webp 400w,
/media/slides/k8s-vs-ocp/ocp-arch_hu5ad65d1c520fefa54127e833cd143ea7_167834_4638c01656df18eef165986fb64bc40a.webp 760w,
/media/slides/k8s-vs-ocp/ocp-arch_hu5ad65d1c520fefa54127e833cd143ea7_167834_1200x1200_fit_q90_h2_lanczos_2.webp 1200w"
src="https://luiscachog.io/media/slides/k8s-vs-ocp/ocp-arch_hu5ad65d1c520fefa54127e833cd143ea7_167834_b5727e55f72b3d94cb10d01346c89252.webp"
width="100%"
height="429"
loading="lazy" />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/section>
&lt;hr>
&lt;section data-shortcode-section>
&lt;h3 id="openshift-contains-kubernetes">Openshift contains Kubernetes&lt;/h3>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/media/slides/k8s-vs-ocp/ocp-contains-k8s_hu1e0fae1efb02309ebe72b4ea66218d50_97537_f8b786763edc718263bf7bbb9b9cc32b.webp 400w,
/media/slides/k8s-vs-ocp/ocp-contains-k8s_hu1e0fae1efb02309ebe72b4ea66218d50_97537_96f387002adacb57fbf6e32a888c96a8.webp 760w,
/media/slides/k8s-vs-ocp/ocp-contains-k8s_hu1e0fae1efb02309ebe72b4ea66218d50_97537_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/slides/k8s-vs-ocp/ocp-contains-k8s_hu1e0fae1efb02309ebe72b4ea66218d50_97537_f8b786763edc718263bf7bbb9b9cc32b.webp"
width="90%"
height="435"
loading="lazy" />&lt;/div>
&lt;/div>&lt;/figure>
&lt;aside class="notes">
&lt;ul>
&lt;li>Press &lt;code>S&lt;/code> key to view -&lt;/li>
&lt;/ul>
&lt;/aside>
&lt;hr>
&lt;!-- markdownlint-capture -->
&lt;!-- markdownlint-disable -->
&lt;h3 id="openshift-contains-kubernetes-1">Openshift contains Kubernetes&lt;/h3>
&lt;!-- markdownlint-restore -->
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/media/slides/k8s-vs-ocp/ocp-is-k8s_hud3011e5a0c6e498bbc0af9bd76a3a0dd_105280_89205a684652c1b7301a7c7737a9ce4e.webp 400w,
/media/slides/k8s-vs-ocp/ocp-is-k8s_hud3011e5a0c6e498bbc0af9bd76a3a0dd_105280_afdaf2fcf41a32a0c5da9a20e5afb4cd.webp 760w,
/media/slides/k8s-vs-ocp/ocp-is-k8s_hud3011e5a0c6e498bbc0af9bd76a3a0dd_105280_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/slides/k8s-vs-ocp/ocp-is-k8s_hud3011e5a0c6e498bbc0af9bd76a3a0dd_105280_89205a684652c1b7301a7c7737a9ce4e.webp"
width="90%"
height="386"
loading="lazy" />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/section>
&lt;hr>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;h3 id="openshit-is-a-kubernetes-flavor">Openshit IS a Kubernetes flavor&lt;/h3>
&lt;hr>
&lt;h2 id="thank-you">Thank You&lt;/h2></description></item><item><title>Kubernetes Contributor</title><link>https://luiscachog.io/project/kubernetes-contributor/</link><pubDate>Sun, 27 Oct 2019 00:00:00 +0000</pubDate><guid>https://luiscachog.io/project/kubernetes-contributor/</guid><description>&lt;p>Contributing to the &lt;a href="https://kubernetes.io" target="_blank" rel="noopener">Kubernetes&lt;/a> project in different &lt;a href="https://git.k8s.io/community/" target="_blank" rel="noopener">special interest groups&lt;/a>,
mainly focused on migration and modernization, documentation, community, and user/contributor experience.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://prow.k8s.io/pr?query=is%3Apr%20author%3Aluiscachog" target="_blank" rel="noopener">Prow PR Dashboard&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sig-docs">sig-docs&lt;/h2>
&lt;p>Contributor on the Spanish translation content at kubernetes.io in &lt;strong>sig-docs&lt;/strong>.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/kubernetes/community/tree/master/sig-docs" target="_blank" rel="noopener">Docs Special Interest Group&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/kubernetes/website/issues/13948" target="_blank" rel="noopener">Tracking Spanish Localisation Progress (M1) #13948&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="kubernetes-docs-es">kubernetes-docs-es&lt;/h2>
&lt;h2 id="konveyor">konveyor&lt;/h2></description></item><item><title>Ansible Galaxy Roles</title><link>https://luiscachog.io/project/ansible-galaxy-roles/</link><pubDate>Fri, 25 Oct 2019 00:00:00 +0000</pubDate><guid>https://luiscachog.io/project/ansible-galaxy-roles/</guid><description>&lt;ul>
&lt;li>
&lt;p>CircleCI Role: Ansible role that installs &lt;a href="https://circleci-public.github.io/circleci-cli/" target="_blank" rel="noopener">CircleCI CLI&lt;/a> on your server/workstation. &lt;a href="https://app.travis-ci.com/github/luiscachog/ansible-circleci-cli" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://app.travis-ci.com/luiscachog/ansible-circleci-cli.svg?branch=master" alt="Build Status" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Sonobuoy Role: Ansible role that installs &lt;a href="https://sonobuoy.io/" target="_blank" rel="noopener">sonobuoy&lt;/a> on your server/workstation. &lt;a href="https://app.travis-ci.com/github/luiscachog/ansible-sonobuoy" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://app.travis-ci.com/luiscachog/ansible-sonobuoy.svg?branch=master" alt="Build Status" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item></channel></rss>