Compare commits

...

2 Commits

Author SHA1 Message Date
github-actions ed62be6ddf Deployed 19817c8 with MkDocs version: 1.2.3 2022-12-27 11:40:31 +00:00
github-actions da6f6d0dda Deployed 4c740ce with MkDocs version: 1.2.3 2022-12-27 11:36:35 +00:00
5 changed files with 114 additions and 112 deletions

View File

@ -2107,7 +2107,7 @@ if err:
<p>Now lets understand what operating system kernel does when the <a href="https://man7.org/linux/man-pages/man3/gethostbyname.3.html">gethostbyname</a> function is called. The Linux operating system looks at the file <a href="https://man7.org/linux/man-pages/man5/nsswitch.conf.5.html">/etc/nsswitch.conf</a> file which usually has a line</p>
<pre><code class="language-bash">hosts: files dns
</code></pre>
<p>This line means the OS has to look up first in file (/etc/hosts) and then use DNS protocol to do the resolution if there is no match in /etc/hosts. </p>
<p>This line means the OS has to look up first in file (/etc/hosts) and then use DNS protocol to do the resolution if there is no match in /etc/hosts.</p>
<p>The file /etc/hosts is of format</p>
<p>IPAddress FQDN [FQDN].*</p>
<pre><code class="language-bash">127.0.0.1 localhost.localdomain localhost
@ -2125,7 +2125,7 @@ if err:
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.037 ms
</code></pre>
<p>As mentioned earlier, if no match exists in /etc/hosts, the OS tries to do a DNS resolution using the DNS protocol. The linux system makes a DNS request to the first IP in /etc/resolv.conf. If there is no response, requests are sent to subsequent servers in resolv.conf. These servers in resolv.conf are called DNS resolvers. The DNS resolvers are populated by <a href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol">DHCP</a> or statically configured by an administrator.
<p>As mentioned earlier, if no match exists in /etc/hosts, the OS tries to do a DNS resolution using the DNS protocol. The linux system makes a DNS request to the first IP in /etc/resolv.conf. If there is no response, requests are sent to subsequent servers in resolv.conf. These servers in resolv.conf are called DNS resolvers. The DNS resolvers are populated by <a href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol">DHCP</a> or statically configured by an administrator.
<a href="https://linux.die.net/man/1/dig">Dig</a> is a userspace DNS system which creates and sends request to DNS resolvers and prints the response it receives to the console.</p>
<pre><code class="language-bash">#run this command in one shell to capture all DNS requests
sudo tcpdump -s 0 -A -i any port 53
@ -2140,19 +2140,21 @@ dig linkedin.com
..)........
</code></pre>
<p>The packet capture shows a request is made to 172.23.195.101:53 (this is the resolver in /etc/resolv.conf) for linkedin.com and a response is received from 172.23.195.101 with the IP address of linkedin.com 108.174.10.10</p>
<p>Now let's try to understand how DNS resolver tries to find the IP address of linkedin.com. DNS resolver first looks at its cache. Since many devices in the network can query for the domain name linkedin.com, the name resolution result may already exist in the cache. If there is a cache miss, it starts the DNS resolution process. The DNS server breaks “linkedin.com” to “.”, “com.” and “linkedin.com.” and starts DNS resolution from “.”. The “.” is called root domain and those IPs are known to the DNS resolver software. DNS resolver queries the root domain Nameservers to find the right nameservers which could respond regarding details for "com.". The address of the authoritative nameserver of “com.” is returned. Now the DNS resolution service contacts the authoritative nameserver for “com.” to fetch the authoritative nameserver for “linkedin.com”. Once an authoritative nameserver of “linkedin.com” is known, the resolver contacts Linkedins nameserver to provide the IP address of “linkedin.com”. This whole process can be visualized by running </p>
<p>Now let's try to understand how DNS resolver tries to find the IP address of linkedin.com. DNS resolver first looks at its cache. Since many devices in the network can query for the domain name linkedin.com, the name resolution result may already exist in the cache. If there is a cache miss, it starts the DNS resolution process. The DNS server breaks “linkedin.com” to “.”, “com.” and “linkedin.com.” and starts DNS resolution from “.”. The “.” is called root domain and those IPs are known to the DNS resolver software. DNS resolver queries the root domain nameservers to find the right top-level domain (TLD) nameservers which could respond regarding details for "com.". The address of the TLD nameserver of “com.” is returned. Now the DNS resolution service contacts the TLD nameserver for “com.” to fetch the authoritative nameserver for “linkedin.com”. Once an authoritative nameserver of “linkedin.com” is known, the resolver contacts Linkedins nameserver to provide the IP address of “linkedin.com”. This whole process can be visualized by running the following -</p>
<pre><code class="language-bash">dig +trace linkedin.com
</code></pre>
<pre><code class="language-bash">linkedin.com. 3600 IN A 108.174.10.10
</code></pre>
<p>This DNS response has 5 fields where the first field is the request and the last field is the response. The second field is the Time to Live which says how long the DNS response is valid in seconds. In this case this mapping of linkedin.com is valid for 1 hour. This is how the resolvers and application(browser) maintain their cache. Any request for linkedin.com beyond 1 hour will be treated as a cache miss as the mapping has expired its TTL and the whole process has to be redone.
The 4th field says the type of DNS response/request. Some of the various DNS query types are
A, AAAA, NS, TXT, PTR, MX and CNAME.
- A record returns IPV4 address of the domain name
- AAAA record returns the IPV6 address of the domain Name
- NS record returns the authoritative nameserver for the domain name
- CNAME records are aliases to the domain names. Some domains point to other domain names and resolving the latter domain name gives an IP which is used as an IP for the former domain name as well. Example www.linkedin.coms IP address is the same as 2-01-2c3e-005a.cdx.cedexis.net.
- For the brevity we are not discussing other DNS record types, the RFC of each of these records are available <a href="https://en.wikipedia.org/wiki/List_of_DNS_record_types">here</a>.</p>
A, AAAA, NS, TXT, PTR, MX and CNAME.</p>
<ul>
<li>A record returns IPV4 address of the domain name</li>
<li>AAAA record returns the IPV6 address of the domain Name</li>
<li>NS record returns the authoritative nameserver for the domain name</li>
<li>CNAME records are aliases to the domain names. Some domains point to other domain names and resolving the latter domain name gives an IP which is used as an IP for the former domain name as well. Example www.linkedin.coms IP address is the same as 2-01-2c3e-005a.cdx.cedexis.net.</li>
<li>For the brevity we are not discussing other DNS record types, the RFC of each of these records are available <a href="https://en.wikipedia.org/wiki/List_of_DNS_record_types">here</a>.</li>
</ul>
<pre><code class="language-bash">dig A linkedin.com +short
108.174.10.10
@ -2181,7 +2183,7 @@ dig www.linkedin.com CNAME +short
<li>Every company has to have its internal DNS infrastructure for intranet sites and internal services like databases and other internal applications like wiki. So there has to be a DNS infrastructure maintained for those domain names by the infrastructure team. This DNS infrastructure has to be optimized and scaled so that it doesnt become a single point of failure. Failure of the internal DNS infrastructure can cause API calls of microservices to fail and other cascading effects.</li>
<li>DNS can also be used for discovering services. For example the hostname serviceb.internal.example.com could list instances which run service b internally in example.com company. Cloud providers provide options to enable DNS discovery(<a href="https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/service-discovery.html#dns-based-service-discovery">example</a>)</li>
<li>DNS is used by cloud providers and CDN providers to scale their services. In Azure/AWS, Load Balancers are given a CNAME instead of IPAddress. They update the IPAddress of the Loadbalancers as they scale by changing the IP Address of alias domain names. This is one of the reasons why A records of such alias domains are short lived like 1 minute.</li>
<li>DNS can also be used to make clients get IP addresses closer to their location so that their HTTP calls can be responded faster if the company has a presence geographically distributed. </li>
<li>DNS can also be used to make clients get IP addresses closer to their location so that their HTTP calls can be responded faster if the company has a presence geographically distributed.</li>
<li>SRE also has to understand since there is no verification in DNS infrastructure, these responses can be spoofed. This is safeguarded by other protocols like HTTPS(dealt later). DNSSEC protects from forged or manipulated DNS responses.</li>
<li>Stale DNS cache can be a problem. Some <a href="https://stackoverflow.com/questions/1256556/how-to-make-java-honor-the-dns-caching-timeout">apps</a> might still be using expired DNS records for their api calls. This is something SRE has to be wary of when doing maintenance.</li>
<li>DNS Loadbalancing and service discovery also has to understand TTL and the servers can be removed from the pool only after waiting till TTL post the changes are made to DNS records. If this is not done, a certain portion of the traffic will fail as the server is removed before the TTL.</li>

View File

@ -2252,7 +2252,7 @@
<p><img alt="Kubernetes Architecture" src="../images/kubernetes.png" /></p>
<p>Kubernetes components can be divided into two parts: <a href="https://kubernetes.io/docs/concepts/overview/components/#control-plane-components">control plane components</a> and <a href="https://kubernetes.io/docs/concepts/overview/components/#node-components">data plane components</a>. </p>
<p>A Kubernetes cluster consists of 1 or more host machines (called nodes) where the containers managed by Kubernetes are run. This constitutes the data plane (or node plane). </p>
<p>The brain of Kuberentes which responds to events from the node plane (e.g create a pod, replicas mismatch) and does the main orchestration is called the control plane. All control plane components are typically installed in a master node. This master node does not run any user containers.</p>
<p>The brain of Kubernetes which responds to events from the node plane (e.g create a pod, replicas mismatch) and does the main orchestration is called the control plane. All control plane components are typically installed in a master node. This master node does not run any user containers.</p>
<p>The Kubernetes components themselves are run as containers wrapped in Pods (which is the most basic kubernetes resource object).</p>
<ul>
<li>Control plane components:</li>

File diff suppressed because one or more lines are too long

View File

@ -2,502 +2,502 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://linkedin.github.io/school-of-sre/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/CODE_OF_CONDUCT/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/CONTRIBUTING/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/sre_community/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/big_data/evolution/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/big_data/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/big_data/tasks/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_nosql/further_reading/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_nosql/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_nosql/key_concepts/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/backup_recovery/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/concepts/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/innodb/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/lab/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/mysql/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/operations/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/query_performance/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/replication/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/databases_sql/select_query/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/git/branches/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/git/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/git/git-basics/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/git/github-hooks/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_basics/command_line_basics/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_basics/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_basics/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_basics/linux_server_administration/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_networking/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_networking/dns/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_networking/http/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_networking/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_networking/ipr/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_networking/tcp/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/linux_networking/udp/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/metrics_and_monitoring/alerts/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/metrics_and_monitoring/best_practices/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/metrics_and_monitoring/command-line_tools/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/metrics_and_monitoring/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/metrics_and_monitoring/introduction/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/metrics_and_monitoring/observability/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/metrics_and_monitoring/third-party_monitoring/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/python_web/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/python_web/python-concepts/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/python_web/python-web-flask/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/python_web/sre-conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/python_web/url-shorten-app/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/security/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/security/fundamentals/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/security/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/security/network_security/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/security/threats_attacks_defences/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/security/writing_secure_code/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/systems_design/availability/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/systems_design/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/systems_design/fault-tolerance/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/systems_design/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level101/systems_design/scalability/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/containerization_and_orchestration/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/containerization_and_orchestration/containerization_with_docker/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/containerization_and_orchestration/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/containerization_and_orchestration/intro_to_containers/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/containerization_and_orchestration/orchestration_with_kubernetes/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/continuous_integration_and_continuous_delivery/cicd_brief_history/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/continuous_integration_and_continuous_delivery/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/continuous_integration_and_continuous_delivery/continuous_delivery_release_pipeline/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/continuous_integration_and_continuous_delivery/continuous_integration_build_pipeline/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/continuous_integration_and_continuous_delivery/introduction/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/continuous_integration_and_continuous_delivery/introduction_to_cicd/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/continuous_integration_and_continuous_delivery/jenkins_cicd_pipeline_hands_on_lab/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/linux_intermediate/archiving_backup/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/linux_intermediate/bashscripting/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/linux_intermediate/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/linux_intermediate/introduction/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/linux_intermediate/introvim/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/linux_intermediate/package_management/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/linux_intermediate/storage_media/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/networking/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/networking/infrastructure-features/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/networking/introduction/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/networking/rtt/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/networking/scale/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/networking/security/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_calls_and_signals/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_calls_and_signals/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_calls_and_signals/signals/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_calls_and_signals/system_calls/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_design/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_design/intro/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_design/large-system-design/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_design/resiliency/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_design/scaling-beyond-the-datacenter/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_design/scaling/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_troubleshooting_and_performance/conclusion/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_troubleshooting_and_performance/important-tools/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_troubleshooting_and_performance/introduction/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_troubleshooting_and_performance/performance-improvements/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_troubleshooting_and_performance/troubleshooting-example/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://linkedin.github.io/school-of-sre/level102/system_troubleshooting_and_performance/troubleshooting/</loc>
<lastmod>2022-10-03</lastmod>
<lastmod>2022-12-27</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>

Binary file not shown.