<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Cka_cheat</id>
	<title>Cka cheat - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Cka_cheat"/>
	<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Cka_cheat&amp;action=history"/>
	<updated>2026-04-05T17:41:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Cka_cheat&amp;diff=5460&amp;oldid=prev</id>
		<title>Busk at 23:51, 3 January 2025</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Cka_cheat&amp;diff=5460&amp;oldid=prev"/>
		<updated>2025-01-03T23:51:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:51, 3 January 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Shameless rip&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https://medium.com/@mrJTY/kubernetes-cka-exam-cheat-sheet-6194ccf162bb&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;```&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;```&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Writing down cheat sheets are awesome for digesting what you know in a small document.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Writing down cheat sheets are awesome for digesting what you know in a small document.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Source: RODNAE Productions, Pexels&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;I’m writing this down in preparation my exam coming up soon. Hopefully someone else will find this useful.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is meant to be as a quick and fast reference material. If you want more in-depth tips, see: https://medium.com/@mrJTY/exam-tips-for-taking-the-certified-kubernetes-admistrator-42d0b9ed72dd&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is meant to be as a quick and fast reference material. If you want more in-depth tips, see: https://medium.com/@mrJTY/exam-tips-for-taking-the-certified-kubernetes-admistrator-42d0b9ed72dd&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Cka_cheat&amp;diff=5459&amp;oldid=prev</id>
		<title>Busk: Created page with &quot;``` Writing down cheat sheets are awesome for digesting what you know in a small document.   Source: RODNAE Productions, Pexels I’m writing this down in preparation my exam...&quot;</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Cka_cheat&amp;diff=5459&amp;oldid=prev"/>
		<updated>2025-01-03T23:51:19Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;``` Writing down cheat sheets are awesome for digesting what you know in a small document.   Source: RODNAE Productions, Pexels I’m writing this down in preparation my exam...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;```&lt;br /&gt;
Writing down cheat sheets are awesome for digesting what you know in a small document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Source: RODNAE Productions, Pexels&lt;br /&gt;
I’m writing this down in preparation my exam coming up soon. Hopefully someone else will find this useful.&lt;br /&gt;
&lt;br /&gt;
This is meant to be as a quick and fast reference material. If you want more in-depth tips, see: https://medium.com/@mrJTY/exam-tips-for-taking-the-certified-kubernetes-admistrator-42d0b9ed72dd&lt;br /&gt;
&lt;br /&gt;
Bookmark these links&lt;br /&gt;
One page API reference: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26&lt;br /&gt;
kubectl command reference: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands&lt;br /&gt;
kubectl cheat sheet: https://kubernetes.io/docs/reference/kubectl/cheatsheet/&lt;br /&gt;
Kubectl&lt;br /&gt;
Enabling autocomplete&lt;br /&gt;
https://kubernetes.io/docs/reference/kubectl/cheatsheet/#kubectl-autocomplete&lt;br /&gt;
&lt;br /&gt;
source &amp;lt;(kubectl completion bash) # set up autocomplete in bash into the current shell, bash-completion package should be installed first.&lt;br /&gt;
echo &amp;quot;source &amp;lt;(kubectl completion bash)&amp;quot; &amp;gt;&amp;gt; ~/.bashrc # add autocomplete permanently to your bash shell.&lt;br /&gt;
alias k=kubectl&lt;br /&gt;
complete -o default -F __start_kubectl k&lt;br /&gt;
kubectl get with custom columns&lt;br /&gt;
&lt;br /&gt;
kubectlget deployment \&lt;br /&gt;
  -o custom-columns=DEPLOYMENT:.metadata.name,CONTAINER_IMAGE:.spec.template.spec.containers[].image,READY_REPLICAS:.status.readyReplicas,NAMESPACE:.metadata.namespace \&lt;br /&gt;
  --sort-by=.metadata.name &lt;br /&gt;
Verifing the kubeconfig&lt;br /&gt;
A kubeconfig file can be verified if it’s correctly working by doing a:&lt;br /&gt;
&lt;br /&gt;
k cluster-info --kubeconfig=./.kubeconfig&lt;br /&gt;
Export useful variables&lt;br /&gt;
alias k=kubectl&lt;br /&gt;
export dry='--dry-run=client -o=yaml'&lt;br /&gt;
export oy='-o=yaml'&lt;br /&gt;
alias kn='kubectl config set-context --current --namespace '&lt;br /&gt;
export ETCDCTL_API=3&lt;br /&gt;
This is so that you can call $dry to export yaml files instead of creating the objects&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Make a pod yaml&lt;br /&gt;
k run &amp;lt;pod-name&amp;gt; --image=&amp;lt;image&amp;gt; $dry &amp;gt; pod.yaml&lt;br /&gt;
&lt;br /&gt;
# Apply&lt;br /&gt;
k apply -f ./pod.yaml&lt;br /&gt;
&lt;br /&gt;
# Get it back as yaml&lt;br /&gt;
k get po &amp;lt;pod-name&amp;gt; $oy&lt;br /&gt;
Workloads&lt;br /&gt;
Creating pods&lt;br /&gt;
k run &amp;lt;pod-name&amp;gt; --image=&amp;lt;image&amp;gt; $dry&lt;br /&gt;
Creating pods with security context&lt;br /&gt;
Build a yaml output and add this as part of `&lt;br /&gt;
&lt;br /&gt;
Creating a deployment&lt;br /&gt;
k create deploy &amp;lt;deploy&amp;gt; --replicas=&amp;lt;n&amp;gt; --image=&amp;lt;image&amp;gt; $dry&lt;br /&gt;
Initiating a cluster with kubeadm&lt;br /&gt;
Install kubelet and kubeadm&lt;br /&gt;
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/&lt;br /&gt;
&lt;br /&gt;
apt update&lt;br /&gt;
apt search kubeadm kubelet&lt;br /&gt;
apt install kubeadm=1.26.0-00 kubelet=1.26.0-00&lt;br /&gt;
Init kubeadm in the controlplane&lt;br /&gt;
IP_ADDRESS=$(ifconfig eth0 | grep 'inet ' | cut -d: -f2 | awk '{print $2}')&lt;br /&gt;
&lt;br /&gt;
kubeadm init \&lt;br /&gt;
  --apiserver-advertise-address=$IP_ADDRESSS \&lt;br /&gt;
  --apiserver-cert-extra-sans=controlplane \&lt;br /&gt;
  --pod-network-cidr=10.244.0.0/16&lt;br /&gt;
Make a token from the controlplane:&lt;br /&gt;
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-token/&lt;br /&gt;
&lt;br /&gt;
controlplane ~ ✖ kubeadm token  create --print-join-command&lt;br /&gt;
kubeadm join 192.15.211.6:6443 --token XXX --discovery-token-ca-cert-hash sha256:1493d93e085bcaa30819bc10958c54ff69a2ebea37a00632fb37c0621fc40139 &lt;br /&gt;
Join from a worker node&lt;br /&gt;
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/&lt;br /&gt;
&lt;br /&gt;
workernode$ kubeadm join 192.15.211.6:6443 --token XXX --discovery-token-ca-cert-hash sha256:1493d93e085bcaa30819bc10958c54ff69a2ebea37a00632fb37c0621fc40139&lt;br /&gt;
Back in the control plane, check the nodes:&lt;br /&gt;
controlplane ~ ➜  k get no&lt;br /&gt;
NAME           STATUS     ROLES           AGE    VERSION&lt;br /&gt;
controlplane   NotReady   control-plane   8m4s   v1.26.0&lt;br /&gt;
node01         NotReady   &amp;lt;none&amp;gt;          8s     v1.26.0&lt;br /&gt;
Install a CNI (eg: flannel)&lt;br /&gt;
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml&lt;br /&gt;
Cluster Maintenance&lt;br /&gt;
Backing up etcd&lt;br /&gt;
https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/&lt;br /&gt;
&lt;br /&gt;
export ETCDCTL_API=3 &lt;br /&gt;
etcdctl --endpoints $ENDPOINTS \&lt;br /&gt;
  --cert=/etc/kubernetes/pki/etcd/server.crt \&lt;br /&gt;
  --key=/etc/kubernetes/pki/etcd/server.key \&lt;br /&gt;
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \&lt;br /&gt;
  snapshot save &amp;lt;output&amp;gt;&lt;br /&gt;
Endpoints can be found in:&lt;br /&gt;
&lt;br /&gt;
cat /etc/kubernetes/manifests/etcd.yaml | grep listen-client-url&lt;br /&gt;
Restoring ectd&lt;br /&gt;
Extract the db output with:&lt;br /&gt;
&lt;br /&gt;
export ETCDCTL_API=3 &lt;br /&gt;
etcdctl --endpoints $ENDPOINTS \&lt;br /&gt;
  --cert=/etc/kubernetes/pki/etcd/server.crt \&lt;br /&gt;
  --key=/etc/kubernetes/pki/etcd/server.key \&lt;br /&gt;
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \&lt;br /&gt;
  snapshot restore &amp;lt;output&amp;gt;&lt;br /&gt;
Then mount the output directory in the static pod: /etc/kubernetes/manifest/etcd.yaml&lt;br /&gt;
&lt;br /&gt;
    volumeMounts:&lt;br /&gt;
    - mountPath: &amp;lt;your-output-directory&amp;gt; # Change this&lt;br /&gt;
      name: etcd-data&lt;br /&gt;
Creating a new user&lt;br /&gt;
Create the keys:&lt;br /&gt;
&lt;br /&gt;
https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/#create-private-key&lt;br /&gt;
&lt;br /&gt;
openssl genrsa -out myuser.key 2048&lt;br /&gt;
openssl req -new -key myuser.key -out myuser.csr&lt;br /&gt;
Create a CSR k8s object: https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/#create-certificatesigningrequest&lt;br /&gt;
&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF&lt;br /&gt;
apiVersion: certificates.k8s.io/v1&lt;br /&gt;
kind: CertificateSigningRequest&lt;br /&gt;
metadata:&lt;br /&gt;
  name: myuser&lt;br /&gt;
spec:&lt;br /&gt;
  request: $(cat myuser.csr | base64 | tr -d &amp;quot;\n&amp;quot;)&lt;br /&gt;
  signerName: kubernetes.io/kube-apiserver-client&lt;br /&gt;
  expirationSeconds: 86400  # one day&lt;br /&gt;
  usages:&lt;br /&gt;
  - client auth&lt;br /&gt;
EOF&lt;br /&gt;
Save that as a csr.yaml file&lt;br /&gt;
&lt;br /&gt;
Apply it:&lt;br /&gt;
&lt;br /&gt;
k apply -f ./csr.yaml&lt;br /&gt;
Approve the CSR:&lt;br /&gt;
&lt;br /&gt;
https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/#approve-certificate-signing-request&lt;br /&gt;
&lt;br /&gt;
kubectl certificate approve myuser&lt;br /&gt;
Creating a role&lt;br /&gt;
k create role --help&lt;br /&gt;
&lt;br /&gt;
kubectl create role $dry --verb=&amp;lt;verb1,verb2,verb3&amp;gt; --resource=&amp;lt;resource1,resource2&amp;gt; &amp;lt;role&amp;gt;&lt;br /&gt;
Create role binding&lt;br /&gt;
k create rolebinding $dry --user=&amp;lt;user&amp;gt; --role=&amp;lt;role&amp;gt; &amp;lt;role-name&amp;gt;&lt;br /&gt;
Check using the auth can-i command&lt;br /&gt;
 k auth can-i create pods --as=&amp;lt;user&amp;gt;&lt;br /&gt;
Running upgrades&lt;br /&gt;
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/&lt;br /&gt;
&lt;br /&gt;
Upgrading the control plane:&lt;br /&gt;
&lt;br /&gt;
# Unhold&lt;br /&gt;
apt-mark unhold kubeadm&lt;br /&gt;
&lt;br /&gt;
# Update apt&lt;br /&gt;
apt-get update&lt;br /&gt;
&lt;br /&gt;
# Find packages&lt;br /&gt;
apt show kubeadm&lt;br /&gt;
&lt;br /&gt;
# Install what is available&lt;br /&gt;
apt-get install -y kubeadm=1.xx.0-00&lt;br /&gt;
&lt;br /&gt;
# Upgrade kubeadm&lt;br /&gt;
kubeadm upgrade plan&lt;br /&gt;
kubeadm apply v.1.xx.0&lt;br /&gt;
&lt;br /&gt;
# Drain the control plane&lt;br /&gt;
k drain &amp;lt;control-plane&amp;gt; --ignore-daemonsets&lt;br /&gt;
&lt;br /&gt;
# Install kubelet and kubectl updates&lt;br /&gt;
apt-get update &amp;amp;&amp;amp; apt-get install -y kubelet=1.26.x-00 kubectl=1.26.x-00 &amp;amp;&amp;amp; \&lt;br /&gt;
apt-mark hold kubelet kubectl&lt;br /&gt;
&lt;br /&gt;
# Restart kubelet&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl restart kubelet&lt;br /&gt;
&lt;br /&gt;
# Uncordon the node&lt;br /&gt;
k uncordon &amp;lt;control-plane&amp;gt;&lt;br /&gt;
Upgrading a worker node&lt;br /&gt;
&lt;br /&gt;
ssh worker-node&lt;br /&gt;
&lt;br /&gt;
# Note that there is a difference with this step&lt;br /&gt;
kubeadm upgrade node&lt;br /&gt;
&lt;br /&gt;
# Drain the node&lt;br /&gt;
k drain &amp;lt;node&amp;gt; --ignore-daemonsets&lt;br /&gt;
&lt;br /&gt;
# Update apt&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install -y kubelet=1.xx.x-xx kubectl=1.xx.x-xx&lt;br /&gt;
&lt;br /&gt;
# Restart the kubelet&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl restart kubelet&lt;br /&gt;
&lt;br /&gt;
# Uncordon the node&lt;br /&gt;
k uncordon &amp;lt;node&amp;gt;&lt;br /&gt;
Networking&lt;br /&gt;
Working with the ip command&lt;br /&gt;
Find ip address of nodes:&lt;br /&gt;
&lt;br /&gt;
# Get ip address through kubectl&lt;br /&gt;
k get no -o wide&lt;br /&gt;
&lt;br /&gt;
ssh &amp;lt;node&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Find address and mac address of node&lt;br /&gt;
ip a | grep -C 3 &amp;lt;ip-address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Find network device&lt;br /&gt;
ip link&lt;br /&gt;
https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/&lt;br /&gt;
&lt;br /&gt;
Find status of network device&lt;br /&gt;
ip link show &amp;lt;device&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# For example:&lt;br /&gt;
ip link show cni0&lt;br /&gt;
3: cni0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1450 qdisc noqueue state UP mode DEFAULT group default qlen 1000&lt;br /&gt;
    link/ether 1a:f8:aa:77:8f:53 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
Finding the IP address of the gateway out to the internet&lt;br /&gt;
ip route show default&lt;br /&gt;
default via 172.25.0.1 dev eth1 &lt;br /&gt;
Find the port of kube scheduler&lt;br /&gt;
netstat -nplt can be useful to find out what ports are open https://www.howtogeek.com/513003/how-to-use-netstat-on-linux/&lt;br /&gt;
&lt;br /&gt;
netstat -nplt | grep scheduler&lt;br /&gt;
tcp        0      0 127.0.0.1:10259         0.0.0.0:*               LISTEN      3317/kube-scheduler &lt;br /&gt;
In this case, we see that the scheduler is open on port 10259&lt;br /&gt;
&lt;br /&gt;
Network policies&lt;br /&gt;
Network policies let you specify ingress and egress rules.&lt;br /&gt;
&lt;br /&gt;
For example, this will only allow http traffic from anywhere into port 80.&lt;br /&gt;
&lt;br /&gt;
https://kubernetes.io/docs/concepts/services-networking/network-policies/&lt;br /&gt;
&lt;br /&gt;
apiVersion: networking.k8s.io/v1&lt;br /&gt;
kind: NetworkPolicy&lt;br /&gt;
metadata:&lt;br /&gt;
  name: test-network-policy&lt;br /&gt;
  namespace: default&lt;br /&gt;
spec:&lt;br /&gt;
  podSelector:&lt;br /&gt;
    matchLabels:&lt;br /&gt;
      role: db # Lets you specify labels&lt;br /&gt;
      run: pod-name # Depends on the label of your pod&lt;br /&gt;
  policyTypes:&lt;br /&gt;
    - Ingress&lt;br /&gt;
  ingress:&lt;br /&gt;
    - ports:&lt;br /&gt;
        - protocol: TCP&lt;br /&gt;
          port: 80&lt;br /&gt;
Services&lt;br /&gt;
https://kubernetes.io/docs/concepts/services-networking/service/&lt;br /&gt;
&lt;br /&gt;
CoreDNS&lt;br /&gt;
https://kubernetes.io/docs/concepts/services-networking/service/#dns&lt;br /&gt;
&lt;br /&gt;
Using nslookup to validate the service is reachable from a pod&lt;br /&gt;
Get the service:&lt;br /&gt;
&lt;br /&gt;
k describe svc web-service &lt;br /&gt;
Name:              web-service&lt;br /&gt;
Namespace:         default&lt;br /&gt;
Labels:            &amp;lt;none&amp;gt;&lt;br /&gt;
Annotations:       &amp;lt;none&amp;gt;&lt;br /&gt;
Selector:          label=value  # Pods with this label will receive this service&lt;br /&gt;
Type:              ClusterIP&lt;br /&gt;
IP Family Policy:  SingleStack&lt;br /&gt;
IP Families:       IPv4&lt;br /&gt;
IP:                10.99.70.136&lt;br /&gt;
IPs:               10.99.70.136&lt;br /&gt;
Port:              &amp;lt;unset&amp;gt;  80/TCP&lt;br /&gt;
TargetPort:        80/TCP&lt;br /&gt;
Endpoints:         10.244.0.5:80&lt;br /&gt;
Session Affinity:  None&lt;br /&gt;
Events:            &amp;lt;none&amp;gt;&lt;br /&gt;
Exec/ run into a pod:&lt;br /&gt;
&lt;br /&gt;
k exec -ti &amp;lt;pod&amp;gt;&lt;br /&gt;
Verify that you can look up the service with nslookup&lt;br /&gt;
&lt;br /&gt;
nslookup web-service&lt;br /&gt;
Name:      web-service&lt;br /&gt;
Address 1: 10.99.70.136 web-service.default.svc.cluster.local&lt;br /&gt;
Port vs target port&lt;br /&gt;
This is usually a confusing thing&lt;br /&gt;
&lt;br /&gt;
Port: is the incoming port to the service&lt;br /&gt;
&lt;br /&gt;
TargetPort: is the target port pointing to a deployment/pods that the service forwards connections to.&lt;br /&gt;
&lt;br /&gt;
Note: A Service can map any incoming port to a targetPort. By default and for convenience, the targetPort is set to the same value as the port field.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: Service&lt;br /&gt;
metadata:&lt;br /&gt;
  name: mysql-service&lt;br /&gt;
  namespace: beta&lt;br /&gt;
spec:&lt;br /&gt;
    ports:&lt;br /&gt;
    - port: 3306&lt;br /&gt;
      targetPort: 3306&lt;br /&gt;
Common troubleshooting tips&lt;br /&gt;
Pods not scheduling? Check that pods in kube-system are running correctly.t&lt;br /&gt;
&lt;br /&gt;
k get po -n kube-system&lt;br /&gt;
Would you like to know the metrics per node?&lt;br /&gt;
&lt;br /&gt;
k top node&lt;br /&gt;
Metrics per pod&lt;br /&gt;
&lt;br /&gt;
k top pod --containers=true&lt;br /&gt;
Kubelet not running? Restart it:&lt;br /&gt;
&lt;br /&gt;
# Check that the config is correct&lt;br /&gt;
cat /etc/systemd/system/kubelet.service.d/10-kubeadm-conf&lt;br /&gt;
&lt;br /&gt;
# Check the logs&lt;br /&gt;
journalctl -u kubelet&lt;br /&gt;
&lt;br /&gt;
# Restart&lt;br /&gt;
systemctl restart kubelet&lt;br /&gt;
Side note, what is systemd?https://en.wikipedia.org/wiki/Systemd,&lt;br /&gt;
&lt;br /&gt;
Side-side note: https://en.wikipedia.org/wiki/System_D&lt;br /&gt;
&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
</feed>