<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.csclub.uwaterloo.ca/index.php?action=history&amp;feed=atom&amp;title=Kubernetes_User_Guide</id>
	<title>Kubernetes User Guide - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.csclub.uwaterloo.ca/index.php?action=history&amp;feed=atom&amp;title=Kubernetes_User_Guide"/>
	<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Kubernetes_User_Guide&amp;action=history"/>
	<updated>2026-09-14T09:29:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Kubernetes_User_Guide&amp;diff=5694&amp;oldid=prev</id>
		<title>A2lianto: removed &quot;template:info&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Kubernetes_User_Guide&amp;diff=5694&amp;oldid=prev"/>
		<updated>2026-09-11T03:24:47Z</updated>

		<summary type="html">&lt;p&gt;removed &amp;quot;template:info&amp;quot;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&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 22:24, 10 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&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 class=&quot;diff-marker&quot;&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;= Kubernetes =&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&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;= Kubernetes =&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&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;We are running a [https://kubernetes.io/ Kubernetes] cluster on-prem on Tahini and Teriyaki servers. Each member gets their own namespace in which they can deploy their applications.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&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;We are running a [https://kubernetes.io/ Kubernetes] cluster on-prem on Tahini and Teriyaki servers. Each member gets their own namespace in which they can deploy their applications.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;br /&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;{{Info|If you wish to learn about how to operate a Kubernetes cluster, you may create your own cluster using software such as [https://k3s.io/ k3s]. If all you want to do is run some containerized apps, then we suggest that you use our cluster instead, since it has far more resources.}}&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&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;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&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;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&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;== Account resource limits ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&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;== Account resource limits ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&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;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&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;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&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;If you wish to acquire more resources, please send an email to the Systems Committee with a brief justification.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&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;If you wish to acquire more resources, please send an email to the Systems Committee with a brief justification.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;br /&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;{{Info|LoadBalancer services are disabled because we handle external traffic through Traefik, which we manage ourselves. See [[#Exposing your app|Exposing your app]] below.}}&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&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;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&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;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&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;== Create a new namespace ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&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;== Create a new namespace ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>A2lianto</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Kubernetes_User_Guide&amp;diff=5693&amp;oldid=prev</id>
		<title>A2lianto: Created Kubernetes User Guide for new k3s cluster</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Kubernetes_User_Guide&amp;diff=5693&amp;oldid=prev"/>
		<updated>2026-09-11T03:24:17Z</updated>

		<summary type="html">&lt;p&gt;Created Kubernetes User Guide for new k3s cluster&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Kubernetes =&lt;br /&gt;
We are running a [https://kubernetes.io/ Kubernetes] cluster on-prem on Tahini and Teriyaki servers. Each member gets their own namespace in which they can deploy their applications.&lt;br /&gt;
&lt;br /&gt;
{{Info|If you wish to learn about how to operate a Kubernetes cluster, you may create your own cluster using software such as [https://k3s.io/ k3s]. If all you want to do is run some containerized apps, then we suggest that you use our cluster instead, since it has far more resources.}}&lt;br /&gt;
&lt;br /&gt;
== Account resource limits ==&lt;br /&gt;
As of August 23, 2026, the per-namespace resource limits for each member are:&lt;br /&gt;
&lt;br /&gt;
* 40 pods&lt;br /&gt;
* 10 jobs&lt;br /&gt;
* 10 cron jobs&lt;br /&gt;
* 25 GB of Persistent Volume Claims&lt;br /&gt;
* 5 NodePort services&lt;br /&gt;
&lt;br /&gt;
If you wish to acquire more resources, please send an email to the Systems Committee with a brief justification.&lt;br /&gt;
&lt;br /&gt;
{{Info|LoadBalancer services are disabled because we handle external traffic through Traefik, which we manage ourselves. See [[#Exposing your app|Exposing your app]] below.}}&lt;br /&gt;
&lt;br /&gt;
== Create a new namespace ==&lt;br /&gt;
Log into a general-use machine and run the following:&amp;lt;pre&amp;gt;&lt;br /&gt;
ceo k8s account activate&lt;br /&gt;
&amp;lt;/pre&amp;gt;This will create a new Kubernetes namespace with the name &amp;lt;code&amp;gt;csc-username&amp;lt;/code&amp;gt;. A new kubeconfig file will be placed into &amp;lt;code&amp;gt;~/.kube/config&amp;lt;/code&amp;gt;. Your kubeconfig points at your namespace by default, so all commands you run will land there unless you specify otherwise.&lt;br /&gt;
&lt;br /&gt;
To verify that everything is working, run:&amp;lt;pre&amp;gt;&lt;br /&gt;
kubectl cluster-info&lt;br /&gt;
&amp;lt;/pre&amp;gt;The output should look something like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
Kubernetes control plane is running at https://129.97.134.5:6443&lt;br /&gt;
CoreDNS is running at https://129.97.134.5:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
Say you have a Dockerized app and the image is available on a public registry such as [https://hub.docker.com/ Docker Hub] or [https://quay.io/ Quay.io]. Here is the minimum you need to get your app running in the cluster.&lt;br /&gt;
&lt;br /&gt;
First, create a Deployment:&amp;lt;pre&amp;gt;&lt;br /&gt;
kubectl create deployment demo --image=ctdalek/myapp --port=80&lt;br /&gt;
&amp;lt;/pre&amp;gt;Replace &amp;lt;code&amp;gt;--image&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--port&amp;lt;/code&amp;gt; as needed.&lt;br /&gt;
&lt;br /&gt;
If your app does not need to be publicly accessible, you are done. Otherwise, create a Service to expose your Deployment:&amp;lt;pre&amp;gt;&lt;br /&gt;
kubectl expose deployment demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;Then create an Ingress to expose the Service to the outside world:&amp;lt;pre&amp;gt;&lt;br /&gt;
kubectl create ingress demo --rule=&amp;#039;ctdalek.k8s.csclub.cloud/*=demo:80&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;Your app will be accessible at &amp;lt;code&amp;gt;https://ctdalek.k8s.csclub.cloud&amp;lt;/code&amp;gt;. If you wish to use a custom domain, please contact the Systems Committee.&lt;br /&gt;
&lt;br /&gt;
For non-web apps, use a NodePort instead of an Ingress. NodePorts are only accessible from on-campus.&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
Kubernetes is well documented, so we will not repeat it here:&lt;br /&gt;
&lt;br /&gt;
* [https://kubernetes.io/docs/home/ Kubernetes documentation]&lt;br /&gt;
* [https://kubernetes.io/docs/tutorials/ Kubernetes tutorials]&lt;br /&gt;
* [https://kubectl.docs.kubernetes.io/guides/ kubectl guides]&lt;br /&gt;
&lt;br /&gt;
You may also contact the [mailto:syscom@csclub.uwaterloo.ca Systems Committee] if something is not working the way you expect.&lt;/div&gt;</summary>
		<author><name>A2lianto</name></author>
	</entry>
</feed>