<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=DistOS_2021F_Experience_1</id>
	<title>DistOS 2021F Experience 1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=DistOS_2021F_Experience_1"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;action=history"/>
	<updated>2026-06-02T22:36:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23360&amp;oldid=prev</id>
		<title>Soma at 20:57, 30 September 2021</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23360&amp;oldid=prev"/>
		<updated>2021-09-30T20:57:05Z</updated>

		<summary type="html">&lt;p&gt;&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 20:57, 30 September 2021&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 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;This experience is due November 2, 2021&lt;/div&gt;&lt;/td&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: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This experience is due &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/ins&gt;November 2, 2021&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;.&lt;/ins&gt;&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;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;= Introduction =&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;= Introduction =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23359&amp;oldid=prev</id>
		<title>Soma at 20:56, 30 September 2021</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23359&amp;oldid=prev"/>
		<updated>2021-09-30T20:56:55Z</updated>

		<summary type="html">&lt;p&gt;&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 20:56, 30 September 2021&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; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&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: #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;This experience is due November 2, 2021&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&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: #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;&lt;/ins&gt;&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;= Introduction =&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;= Introduction =&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;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;/table&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23340&amp;oldid=prev</id>
		<title>Housedhorse at 17:50, 26 September 2021</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23340&amp;oldid=prev"/>
		<updated>2021-09-26T17:50:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;amp;diff=23340&amp;amp;oldid=23339&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Housedhorse</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23339&amp;oldid=prev</id>
		<title>Soma at 17:37, 26 September 2021</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23339&amp;oldid=prev"/>
		<updated>2021-09-26T17:37:55Z</updated>

		<summary type="html">&lt;p&gt;&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 17:37, 26 September 2021&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 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;Getting Started with Kubernetes =&lt;/div&gt;&lt;/td&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: #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;= &lt;/ins&gt;Getting Started with 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;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;In this implementation experience, you will be configuring and deploying a simple “hello world” Kubernetes cluster using &amp;lt;code&amp;gt;minikube&amp;lt;/code&amp;gt;. While your cluster is not yet truly “distributed”, it behaves just as a real Kubernetes cluster would. For more information on Kubernetes configuration, you may wish to consult the [https://kubernetes.io/docs/concepts/ official documentation]. Links to specific documentation items will also be provided as hints later on in this document.&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;In this implementation experience, you will be configuring and deploying a simple “hello world” Kubernetes cluster using &amp;lt;code&amp;gt;minikube&amp;lt;/code&amp;gt;. While your cluster is not yet truly “distributed”, it behaves just as a real Kubernetes cluster would. For more information on Kubernetes configuration, you may wish to consult the [https://kubernetes.io/docs/concepts/ official documentation]. Links to specific documentation items will also be provided as hints later on in this document.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23338&amp;oldid=prev</id>
		<title>Soma at 17:37, 26 September 2021</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23338&amp;oldid=prev"/>
		<updated>2021-09-26T17:37:39Z</updated>

		<summary type="html">&lt;p&gt;&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 17:37, 26 September 2021&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 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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= COMP4000 Implementation Experience 1: &lt;/del&gt;Getting Started with Kubernetes =&lt;/div&gt;&lt;/td&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: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Getting Started with 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;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;In this implementation experience, you will be configuring and deploying a simple “hello world” Kubernetes cluster using &amp;lt;code&amp;gt;minikube&amp;lt;/code&amp;gt;. While your cluster is not yet truly “distributed”, it behaves just as a real Kubernetes cluster would. For more information on Kubernetes configuration, you may wish to consult the [https://kubernetes.io/docs/concepts/ official documentation]. Links to specific documentation items will also be provided as hints later on in this document.&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;In this implementation experience, you will be configuring and deploying a simple “hello world” Kubernetes cluster using &amp;lt;code&amp;gt;minikube&amp;lt;/code&amp;gt;. While your cluster is not yet truly “distributed”, it behaves just as a real Kubernetes cluster would. For more information on Kubernetes configuration, you may wish to consult the [https://kubernetes.io/docs/concepts/ official documentation]. Links to specific documentation items will also be provided as hints later on in this document.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23337&amp;oldid=prev</id>
		<title>Soma: /* Receiving Your Grade */</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23337&amp;oldid=prev"/>
		<updated>2021-09-26T17:36:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Receiving Your Grade&lt;/span&gt;&lt;/span&gt;&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 17:36, 26 September 2021&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-l19&quot;&gt;Line 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&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;# An opportunity to reflect on your experiences with Kubernetes and make connections to overall themes in the course.&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;# An opportunity to reflect on your experiences with Kubernetes and make connections to overall themes in the course.&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;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; 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;Students are expected to complete Part 1 and Part 3 to get a grade of at most B. Part 2 is optional, but must be completed to receive a grade of A- or higher. Marks will be deducted for insufficient explanations or answers that demonstrate a lack of effort. By this logic, you should have a fairly clear idea of what grade you will receive when you submit this experience, based on how much effort you put in.&lt;/div&gt;&lt;/td&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: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Students are expected to complete Part 1 and Part 3 to get a grade of at most &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a &lt;/ins&gt;B&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;+&lt;/ins&gt;. Part 2 is optional, but must be completed to receive a grade of A- or higher. Marks will be deducted for insufficient explanations or answers that demonstrate a lack of effort. By this logic, you should have a fairly clear idea of what grade you will receive when you submit this experience, based on how much effort you put in.&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;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;== Getting Started ==&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;== Getting Started ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23336&amp;oldid=prev</id>
		<title>Housedhorse at 17:34, 26 September 2021</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23336&amp;oldid=prev"/>
		<updated>2021-09-26T17:34:58Z</updated>

		<summary type="html">&lt;p&gt;&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 17:34, 26 September 2021&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-l50&quot;&gt;Line 50:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 50:&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;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The simple web server running behind our &amp;lt;code&amp;gt;NodePort&amp;lt;/code&amp;gt; service exposes a convenient end point called &amp;lt;code&amp;gt;/crashme&amp;lt;/code&amp;gt; that bricks the server. Try calling this end point several times like &amp;lt;code&amp;gt;for i in $(seq 1 20); do curl &amp;amp;lt;IP address here&amp;amp;gt;/crashme; done&amp;lt;/code&amp;gt;, then try interacting with the servers after a few moments.&amp;lt;/p&amp;gt;&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;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The simple web server running behind our &amp;lt;code&amp;gt;NodePort&amp;lt;/code&amp;gt; service exposes a convenient end point called &amp;lt;code&amp;gt;/crashme&amp;lt;/code&amp;gt; that bricks the server. Try calling this end point several times like &amp;lt;code&amp;gt;for i in $(seq 1 20); do curl &amp;amp;lt;IP address here&amp;amp;gt;/crashme; done&amp;lt;/code&amp;gt;, then try interacting with the servers after a few moments.&amp;lt;/p&amp;gt;&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;&amp;lt;p&amp;gt;Repeat the same experiment, but this time run &amp;lt;code&amp;gt;kubectl get pods -w&amp;lt;/code&amp;gt; in another terminal to watch the status of your pods in real time. What do you think is happening? Try to come up with an explanation for the behaviour you see.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&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;&amp;lt;p&amp;gt;Repeat the same experiment, but this time run &amp;lt;code&amp;gt;kubectl get pods -w&amp;lt;/code&amp;gt; in another terminal to watch the status of your pods in real time. What do you think is happening? Try to come up with an explanation for the behaviour you see.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&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;div&gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Another end point &amp;lt;code&amp;gt;/count&amp;lt;/code&amp;gt; returns a count of how many GET requests the server has processed. Try spamming our &amp;lt;code&amp;gt;NodePort&amp;lt;/code&amp;gt; with requests to &amp;lt;code&amp;gt;/count&amp;lt;/code&amp;gt; like &amp;lt;code&amp;gt;for i in $(seq    1 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;10000&lt;/del&gt;); do curl &amp;amp;lt;IP address here&amp;amp;gt;/count; done&amp;lt;/code&amp;gt;. What do you notice about the count for each server? Try to explain what you see.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&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: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Another end point &amp;lt;code&amp;gt;/count&amp;lt;/code&amp;gt; returns a count of how many GET requests the server has processed. Try spamming our &amp;lt;code&amp;gt;NodePort&amp;lt;/code&amp;gt; with requests to &amp;lt;code&amp;gt;/count&amp;lt;/code&amp;gt; like &amp;lt;code&amp;gt;for i in $(seq    1 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;4000&lt;/ins&gt;); do curl &amp;amp;lt;IP address here&amp;amp;gt;/count; done&amp;lt;/code&amp;gt;. What do you notice about the count for each server? Try to explain what you see.&amp;lt;/p&amp;gt;&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;&amp;lt;p&amp;gt;Hint: Think all the way back to the second question.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&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;&amp;lt;p&amp;gt;Hint: Think all the way back to the second question.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&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;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Try scaling up the replication count of &amp;lt;code&amp;gt;comp4000server&amp;lt;/code&amp;gt;. You can do this using &amp;lt;code&amp;gt;kubectl scale deployment comp4000server --replicas &amp;amp;lt;n&amp;amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;&amp;amp;lt;n&amp;amp;gt;&amp;lt;/code&amp;gt; is a number of your choosing. Try this a few different times with different numbers and examine the output of &amp;lt;code&amp;gt;kubectl get pods&amp;lt;/code&amp;gt; each time. You might also want to try repeating some of the earlier exercises with your newly scaled deployment.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&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;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Try scaling up the replication count of &amp;lt;code&amp;gt;comp4000server&amp;lt;/code&amp;gt;. You can do this using &amp;lt;code&amp;gt;kubectl scale deployment comp4000server --replicas &amp;amp;lt;n&amp;amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;&amp;amp;lt;n&amp;amp;gt;&amp;lt;/code&amp;gt; is a number of your choosing. Try this a few different times with different numbers and examine the output of &amp;lt;code&amp;gt;kubectl get pods&amp;lt;/code&amp;gt; each time. You might also want to try repeating some of the earlier exercises with your newly scaled deployment.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Housedhorse</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23335&amp;oldid=prev</id>
		<title>Housedhorse: Add link to deployment manifest</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23335&amp;oldid=prev"/>
		<updated>2021-09-26T17:28:31Z</updated>

		<summary type="html">&lt;p&gt;Add link to deployment manifest&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 17:28, 26 September 2021&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-l28&quot;&gt;Line 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 28:&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 haven’t already, &amp;#039;&amp;#039;&amp;#039;change your password&amp;#039;&amp;#039;&amp;#039; with the &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; command.&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 haven’t already, &amp;#039;&amp;#039;&amp;#039;change your password&amp;#039;&amp;#039;&amp;#039; with the &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; command.&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;# Set up a simple minikube cluster using &amp;lt;code&amp;gt;minikube start&amp;lt;/code&amp;gt;. After running this command, you should see some information printed to your terminal as minikube sets up your environment. Let the command run to completion.&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;# Set up a simple minikube cluster using &amp;lt;code&amp;gt;minikube start&amp;lt;/code&amp;gt;. After running this command, you should see some information printed to your terminal as minikube sets up your environment. Let the command run to completion.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&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: #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;# Download the &amp;lt;code&amp;gt;deployment.yml&amp;lt;/code&amp;gt; file to your VM using &amp;lt;code&amp;gt;wget    https://homeostasis.scs.carleton.ca/~soma/distos/2021f/experiences/deployment.yml&amp;lt;/code&amp;gt;.&lt;/ins&gt;&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;# Deploy the experience 1 configuration by running &amp;lt;code&amp;gt;kubectl apply -f deployment.yml&amp;lt;/code&amp;gt;. This should download some container images and create the necessary Kubernetes API objects to run our simple “distributed” application.&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;# Deploy the experience 1 configuration by running &amp;lt;code&amp;gt;kubectl apply -f deployment.yml&amp;lt;/code&amp;gt;. This should download some container images and create the necessary Kubernetes API objects to run our simple “distributed” application.&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;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;/table&gt;</summary>
		<author><name>Housedhorse</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23334&amp;oldid=prev</id>
		<title>Housedhorse: Created page with &quot;= COMP4000 Implementation Experience 1: Getting Started with Kubernetes =  In this implementation experience, you will be configuring and deploying a simple “hello world”...&quot;</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_Experience_1&amp;diff=23334&amp;oldid=prev"/>
		<updated>2021-09-26T17:24:37Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= COMP4000 Implementation Experience 1: Getting Started with Kubernetes =  In this implementation experience, you will be configuring and deploying a simple “hello world”...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= COMP4000 Implementation Experience 1: Getting Started with Kubernetes =&lt;br /&gt;
&lt;br /&gt;
In this implementation experience, you will be configuring and deploying a simple “hello world” Kubernetes cluster using &amp;lt;code&amp;gt;minikube&amp;lt;/code&amp;gt;. While your cluster is not yet truly “distributed”, it behaves just as a real Kubernetes cluster would. For more information on Kubernetes configuration, you may wish to consult the [https://kubernetes.io/docs/concepts/ official documentation]. Links to specific documentation items will also be provided as hints later on in this document.&lt;br /&gt;
&lt;br /&gt;
With the exception of Part 2, completing this experience shouldn’t take more than a couple of hours. Feel free to collaborate with other students if you get stuck. However, &amp;#039;&amp;#039;&amp;#039;you must acknowledge any collaboration&amp;#039;&amp;#039;&amp;#039;. Additionally, &amp;#039;&amp;#039;&amp;#039;copying and pasting or simply “changing up” each other’s answers will be treated as an academic integrity violation&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Submissions ==&lt;br /&gt;
&lt;br /&gt;
Your experience report should be submitted as a PDF file on Brightspace, written in &amp;#039;&amp;#039;&amp;#039;paragraph form&amp;#039;&amp;#039;&amp;#039;. Code snippets or screen shots are allowed to augment your prose but are not required. We will post a submission link on Brightspace within the next few days.&lt;br /&gt;
&lt;br /&gt;
The experience report is &amp;#039;&amp;#039;&amp;#039;due on November 2nd, 2021&amp;#039;&amp;#039;&amp;#039;. However, it may be a good idea to get started as quickly as possible, especially if you plan on doing an implementation-focused final project.&lt;br /&gt;
&lt;br /&gt;
== Receiving Your Grade ==&lt;br /&gt;
&lt;br /&gt;
This experience is broken up into three parts:&lt;br /&gt;
&lt;br /&gt;
# A series of easy tasks designed to get you familiar with setting up a simple Kubernetes cluster.&lt;br /&gt;
# A harder challenge that involves you deploying your own image in your cluster to interact with a simple API.&lt;br /&gt;
# An opportunity to reflect on your experiences with Kubernetes and make connections to overall themes in the course.&lt;br /&gt;
&lt;br /&gt;
Students are expected to complete Part 1 and Part 3 to get a grade of at most B. Part 2 is optional, but must be completed to receive a grade of A- or higher. Marks will be deducted for insufficient explanations or answers that demonstrate a lack of effort. By this logic, you should have a fairly clear idea of what grade you will receive when you submit this experience, based on how much effort you put in.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
To get started, you will need to run a few commands on your OpenStack course VM to set up the environment. If you are not yet on OpenStack, please get set up as quickly as possible. We have a [https://homeostasis.scs.carleton.ca/wiki/index.php/DistOS_2021F:_Using_Openstack detailed setup guide available] if you need assistance.&lt;br /&gt;
&lt;br /&gt;
# SSH into your VM using your preferred SSH client. Remember that your username and password are both &amp;lt;code&amp;gt;student&amp;lt;/code&amp;gt; by default.&lt;br /&gt;
# If you haven’t already, &amp;#039;&amp;#039;&amp;#039;change your password&amp;#039;&amp;#039;&amp;#039; with the &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; command.&lt;br /&gt;
# Set up a simple minikube cluster using &amp;lt;code&amp;gt;minikube start&amp;lt;/code&amp;gt;. After running this command, you should see some information printed to your terminal as minikube sets up your environment. Let the command run to completion.&lt;br /&gt;
# Deploy the experience 1 configuration by running &amp;lt;code&amp;gt;kubectl apply -f deployment.yml&amp;lt;/code&amp;gt;. This should download some container images and create the necessary Kubernetes API objects to run our simple “distributed” application.&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Easy) ==&lt;br /&gt;
&lt;br /&gt;
Follow the instructions for each of the following numbered tasks. Make an effort to answer the accompanying questions, but more importantly please note down all of your observations and describe what you did for each task. You should also feel free to write down whatever questions you may have about a given task.&lt;br /&gt;
&lt;br /&gt;
To achieve the best possible grade in this section, you must demonstrate that you have made an effort to understand the results of each task. (Note that an effort does not strictly mean a full understanding; it is okay to have questions!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Kubernetes deploys Linux containers as “Pods”, which form an even higher-level abstraction around the container itself. In addition to Pods, Kubernetes supports several other API objects that abstract over various distributed systems concepts. The simple deployment you have installed uses a few of these API objects.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Using &amp;lt;code&amp;gt;kubectl get &amp;amp;lt;object type&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kubectl explain &amp;amp;lt;object type&amp;amp;gt;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;kubectl describe &amp;amp;lt;object name&amp;amp;gt;&amp;lt;/code&amp;gt;, identify at least three different kinds of API object that are used in our deployment and briefly describe what they do. You can refer to &amp;lt;code&amp;gt;kubectl --help&amp;lt;/code&amp;gt; as needed to explain what these commands do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Hint 1: Some resources are encapsulated by multiple layers of abstraction. Each “layer” counts as a unique type of object for the purposes of this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Hint 2: The command &amp;lt;code&amp;gt;kubectl api-resources&amp;lt;/code&amp;gt; will enumerate a full list of all supported API objects. You may also wish to consult [https://kubernetes.io/docs/concepts/workloads/pods/ the relevant documentation] if you are stuck.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Hint 3: You may want to have a look at the contents of the &amp;lt;code&amp;gt;deployment.yml&amp;lt;/code&amp;gt; file.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Run &amp;lt;code&amp;gt;kubectl get pods&amp;lt;/code&amp;gt; to see a list of the pods that are running in your cluster. You should notice several &amp;lt;code&amp;gt;comp4000server&amp;lt;/code&amp;gt; pods and one &amp;lt;code&amp;gt;comp4000client&amp;lt;/code&amp;gt; pod. Spawn an interactive shell into the &amp;lt;code&amp;gt;comp4000client&amp;lt;/code&amp;gt; pod using &amp;lt;code&amp;gt;kubectl exec comp4000client -it    -- /bin/sh&amp;lt;/code&amp;gt;. Examine the layout of your container’s filesystem. What files and directories exist? Do you think these files exist on your VM or somewhere else? What commands can you run?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Hint: Try running &amp;lt;code&amp;gt;cd ..&amp;lt;/code&amp;gt; to leave the empty &amp;lt;code&amp;gt;/client&amp;lt;/code&amp;gt; directory.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Our cluster exposes the &amp;lt;code&amp;gt;comp4000server&amp;lt;/code&amp;gt; pods using a &amp;lt;code&amp;gt;NodePort&amp;lt;/code&amp;gt; service. To find its IP address, start by spawning another terminal by starting another SSH session. (You should probably have &amp;#039;&amp;#039;at least&amp;#039;&amp;#039; two terminals open for the rest of this experience.) In your second terminal, run &amp;lt;code&amp;gt;kubectl get services&amp;lt;/code&amp;gt; and copy the &amp;lt;code&amp;gt;CLUSTER-IP&amp;lt;/code&amp;gt; next to the &amp;lt;code&amp;gt;NodePort&amp;lt;/code&amp;gt; service.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;From inside your &amp;lt;code&amp;gt;comp4000client&amp;lt;/code&amp;gt; container, use &amp;lt;code&amp;gt;curl &amp;amp;lt;IP address here&amp;amp;gt;&amp;lt;/code&amp;gt; to send a GET request to the &amp;lt;code&amp;gt;NodePort&amp;lt;/code&amp;gt; service. Repeat the same command a few different times. What do you notice about the output? Explain.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Hint: Try running &amp;lt;code&amp;gt;kubectl get pods&amp;lt;/code&amp;gt; again to refresh your memory about the topology of our cluster.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The simple web server running behind our &amp;lt;code&amp;gt;NodePort&amp;lt;/code&amp;gt; service exposes a convenient end point called &amp;lt;code&amp;gt;/crashme&amp;lt;/code&amp;gt; that bricks the server. Try calling this end point several times like &amp;lt;code&amp;gt;for i in $(seq 1 20); do curl &amp;amp;lt;IP address here&amp;amp;gt;/crashme; done&amp;lt;/code&amp;gt;, then try interacting with the servers after a few moments.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Repeat the same experiment, but this time run &amp;lt;code&amp;gt;kubectl get pods -w&amp;lt;/code&amp;gt; in another terminal to watch the status of your pods in real time. What do you think is happening? Try to come up with an explanation for the behaviour you see.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Another end point &amp;lt;code&amp;gt;/count&amp;lt;/code&amp;gt; returns a count of how many GET requests the server has processed. Try spamming our &amp;lt;code&amp;gt;NodePort&amp;lt;/code&amp;gt; with requests to &amp;lt;code&amp;gt;/count&amp;lt;/code&amp;gt; like &amp;lt;code&amp;gt;for i in $(seq    1 10000); do curl &amp;amp;lt;IP address here&amp;amp;gt;/count; done&amp;lt;/code&amp;gt;. What do you notice about the count for each server? Try to explain what you see.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Hint: Think all the way back to the second question.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Try scaling up the replication count of &amp;lt;code&amp;gt;comp4000server&amp;lt;/code&amp;gt;. You can do this using &amp;lt;code&amp;gt;kubectl scale deployment comp4000server --replicas &amp;amp;lt;n&amp;amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;&amp;amp;lt;n&amp;amp;gt;&amp;lt;/code&amp;gt; is a number of your choosing. Try this a few different times with different numbers and examine the output of &amp;lt;code&amp;gt;kubectl get pods&amp;lt;/code&amp;gt; each time. You might also want to try repeating some of the earlier exercises with your newly scaled deployment.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Part 2: Deploying a Custom Container Image (Hard) ==&lt;br /&gt;
&lt;br /&gt;
The simple web server for this experience has one last end point: &amp;lt;code&amp;gt;/printerfacts&amp;lt;/code&amp;gt;. Making an HTTP GET request to this end point returns some totally non-suspicious facts about printers. Your task is to write a simple client application (in any language of your choosing) to consume the &amp;lt;code&amp;gt;printerfacts&amp;lt;/code&amp;gt; API in some way. Feel free to be as creative as you like.&lt;br /&gt;
&lt;br /&gt;
Once you have written your application, containerize it and deploy it to your cluster in any way you see fit. For example, you may wish to replicate it, make it stateful (e.g. persist a simple database), or expose it to the outside world using a &amp;lt;code&amp;gt;LoadBalancer&amp;lt;/code&amp;gt; service.&lt;br /&gt;
&lt;br /&gt;
Tell us about what you did and how you did it. In particular, we want to hear about the parts you had difficulty with, any ideas you had that didn’t pan out, what ended up working, and how your deployment fits together with the rest of the cluster.&lt;br /&gt;
&lt;br /&gt;
Points for this question will be awarded based on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: lower-alpha;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The sophistication of your deployment. (Challenge yourself!)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The quality of your explanation.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are some hints to help you get started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: lower-alpha;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;When you are creating your container image, you need to take extra care to ensure Kubernetes uses your local image. To do this, run &amp;lt;code&amp;gt;eval $(minikube docker-env)&amp;lt;/code&amp;gt; before running any &amp;lt;code&amp;gt;docker&amp;lt;/code&amp;gt; commands in your shell. In your &amp;lt;code&amp;gt;deployment.yml&amp;lt;/code&amp;gt;, set &amp;lt;code&amp;gt;imagePullPolicy: Never&amp;lt;/code&amp;gt; under the &amp;lt;code&amp;gt;container&amp;lt;/code&amp;gt; field to force it to use your local image.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You can create a new container image by writing a Dockerfile for it and running &amp;lt;code&amp;gt;docker    build -t &amp;amp;lt;name&amp;amp;gt; .&amp;lt;/code&amp;gt; to build it.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You can modify the &amp;lt;code&amp;gt;deployment.yml&amp;lt;/code&amp;gt; file to create your API object, then re-deploy it by running the same &amp;lt;code&amp;gt;kubectl apply -f&amp;lt;/code&amp;gt; command from earlier. Feel free to copy-paste and/or modify any of the existing configuration.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Part 3: Reflection ==&lt;br /&gt;
&lt;br /&gt;
Summarize your experience with Kubernetes in a few paragraphs (both the good and the bad). What concepts do you see reflected here from the research papers we have read thus far? After having some hands on experience with a distributed system technology, have any of your opinions or initial assumptions changed? Feel free to list any other thoughts you have.&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The idea for the printerfacts API comes from Christine Dodrill’s [https://christine.website/blog/dev-printerfact-2021-04-17 wonderful blog post].&lt;/div&gt;</summary>
		<author><name>Housedhorse</name></author>
	</entry>
</feed>