Kubernetes Advanced (NZ)
Visit course recordings page on DaDesktop For Training
on 2023-09-28
language: EN
WEBVTT 00:00.000 --> 00:07.000 Good morning, William. 00:07.000 --> 00:12.000 Good morning. 00:12.000 --> 00:19.000 How are you doing? 00:19.000 --> 00:23.000 We're just not the greatest here, but. 00:23.000 --> 00:28.000 Okay. 00:28.000 --> 00:36.000 I'm just making a sense of apologies. He's not doing well this morning, so he won't be able to make it. 00:36.000 --> 00:39.000 Oh, okay. I got it. 00:39.000 --> 00:43.000 I'll just ask the others where they're at. 00:43.000 --> 00:48.000 Okay, yeah. Let's wait a little few minutes here. 00:48.000 --> 00:51.000 Hi, Sam. How are you doing? Good morning. 00:51.000 --> 00:54.000 Morning, guys. 00:57.000 --> 01:00.000 Just us as that? 01:00.000 --> 01:06.000 I will just message the others. 01:17.000 --> 01:20.000 Morning. 01:33.000 --> 01:38.000 So I think that is just us for today, at least. 01:38.000 --> 01:45.000 Yeah. So, okay, good. So I guess that we can start over. 01:45.000 --> 01:51.000 Let me introduce myself really quick. 01:51.000 --> 01:54.000 My name is Andres Musica. 01:54.000 --> 02:02.000 I'm going to be your instructor for this keyword needs advanced training session. 02:02.000 --> 02:11.000 Please, if you want to go ahead and access your desktop. 02:11.000 --> 02:21.000 And also, we are going to have a little just to the. 02:21.000 --> 02:30.000 The level of your knowledge, because I understand that you have already already some experience with your net. 02:30.000 --> 02:35.000 So I just send you the this link that from their foot. 02:35.000 --> 02:44.000 So if you want to go there, please. 02:44.000 --> 02:48.000 Okay, cool. 02:48.000 --> 02:52.000 Cool. So we have. 02:52.000 --> 02:55.000 Let me see. Okay. 02:55.000 --> 03:00.000 William Dallas and some. Okay, let's let's do these guys. 03:00.000 --> 03:03.000 So it's just five questions. 03:03.000 --> 03:06.000 Let's start by doing that. 03:06.000 --> 03:09.000 So, okay. 03:09.000 --> 03:13.000 Okay, I guess that you are watching there. What is Kibernet? 03:13.000 --> 03:22.000 So a container runtime container container orchestration platform programming language and operating system. 03:22.000 --> 03:24.000 There is a time lead. 03:24.000 --> 03:28.000 Okay, perfect. You guys. 03:28.000 --> 03:34.000 Let's move on to the next question. 03:34.000 --> 03:46.000 Okay, which Kibernet subject is responsible for automatically adjust the number of running parts based on observed CPU utilization? 03:46.000 --> 03:52.000 18 seconds. Good. Someone already answered. Good. 03:52.000 --> 03:55.000 Okay, you guys are killing it. 03:55.000 --> 04:00.000 Okay, great. Horizontal pod autoscale. That is correct. 04:00.000 --> 04:04.000 And let's go to the next one. 04:04.000 --> 04:15.000 So what is the role of a Kibernet service to run containers, store data, provide networking, schedule pods? 04:15.000 --> 04:24.000 Let's see. Okay, good. Good. I knew I had to choose harder questions. 04:24.000 --> 04:27.000 Good. Okay, let's go to the next one. 04:27.000 --> 04:31.000 And what is the purpose of config map? 04:31.000 --> 04:43.000 Store sensitive information, provide configuration data, define resource requests, manage persistent storage. 04:43.000 --> 04:46.000 Okay, it's really good. 04:48.000 --> 04:55.000 Okay, provide configuration. The sensitive information is in a secret. 04:55.000 --> 05:08.000 And the last one, which Kibernet component is responsible for making sure that the desired state of a cluster matches the actual state to proxy Kiblet, 05:08.000 --> 05:15.000 API server, controller manager. This one is tricky. Okay, good. 05:15.000 --> 05:26.000 The controller manager. This is one of the things that I like the most about Kibernet because Kibernet is kind of a state machine. 05:26.000 --> 05:32.000 I mean, it looks for keep the state, the desired state of the resources. 05:32.000 --> 05:43.000 So, okay, very good, William. First place, Sam and Dallas. Very good, guys. Really good job. 05:43.000 --> 05:54.000 Okay, so that is correct. Let me go here. Okay, so let's begin then. 05:54.000 --> 06:02.000 As I told you, my name is Andres Mujica. It's a longer name, but with Andres is enough. 06:02.000 --> 06:08.000 I have like, well, I have worked with this stuff for a long time. 06:08.000 --> 06:21.000 And the idea here is just to learn a little bit about all of the Kibernet universe, which is pretty huge, to be honest. 06:21.000 --> 06:28.000 So we are working and hopefully we will learn a lot with you guys today. 06:28.000 --> 06:36.000 So for the training, we will be started at 9 a.m. and ended at 5 p.m. 06:36.000 --> 06:42.000 We will have two breaks, one in the morning, another one in the afternoon, and the lunch break. 06:42.000 --> 06:48.000 It can be at 16 minutes, but if you want, we can make it shorter. 06:48.000 --> 07:01.000 And I was wondering if it's, I mean, I have that program for 1245. Is that right for you guys? 07:01.000 --> 07:06.000 Or do you prefer to have it later or earlier? 07:06.000 --> 07:11.000 Okay, cool. 07:11.000 --> 07:21.000 Okay, please remember after the training, you will have an evaluation form, which is really important for us because that will help us to improve these trainings. 07:21.000 --> 07:26.000 And of course, you will have the certificate of attendance as well. 07:26.000 --> 07:33.000 And okay, that's it. This is Kibernet's advance. You will have, well, actually, you already have access to the materials. 07:33.000 --> 07:42.000 I'm going to show you that in a while so you can follow all the stuff that we're doing here. 07:42.000 --> 07:48.000 So, well, I guess you are familiar with this, the outline that we have prepared for this training. 07:48.000 --> 07:58.000 First, during the first day, we will be working with the infrastructure part, the high availability, scalable applications, securing the applications. 07:58.000 --> 08:04.000 And for the day two, we are going to work with updating the application, maintenance and troubleshooting. 08:04.000 --> 08:13.000 This training aims to be mostly a hands-on labs. So there are a lot of material to work with. 08:13.000 --> 08:21.000 There are the highlighted labs are the ones that we are going to execute in this training. 08:21.000 --> 08:27.000 However, if you want to explore another one of the labs, we can do that for sure. 08:27.000 --> 08:35.000 Just bear or have in mind that we have a limited time. So and this is what we are facing for this today. 08:35.000 --> 08:50.000 So we're working with several labs regarding Kibernet's and API, deploying applications, then working replica sets, rolling updates, HPA, resource utilization. 08:50.000 --> 09:00.000 And databases, application lifecycle, logging, monitoring, current jobs and some more stuff. 09:00.000 --> 09:07.000 It's available as well. You have the there is this presentation and you will have as well. 09:23.000 --> 09:30.000 That we have to perform for the training. You can do that later by yourselves for without any issue at all. 09:30.000 --> 09:35.000 Hopefully some recommendations. Please participate. 09:35.000 --> 09:43.000 Don't hesitate in participating during the lectures. Ask questions. Please interrupt me if you need to. 09:43.000 --> 09:48.000 I'm not able to see if you raise your hand. It is not that easy with teams. 09:48.000 --> 09:56.000 So so go ahead and ask whatever or comment wherever you want to. No worries at all. 09:56.000 --> 10:05.000 Regarding the training, there is a repo, a Git repo available for you to clone. 10:05.000 --> 10:13.000 So you can have access to all the code and all the manifests and all the stuff that we will be working with. 10:13.000 --> 10:24.000 But also you will be able if you are not that familiar with it, we are you are able to clone the material directly from the data. 10:40.000 --> 10:47.000 OK, so let's let's do the first lab. However, I'm not sure if. 10:47.000 --> 10:52.000 If it's available already, so let me see. 10:52.000 --> 11:00.000 So OK, yeah, you have access, please. So please. OK, Nick is the one who's today. 11:00.000 --> 11:08.000 So please, guys, go to the training room to this link and the in the home. 11:08.000 --> 11:21.000 Page for the training, go to training room, because that way I will be able to to help you during the trainings during the last in an easier way. 11:40.000 --> 11:43.000 OK, perfect. So, OK, this is your desktop. 11:43.000 --> 11:59.000 You will find I mean, if you have any issue with your keyboard here in the end, you can right click and add a different with preference, add a different keyboard. 11:59.000 --> 12:06.000 So if you want to do that, please do. Or or you can use these. 12:08.000 --> 12:20.000 These application on board that gives you access to a virtual keyboard in case that you don't have you're not able to. 12:20.000 --> 12:26.000 Sometimes it fails the the quotes marks. So or some special characters. 12:26.000 --> 12:31.000 So you may need to to use that to have that available. 12:31.000 --> 12:38.000 Other thing that you need to be aware of is the ability to copy and paste. 12:40.000 --> 12:42.000 It should be straightforward. 12:42.000 --> 12:56.000 It should be straightforward. Usually this is strong and you can see here that there is one icon not clipboard icon that shows me that I'm able to copy from one side to the other side. 12:56.000 --> 13:06.000 If you have any issues, you can have a click on this green mark at your bottom left. 13:06.000 --> 13:10.000 That is the clipboard so you can use that to copy data as well. 13:12.000 --> 13:18.000 Just to have that in mind. And we are using an application called Terminator. 13:18.000 --> 13:27.000 This application or this terminal has a nice feature, which is the reason that I prefer to use this one. 13:27.000 --> 13:34.000 This one is now and these features that you can split the terminal horizontally or vertically. 13:34.000 --> 13:40.000 So we can split this. 13:40.000 --> 13:50.000 So this is really good because it helps us to I mean, we are going to deploy stuff and we will want to see the locks in real time to watch the logs real time. 13:50.000 --> 13:55.000 So we are going to be able to execute commands while watching the locks. 13:55.000 --> 14:02.000 So that is important to have. And finally, here you will find a materials folder. 14:02.000 --> 14:13.000 This folder has the presentation, which is this PDF file. 14:13.000 --> 14:22.000 I'm going to go ahead and open that here because perhaps sometimes we just look here for the slide that we need. 14:22.000 --> 14:34.000 And also you will find here the advanced labs document, which are the labs that we are going to execute. 14:34.000 --> 14:40.000 So go ahead and open those so you can have those available during the training. 14:49.000 --> 14:56.000 Yeah, so it's there. And also there is some additional material. 14:56.000 --> 15:02.000 Some of these we are going to use it during the some of the labs. 15:02.000 --> 15:05.000 There is a troubleshooting guide. 15:05.000 --> 15:16.000 There is the hardening guidance from the CSI and some others that they should cheat. 15:16.000 --> 15:20.000 And there is something which is quite cool. 15:20.000 --> 15:25.000 OK, no, that's everything. So we are going to see that later. 15:37.000 --> 15:42.000 So just finish to be sure that you have found everything. 15:42.000 --> 15:49.000 I think that I'm missing someone in the training room. Yeah. 15:49.000 --> 15:54.000 I guess Dallas, I am not seeing you at the training room. 15:54.000 --> 16:01.000 So yeah, let me show you here. 16:01.000 --> 16:11.000 Here in the home page for the training, there is this training room that if you want to click there. 16:11.000 --> 16:13.000 OK, you're there. Thank you. 16:19.000 --> 16:28.000 Just a minute. Feel free to explore the material for a few minutes. 16:28.000 --> 16:32.000 Is there any questions that you have right now? 16:32.000 --> 16:43.000 OK, yes. OK, let's continue. 16:43.000 --> 16:47.000 OK, so so that's it for for right now. 16:47.000 --> 16:53.000 We already did this. OK, let's talk a little bit about. 16:54.000 --> 16:58.000 First of all, as I told you, this is huge. 16:58.000 --> 17:13.000 And I guess that you already know that there is this this is life shows what is known as the container ecosystem. 17:13.000 --> 17:16.000 This is a mind map. Actually, it's pretty cool. 17:16.000 --> 17:26.000 I like it a lot because it shows you, I mean, everything that is related to the container ecosystems, 17:26.000 --> 17:31.000 which, as you may know, or you already answered that, 17:31.000 --> 17:36.000 Cuba Nets is orchestration system for containers. 17:36.000 --> 17:43.000 So. Here you can take a look into everything. 17:43.000 --> 17:49.000 Give me just a second. What happened here? 17:49.000 --> 17:58.000 Into everything that has anything to do with with containers, so you will find here, for example, 17:58.000 --> 18:01.000 everything related to cloud native storage. 18:01.000 --> 18:14.000 And you can see here, for example, the biggest projects, the size and color of these mind map shows how popular that project is and how common is used. 18:14.000 --> 18:19.000 And monitoring from the field, Grapana, LQF key. 18:19.000 --> 18:24.000 There is a server defined networks here. 18:24.000 --> 18:31.000 Service mesh and a lot of stuff. All the networking tooling is here. 18:31.000 --> 18:34.000 Everything regarding backup recovery. 18:34.000 --> 18:42.000 Is there the little custom, which are tools to have a cup from Cuba Nets? 18:44.000 --> 18:49.000 DevOps integrations, text on home charts packaging. 18:49.000 --> 18:57.000 There is this registry handling, offset solutions, security with this. 18:57.000 --> 19:05.000 Dockers swarm and Cuba Nets, which are the orchestrators and Cuba Nets. 19:05.000 --> 19:10.000 With all the distributions, canonical, open shield, ranger, et cetera. 19:10.000 --> 19:19.000 So all of these have a link so you can go there and explore. 19:19.000 --> 19:26.000 About this software in particular, if you want to know more. 19:26.000 --> 19:41.000 So this I found this very really useful because sometimes you don't really know if something already exists or which one is the most popular or which one is the one that you may want to try or give it a look. 19:41.000 --> 19:46.000 So so this is my money is really helpful because of that. 19:46.000 --> 19:49.000 There is. 19:49.000 --> 19:52.000 Just a sec. 19:52.000 --> 20:00.000 There is a copy of that mind maps here, but in PDF format format. 20:00.000 --> 20:07.000 So it's already in your material, but nothing like the real deal. 20:07.000 --> 20:09.000 So. 20:09.000 --> 20:14.000 So feel feel feel free to explore that as well. 20:14.000 --> 20:16.000 Let me show you the link. 20:16.000 --> 20:18.000 Give me just a second. 20:18.000 --> 20:21.000 Arranging my desktop here. 20:21.000 --> 20:24.000 So this is the link. 20:24.000 --> 20:29.000 If you want to go ahead and take a look. 20:29.000 --> 20:46.000 So the thing here is is this because I mean as Cuba Nets is directly related to containers in order to orchestrate those all of the tools that already work with containers are work with your best as well. 20:46.000 --> 20:51.000 So this is like a good way to get familiar with it. 20:51.000 --> 20:56.000 Well, let's define Cuba Nets in in the formal sense. 20:56.000 --> 20:57.000 It came. 20:57.000 --> 21:04.000 It comes from the word Hans man, which is a Greek word. 21:04.000 --> 21:12.000 And the idea here is that your nets guide you through unknown waters. 21:12.000 --> 21:21.000 Remember, if you have in mind the logo for two or nets, it's the the the drive for a vessel. 21:21.000 --> 21:26.000 So so that is where the name comes from. 21:26.000 --> 21:39.000 Also, nowadays we discuss or we say that your net is there is the Linux of the cloud or the Linux kernel of the distributed systems applications. 21:39.000 --> 21:53.000 So that is I mean, it's the most faster growing open source system after Linux. 21:53.000 --> 21:56.000 So it's really huge as well. 22:14.000 --> 22:19.000 Those containers are there. 22:19.000 --> 22:28.000 The unit in which your application runs, usually that application becomes like a microservice. 22:28.000 --> 22:38.000 There are different solutions to run containers is not only Docker and actually, and we are going to see that right now. 22:38.000 --> 22:42.000 Now, Docker is not even used within two or nets in the last versions. 22:42.000 --> 22:52.000 However, it's part of what you need to to have in your toolkit in order to to work with these cloud native world. 22:52.000 --> 23:03.000 Cuba Nets allows you to have a proper microservice architecture and to handle all of those microservices because, as you are aware, 23:03.000 --> 23:17.000 and a microservice architecture is characterized because there are a lot of small and independent services that needs to be keep running at all costs. 23:17.000 --> 23:26.000 And doing that manually is really hard, if not impossible, especially if your application is really complex. 23:26.000 --> 23:32.000 So to your next is the answer to handle that kind of solutions as well. 23:32.000 --> 23:42.000 Cuba Nets, it's a it's a well has let me go straight to the to this slide. 23:42.000 --> 24:00.000 So Cuba Nets allows you to to to handle your containers, your yeah, your containers orchestrate your containers because it has something which is called the control plane. 24:00.000 --> 24:06.000 And something which is called the workers or the nodes of the system. 24:06.000 --> 24:13.000 The control plane is at least in a production environment. 24:32.000 --> 24:36.000 So this control plane has several components. 24:36.000 --> 24:45.000 The main one is the API server, which is the basically the heart of Cuba Nets. 24:45.000 --> 24:54.000 It has also two controllers, one the Cuba control manager, the cloud control manager or the control managers. 24:54.000 --> 24:57.000 We're going to see a little bit about them in a few. 24:57.000 --> 25:18.000 It has the scheduler in order to assign both to different nodes, deciding which node a pod will run and the etcd, which is the database in where all the configuration is completely stored or is saved. 25:18.000 --> 25:31.000 This API server has the cubelet and the cube proxy, which are the two services available or the two main services available in which each one of the nodes. 25:31.000 --> 25:36.000 So we are going to see how those connect to each other as well. 25:36.000 --> 25:48.000 So usually when or usually no by standard, the way that Cuba Nets works is first interacting with the API. 25:48.000 --> 25:55.000 Let's say that you want to run a container service in your Cuba Nets system. 25:55.000 --> 26:17.000 So the way that this runs or that the flow works in order to that container to run is that first you send a comment to the API server and this API server writes that information in the database, which is the etcd. 26:17.000 --> 26:24.000 And that information then once is written, the API server is informed that it was written. 26:24.000 --> 26:34.000 So it sends to the scheduler the request to create or to assign a place to run a new pod. 26:34.000 --> 26:40.000 So the API server is watching the scheduler do this job. 26:40.000 --> 26:56.000 Once the scheduler has decided in which node the pod is going to run, it lets the API server or it informs the API server that this has happened. 26:56.000 --> 27:06.000 The pod has assigned to run in one of the nodes and that information is written by the API server to the database to the etcd. 27:06.000 --> 27:14.000 When that is written, and please be aware of this flow in the sense that this needs to happen. 27:14.000 --> 27:23.000 I mean, the API server will stuck if it doesn't have like confirmation for the for the data for that. 27:23.000 --> 27:31.000 The data was written, so that is really important to have in mind, especially when you are troubleshooting in the future. 27:31.000 --> 27:40.000 So when the the pod is assigned to a node to run that information is written when that has happened. 27:40.000 --> 27:46.000 The API server let the scheduler to know that that is a goal. 27:46.000 --> 28:00.000 You can call it like that. And then the server asks the kubectl, which is the service that runs within the node to OK, please run this path. 28:00.000 --> 28:23.000 There is this path for you to run the kubectl talks with the container engine in this case is Docker, but it talks with the container engine and it lets it let know the or it tells the container engine that these paths or this image is the one that needs to be run. 28:23.000 --> 28:44.000 So this is what happens here. Once the container engine has launched the pod with a container to run the image of the application, it informs kubectl that the status of that if it's running, if it's not running, wherever, wherever it's happening there. 29:04.000 --> 29:09.000 So that is like the typical flow. This happens in in seconds. 29:09.000 --> 29:19.000 It's super, super fast, but it's important to understand this flow because this is the way that all the components communicate with each other. 29:29.000 --> 29:39.000 So the API server has a transactional or a multiple request role within a Kubernetes cluster. 29:39.000 --> 29:54.000 So it's being hammered all the time because everyone is talking to them to the API server asking to write some information or or the server sending some information. 30:09.000 --> 30:16.000 So these two guys, the API server and the ETCB usually have the piece. 30:16.000 --> 30:34.000 The API server has a load balancer in front of it and with at least three nodes running it and the ETC has a replica or is replicated in the database and also usually at least three nodes should be there. 30:34.000 --> 30:45.000 The other ones, if this fails, the scheduler or the kubelet, actually this can fail and the container, your application, can still run. 30:45.000 --> 30:50.000 So this is kind of curious, but it's important to understand as well. 30:50.000 --> 31:02.000 So if we analyze the same flow, but from the components, we are going to see like the same explanation that I just did. 31:02.000 --> 31:10.000 However, in this time, we are talking about the API, the deployment controller, the replica set controller. 31:23.000 --> 31:28.000 And finally, the scheduler and the kubelet are the ones who interact with the system. 31:28.000 --> 31:33.000 So this flow is as well important in that. 31:33.000 --> 31:38.000 So this is like the complete flow of the kubernetes. 31:43.000 --> 31:50.000 So that is like the flow of the conversation that happens inside kubernetes. 31:50.000 --> 31:59.000 This is a high level architecture, which is a little bit more comparing to the previous one. 31:59.000 --> 32:01.000 So this is the API server. 32:01.000 --> 32:08.000 This is you, hopefully in a better position for your back. 32:08.000 --> 32:12.000 So the API server is the one that you interact with. 32:12.000 --> 32:22.000 Always every, I mean, the kubectl, any application that you use to interact with the kubernetes is talking to the API server. 32:22.000 --> 32:36.000 The API server is the only one who talks with the ETCD cluster with the database and the controller and the scheduler are the ones that interact with this API server as well. 32:36.000 --> 32:43.000 The API server talks with each one of the nodes with the kubelet and the kube proxy. 32:43.000 --> 32:47.000 The kube proxy is like a firewall at the end. 32:47.000 --> 32:55.000 It's just like IP tables creating rules to to allow the traffic flow. 32:55.000 --> 33:08.000 And the kubelet is the one that is in charge to fulfill the requests that are done via API server or controller and scheduler managers. 33:08.000 --> 33:16.000 So the kubelet is the one that talks with the pods and Docker is the in this case Docker, but is the container engine. 33:16.000 --> 33:19.000 The one that is able to run this. 33:19.000 --> 33:22.000 So that is like that. 33:22.000 --> 33:26.000 If you want to see another point of view is like the same. 33:26.000 --> 33:36.000 Here we are seeing an additional part of this puzzle, which is the load balancer. 33:54.000 --> 33:55.000 Yeah. 34:14.000 --> 34:19.000 If you have any questions, please go ahead and do those. 34:19.000 --> 34:23.000 Don't worry. 34:23.000 --> 34:28.000 Let's dig a little bit as well. 34:28.000 --> 34:33.000 So this is the same structure that we just discussed. 34:33.000 --> 34:43.000 However, here we can see at a deeper technical level how all these components are communicating to each other. 34:43.000 --> 34:48.000 So first of all, our API server and the user. 34:48.000 --> 34:54.000 So the user and the API server use JSON to communicate. 34:54.000 --> 35:03.000 We use Jamf files, but in on behind that or on the back end is JSON, which is used here. 35:03.000 --> 35:08.000 So the API server process that JSON. 35:08.000 --> 35:20.000 And when the API server needs needs to talk with the controller manager or the scheduler or kubelet, the agents of each one of the nodes. 35:20.000 --> 35:25.000 What happens is that it uses protobuf. 35:25.000 --> 35:40.000 Protobuf is a protocol that allows you to communicate between services like GRPC or different services. 35:40.000 --> 35:44.000 The actually protobuf was invented by Google. 35:44.000 --> 35:48.000 And that is the reason why we see this here. 35:58.000 --> 36:10.000 Yeah. And when the API server communicates with the CD, it uses Google RPC, the remote remote procedure call. 36:10.000 --> 36:16.000 So is the way that it communicates with this protocol. 36:16.000 --> 36:30.000 And here in the inside is one of the nodes you will find the query, which is the container runtime interface, the green arrow. 36:30.000 --> 36:36.000 This is important because Docker was the one who invented that. 36:36.000 --> 36:42.000 And they created this container runtime interface to create a standard. 36:42.000 --> 36:58.000 And again, it went bad for Docker because because three Docker is not like the standard or the default for Kubernetes, which I guess that in the future that will impact Docker as a company. 36:58.000 --> 37:07.000 However, in the development world, you still use Docker and will keep using Docker for a while, I guess. 37:07.000 --> 37:10.000 But this is the tree, which is the standard right now. 37:10.000 --> 37:22.000 And CNA, which is the container networking interface, is the is the language or protocol used by Cuba led to communicate to networking. 37:22.000 --> 37:26.000 So we're going to discuss that part later. 37:26.000 --> 37:38.000 What else do I miss here? OK, this one is the open container interface, which is the way in which the container runtime communicates with the operating system. 37:38.000 --> 37:47.000 Before OCI and CRI, and actually OCI is the standard that was created by Docker. 37:47.000 --> 37:57.000 Before that, we needed a daemon, a service running in the operating system. 37:57.000 --> 38:06.000 And that had the problem that if that service failed, your container engine will die. 38:06.000 --> 38:15.000 So the OCI was invented in order to leverage on Linux kernel capabilities. 38:15.000 --> 38:19.000 So we don't need to have a service running there. 38:19.000 --> 38:24.000 So that is right there. 38:24.000 --> 38:29.000 And OK, another thing here, which is important. 38:35.000 --> 38:42.000 It turns out that QNets is a little bit like Kafka. 38:42.000 --> 38:54.000 Not sure if you're aware about Kafka, but Kafka, Pache Kafka is a messaging platform or that messaging pipeline platform. 38:54.000 --> 38:58.000 You create that data pipelines using Kafka. 38:58.000 --> 39:02.000 So you can have a producer which creates data. 39:02.000 --> 39:15.000 Your Kafka cluster will receive that data and makes that data available for a consumer, which consumes that data to wherever you need. 39:15.000 --> 39:22.000 So QNets is also an event driven architecture, quite like Kafka. 39:22.000 --> 39:37.000 In the sense that it has some producers, which are the metric server, the autoscaler, the replica set, the scheduler, which create information that goes direct to some queues. 39:37.000 --> 39:47.000 You can call those queues, messaging queues, which are the metrics with the CPU information, which is the most common one. 39:47.000 --> 39:56.000 The replica set, which is the information regarding how many pods are running for a deployment in particular. 39:56.000 --> 40:16.000 And the replica set controller, which controls how well, which tells how many of those controllers you need to add controllers or keep the controllers as you have the pods, sorry, as you have right now or if you need to increase or decrease those. 40:16.000 --> 40:28.000 The scheduler, which the message queue regarding pods, which allows you to know in which node the pod will be running. 40:28.000 --> 40:40.000 So that information is reading in these queues and is consumed by the ones that need that information in order to execute something. 40:40.000 --> 40:45.000 So the autoscaler reads data from the metric server. 40:45.000 --> 41:04.000 And here is something actually quite important because one of the biggest thing about Kafka is that it allows you to create this, the couplet architecture. 41:04.000 --> 41:17.000 I mean, if this is failing, it doesn't mean that this will fail because this is only accessing or reading the queue. 41:17.000 --> 41:24.000 So if there is no more data in the queue, the autoscaler will do nothing. 41:44.000 --> 41:45.000 So that is what happens here. 42:09.000 --> 42:12.000 So this is quite interesting as well. 42:12.000 --> 42:17.000 And obviously the article in which you can be a little bit more is linked there. 42:23.000 --> 42:27.000 And finally, finally, the state machine. 42:27.000 --> 42:32.000 So QBernet is a pure state machine. 42:33.000 --> 42:50.000 So you define or I mean, when you talk with the API server, you define a state for your application, for your system that is stored in the 8etcd database. 42:50.000 --> 42:58.000 And the controllers and the schedulers are the ones who implement that state machine. 42:58.000 --> 43:08.000 So your manifest, your Jamf file, your definition, the thing that you want to run has a desired state. 43:08.000 --> 43:25.000 And what the controller and the scheduler is doing all the time, all the time, the replica set, the scheduler, all the time they're doing this is to OK, which is the state decided for this application? 43:25.000 --> 43:35.000 It's to have four ports, load balancer, volume, volume available. 43:35.000 --> 43:42.000 And that's it. So the port should be available as well. 43:42.000 --> 43:45.000 This is the port. So that is the desired state. 43:45.000 --> 43:50.000 OK, let's see if that state is the same. 43:50.000 --> 43:53.000 OK, which is the current state? 43:53.000 --> 43:56.000 OK, it only has three ports. 43:56.000 --> 44:07.000 OK, so if there is only three ports and here we want four and there is only three, we need to add one. 44:07.000 --> 44:09.000 So let's do that. 44:09.000 --> 44:13.000 And that is like a never ending cycle. 44:13.000 --> 44:18.000 So this is what happens all the time with QBernet. 44:18.000 --> 44:25.000 So that is why if you delete a port, it will start over right away. 44:25.000 --> 44:29.000 This state machine here. 44:29.000 --> 44:38.000 OK, so that is like the basics for architecture for the inner of QBernet. 44:38.000 --> 44:48.000 Let me know if there is something that is not that clear or do you want to discuss a little bit more? 44:48.000 --> 44:51.000 Go ahead and do that. 44:51.000 --> 44:59.000 So let me see. 44:59.000 --> 45:08.000 As well, this QBernet, as I told you, the basic of it is the API server. 45:08.000 --> 45:12.000 And that is because QBernet is an API. 45:28.000 --> 45:37.000 This API has a series of resources that are defined in the API specification. 45:37.000 --> 45:53.000 So all, everything, basically everything, everything that is defined in QBernet or that is used in QBernet, 45:53.000 --> 46:04.000 it can be tracked down to a specification here, a specification of the API. 46:04.000 --> 46:16.000 So in this slide, each one of these are the resources that compose or that make QBernet a thing. 46:16.000 --> 46:26.000 So everything here is a resource and something that you can configure, that you can find, that you can create. 46:26.000 --> 46:30.000 And it's explained in the API. 46:30.000 --> 46:39.000 So each one of these are the resources, the workloads, the part, the job, the current job, the diamond set, the stateful set, the deployment. 46:39.000 --> 46:50.000 This is the explanation and that is available here in the, well, these are the concepts, the documentation regarding each one of those. 46:50.000 --> 46:56.000 And let me show you the API reference. 47:06.000 --> 47:09.000 So this is the API. 47:10.000 --> 47:26.000 The API. So in the QBernet API, you will have all the definition, the technical low level definition of each one of these resources that we have here. 47:26.000 --> 47:33.000 The pod, the pod, which is the basic deployable unit. 47:33.000 --> 47:44.000 So, I mean, whenever you're working with QBernets, something that you need to have in mind is this, is the API. 47:44.000 --> 47:59.000 I mean, beyond the complexity that has QBernets, it's a really beautiful simplicity because everything, everything is defined here. 47:59.000 --> 48:08.000 So you may don't know how to do something, how to create or define something, but you should not worry at all. 48:08.000 --> 48:22.000 The only thing that you need to do is go and take a look in the API because the API says, explains everything and every option that you want or may want to use or to create. 48:22.000 --> 48:42.000 So the most important thing regarding this is that beyond Google, beyond all the trainings, all the stuff that you may find around or the books or wherever, the most important resource, documentation resource is the API. 48:42.000 --> 48:48.000 So this is important and that is why I'm showing this to you guys. 48:48.000 --> 48:53.000 Actually, we are going to explore the API directly in our in the cluster. 48:53.000 --> 48:57.000 Well, in one of our clusters as well. 48:57.000 --> 48:59.000 So, so, yeah. 48:59.000 --> 49:13.000 So there is this another document, which is also really good because it helps you to work with QBernet. 49:13.000 --> 49:16.000 And it's let me see. 49:16.000 --> 49:18.000 I don't see it here. 49:18.000 --> 49:29.000 Let me see. 49:29.000 --> 49:33.000 It seems that I forgot to include that in the materials. 49:33.000 --> 49:39.000 I'm going to do it in the in the break so you can have a copy. 49:39.000 --> 49:41.000 But this is the spreadsheet. 49:41.000 --> 49:50.000 So this is important because the part is kind of the center of the universe in QBernet. 49:50.000 --> 49:56.000 And that is because this is an orchestration system for containers. 49:56.000 --> 50:00.000 And it turns out that the part is the one that holds the container. 50:18.000 --> 50:25.000 So you will find the current version, the API version, current version, the part. 50:25.000 --> 50:36.000 And, for example, all the stuff that goes in metadata in the status, which is only at runtime conditions, 50:36.000 --> 50:44.000 in containers, the tolerations to fail to when should we restart the part? 50:44.000 --> 50:48.000 Never or always or only when it fails. 50:48.000 --> 50:56.000 The security context, if we are going to run as root this container or not. 50:56.000 --> 51:05.000 Volumes, which volumes are supported, Azure File or Host Path or NFS. 51:05.000 --> 51:13.000 And the other variables as the node name where it's running, the scheduler name. 51:13.000 --> 51:21.000 So this is related to the part and this is related to the containers which are inside the part. 51:21.000 --> 51:30.000 So the specification for the containers, which has the, for example, the name, the comments, the attributes, the lifecycle. 51:30.000 --> 51:33.000 And this is super important because this is stuff. 51:33.000 --> 51:38.000 So this is stuff that sometimes you don't know about. 51:38.000 --> 51:52.000 And it turns out that you can, for example, define a script or a comment to run just after the container starts. 51:52.000 --> 52:00.000 So as soon as you, for example, an engines container, you run an engines container. 52:00.000 --> 52:09.000 And you want to download a website, an HTML file, just to provide an example. 52:09.000 --> 52:14.000 So it turns out that you can do that here with post start. 52:14.000 --> 52:25.000 Yeah. Or if it's an alarm or I mean use cases, just imagine whatever you want to do just after your container starts. 52:25.000 --> 52:27.000 Yeah. So that is what this is for. 52:27.000 --> 52:37.000 Also, pre-stop. Before going down, you can, for example, take a copy of all of the status and send that to wherever. 52:37.000 --> 52:46.000 Yeah. So pre-stop. That is a script that runs after before the container is stopped. 52:46.000 --> 52:53.000 And so this is super nice and super interesting, the things that you can do with that. 52:53.000 --> 53:08.000 Regarding variables, environment variables, regarding ports, the volumes, the resources, how many CPU, how much CPU is going to be assigned, 53:08.000 --> 53:19.000 how much memory is going to be assigned to this container, the security contents, the old environment, where is this coming from, the config map, the secrets. 53:19.000 --> 53:28.000 And something which is really beautiful, the liveness proof, the readiness proof, which allows you to test your container, 53:28.000 --> 53:37.000 if it's working as expected or not, if it's ready to run or not to receive requests. 53:37.000 --> 53:42.000 So everything here is what you can do with a container within Kubernetes. 53:43.000 --> 53:58.000 And finally, the OK, the unit container, which is one container like this one, but has the the feature that when you start the path, 53:58.000 --> 54:08.000 the unit container will be executed first. And after this is executed, the main container will be run. 54:08.000 --> 54:13.000 So a new case for this is, well, I'm going to use the same example. 54:13.000 --> 54:33.000 You have a Git repo with your web page. So you can create an unit container that clones that repo in a volume, in a volume, the bar triple, triple W HTML volume. 54:33.000 --> 54:45.000 And and when it's once this is done, the main container, which is a mix, will start and will find in this volume the data. 54:45.000 --> 54:52.000 So that is super cool. And it's something that can be done with unit containers. 54:52.000 --> 55:01.000 And the other one is the affinity, which is like the rules in which I will schedule the spot. 55:01.000 --> 55:10.000 So, for example, if you have a path that is designed to run machine learning workloads, 55:10.000 --> 55:16.000 so I want to run this spot in the server with GPU with a GPU. 55:16.000 --> 55:26.000 So I will create an affinity, node affinity, and I will label that node with the GPU label. 55:27.000 --> 55:37.000 So every time that node that pod is launched, it will be assigned to run in the node with a GPU. 55:37.000 --> 55:45.000 So that is like the main idea here. So you can have affinity for nodes, affinity for pods. 55:45.000 --> 55:54.000 For example, I want these two nodes, these two pods, the database and the web service to be run always on the same node. 55:54.000 --> 56:02.000 So because I don't want latency, I don't want networking, I want to for them to work in the in the same space. 56:02.000 --> 56:08.000 So that is the pod affinity or the affinity. I don't want to have, for example, 56:08.000 --> 56:17.000 I have something that requires some entropy and I don't want that to run in the same place. 56:17.000 --> 56:26.000 I mean, each one of the pods needs to run in different nodes, so I don't minimize my entropy, stuff like that. 56:26.000 --> 56:31.000 There are a lot of use cases over there. 56:31.000 --> 56:40.000 So this pod is really good because of that, because it gives you like an idea of what can be done. 56:40.000 --> 56:48.000 And with this, you can explore the API, the formal documentation and work through that. 56:48.000 --> 56:57.000 So that is good to have as well. OK, so these are the different resources available. 56:57.000 --> 57:05.000 Well, I'm not to go into the detail of explaining each one of those, 57:05.000 --> 57:10.000 because in the during the labs, we are going to discuss that. 57:10.000 --> 57:26.000 And if there is something that is that you are not aware of that you don't or haven't heard about it before, let me know so we can discuss it for sure. 57:26.000 --> 57:38.000 No worries at all. But suffice to say that the every one of these resources are defined in the API and the documentation or here in this table, 57:38.000 --> 57:51.000 which comes from the well, actually for this back to the next inaction from Lutzer, that is a really good book talking which talks about to the next as well. 57:51.000 --> 57:58.000 All the important the workloads, the services, the config, the storage. 57:58.000 --> 58:02.000 Those are the main kind of resources. 58:02.000 --> 58:10.000 And each one of those will have different common objects or resources that we used to use. 58:10.000 --> 58:13.000 The pod is the most important one. 58:13.000 --> 58:21.000 The deployment as well or the most common ones, the services, the config and the volumes. 58:21.000 --> 58:25.000 Those are the ones that you use every time. 58:25.000 --> 58:42.000 And these ones, the limits and resources, those are important as well, because these are the ones that you control in order to abide like expectation of your resources or keep in control what you are running. 58:42.000 --> 58:51.000 Because sometimes you can have like an application, a service that is consuming a lot of CPU or memory. 58:51.000 --> 58:54.000 And this is what helps you to do that as well. 58:54.000 --> 59:10.000 Security of the roles, the service accounts and the extension with the custom resource definition, which is which has been a huge explosion in the last years. 59:10.000 --> 59:16.000 Because this is the way in which you expand the abilities of QNets. 59:16.000 --> 59:28.000 So actually there are a lot of software providers that gives you using this, the CRD, additional software to run on top of QNets as well. 59:28.000 --> 59:30.000 Okay. 59:30.000 --> 59:36.000 And this last one, this last one important. 59:36.000 --> 59:42.000 This is how an application relates to QNets resources. 59:42.000 --> 59:54.000 So as we have suggested, the pod is the heart or the central piece of operation of QNets. 01:00:15.000 --> 01:00:21.000 But within the pod is your container, your code, the container. 01:00:21.000 --> 01:00:28.000 So the code of your application goes within a container that is inside the pod. 01:00:28.000 --> 01:00:39.000 The pod is like the you can say the pod is the server which runs your image, the Docker image that you created. 01:00:39.000 --> 01:00:42.000 So this is like the idea as well. 01:00:42.000 --> 01:00:57.000 And this container access data via the volumes and those volumes could be the configs, the secrets, the volume claims or APIs or the host pad or empty there. 01:00:57.000 --> 01:01:03.000 So this is the like the way that your container access data. 01:01:03.000 --> 01:01:14.000 Each one of these resources are the most important components here in QNets. 01:01:14.000 --> 01:01:26.000 We're going to define those over the training, but for sure we will go back here and discuss that. 01:01:26.000 --> 01:01:32.000 Actually that is what we are going to do just right now. 01:01:32.000 --> 01:01:36.000 At the end, why to use QNets? 01:01:36.000 --> 01:01:43.000 Basically, I have always said that QNets replaces the sysadmin. 01:01:43.000 --> 01:01:55.000 So if you are a sysadmin and you don't have knowledge and skills regarding QNets, 01:01:55.000 --> 01:01:59.000 you may very well be replaced because of this. 01:01:59.000 --> 01:02:11.000 Because QNets is the solution for a lot of issues that many companies have within their own processes. 01:02:11.000 --> 01:02:21.000 For example, in the old times, because I mean, you are a company that already has embraced QNets and that is not that common. 01:02:21.000 --> 01:02:28.000 The vast majority of companies haven't embraced QNets yet. 01:02:28.000 --> 01:02:42.000 So these those kinds of companies have issues like, for example, the application needs one terabyte for the database and we need to provision that storage. 01:02:42.000 --> 01:02:49.000 Or the application needs one public IP address in order to publish the service. 01:02:49.000 --> 01:02:58.000 Or the application needs X number of cores of CPU to run and we need to have those available. 01:02:58.000 --> 01:03:11.000 So that kind of stuff previously was done by a sysadmin, configuring, programming, provisioning, whatever was required to run an application. 01:03:11.000 --> 01:03:17.000 And nowadays with QNets that is done automatically or automagically you can say. 01:03:17.000 --> 01:03:27.000 So why to use QNets? Because I mean, it improves your ability to provide value to the company, 01:03:27.000 --> 01:03:37.000 creating new applications and launching those applications into production as fast as ever has been possible. 01:03:42.000 --> 01:03:50.000 It was easy to see three, six months required in order to launch an application to production. 01:03:50.000 --> 01:03:57.000 With QNets provided everything is in place, you can have every week a new release. 01:03:57.000 --> 01:04:03.000 And that is I mean, that's happening in a lot of companies and a lot of sectors. 01:04:03.000 --> 01:04:14.000 So that is one of the reasons as well. So I guess that we already have done this ecosystem. 01:04:14.000 --> 01:04:25.000 Perhaps this one is the one that we are missing right now. Let me go ahead and it's here. 01:04:25.000 --> 01:04:30.000 This is the landscape of cloud native landscape. 01:04:30.000 --> 01:04:43.000 So this is a PDF file that summarizes all the software of the whole landscape of QNets. 01:04:43.000 --> 01:05:01.000 This is huge. So in this link, in this link, you can have or you will find an interactive web page that shows you all the stuff that is available here. 01:05:06.000 --> 01:05:21.000 So this is interactive. So you can see here. So everything related databases, streaming platforms, applications, continuous integration. 01:05:21.000 --> 01:05:29.000 So all that everything that is here is software related to QNets. 01:05:29.000 --> 01:05:41.000 So please have in mind that there is no way that one person knows about all of this stuff. 01:05:41.000 --> 01:05:52.000 What you need to know is to understand where this thing is located, like be able to find your way here. 01:05:52.000 --> 01:06:04.000 So this is why all this stuff is important, because this is so complex that over the time you will learn to to to I mean, you will have that in mind. 01:06:04.000 --> 01:06:11.000 But at the beginning it will take some time. So so so it's not that easy because it's so big. 01:06:11.000 --> 01:06:19.000 And that is beautiful because a lot of times there is something that you want to do and it turns out that it's already there. 01:06:19.000 --> 01:06:24.000 You just need to dig a little bit. So everything that is here is nice. 01:06:24.000 --> 01:06:30.000 This, for example, this stuff, Chaos Engineering. This is crazy. 01:06:30.000 --> 01:06:41.000 Sadly, we we won't have the time in this training, but there is some applications that allows you to play. 01:06:41.000 --> 01:06:47.000 I mean, there is one that I found amusing that is this first. 01:06:50.000 --> 01:06:56.000 I forgot the name. These arcade games of shooting in first person. 01:06:56.000 --> 01:07:04.000 So you can run a game, the game on top of QNets and kill bots randomly. 01:07:04.000 --> 01:07:09.000 So when you shoot, what you are doing is killing a path. 01:07:09.000 --> 01:07:14.000 And that is done in order to see what happened with your application, with your system. 01:07:14.000 --> 01:07:23.000 That is Chaos Engineering. So that way, you know, if your application was well designed to survive and a random failure. 01:07:23.000 --> 01:07:31.000 So this is stuff really sometimes even crazy. OK, so we've got everything here. 01:07:31.000 --> 01:07:35.000 So let's do the first lab. So. 01:07:38.000 --> 01:07:42.000 This is the first lab. Let me explain a little bit this document. 01:07:42.000 --> 01:07:49.000 This document gives you what? Well, well, it shows like an objective. 01:07:49.000 --> 01:07:54.000 What you will gain after this lab and a step by step guide. 01:07:54.000 --> 01:08:08.000 This is a general step by step guide and a common through these comments are these codes are not to be followed by by by the letter. 01:08:08.000 --> 01:08:14.000 It's just like an example to give you an idea of what can be done. 01:08:14.000 --> 01:08:29.000 There are some additional exercises like this in which you can follow those one comment after the other to see what this creates. 01:08:30.000 --> 01:08:38.000 So in this part, first lab, the idea is just to explore a little bit about what we have discussed. 01:08:38.000 --> 01:08:45.000 I mean, to see in real life all those resources that we have. 01:08:45.000 --> 01:08:56.000 I want to show you some of the dashboards available, some of the tools that are available as well to manage one. 01:08:56.000 --> 01:08:59.000 A key word that's closer. There are I mean. 01:08:59.000 --> 01:09:06.000 There are hundreds of tools that you can use and every day you will find a new one. 01:09:06.000 --> 01:09:12.000 So if you know a one that want to share, please do, because I mean, there is a lot of stuff. 01:09:12.000 --> 01:09:17.000 So here we are using. Well, let me go back. 01:09:17.000 --> 01:09:21.000 So here we are going to use a mini cube cluster. 01:09:21.000 --> 01:09:25.000 Mini cube is a small distro. We are going to discuss that later. 01:09:25.000 --> 01:09:35.000 That it's used to for local development is the is the best way and stuff like this one for learning for labs. 01:09:35.000 --> 01:09:41.000 The idea is to explore the different resources within the cluster and see the dashboard. 01:09:41.000 --> 01:09:45.000 So here we are using the standard dashboard for Kubernetes. 01:09:45.000 --> 01:09:52.000 But we are we are going to use another one to see another one that is available within the cube. 01:09:52.000 --> 01:10:04.000 And also we're going to use a special path that has some tools to manage Kubernetes. 01:10:04.000 --> 01:10:08.000 This will run inside the cluster. 01:10:08.000 --> 01:10:10.000 So it will give you like a. 01:10:10.000 --> 01:10:15.000 A privileged position within the cluster to see stuff. 01:10:15.000 --> 01:10:20.000 And this other one is a Kubernetes management tool from the terminal. 01:10:20.000 --> 01:10:23.000 It's quite nice, actually. 01:10:23.000 --> 01:10:32.000 And some tips or some tools that will allow you to to handle better our environments. 01:10:32.000 --> 01:10:35.000 Oh, actually, I just realized that I'm missing. 01:10:35.000 --> 01:10:37.000 I know it's here. The namespace. 01:10:37.000 --> 01:10:44.000 This one, the Q and S is it's kind of important because we were going to use it. 01:10:44.000 --> 01:10:48.000 There is some prompt that you can use as well. 01:10:48.000 --> 01:10:58.000 She's just to play around and some other stuff that you may want to try. 01:10:58.000 --> 01:11:01.000 So please go ahead. 01:11:01.000 --> 01:11:04.000 And. 01:11:04.000 --> 01:11:10.000 And access to your to your terminal. 01:11:10.000 --> 01:11:14.000 To your terminal and. 01:11:14.000 --> 01:11:16.000 And let me. 01:11:16.000 --> 01:11:25.000 Close the minimize this if you want to have the. 01:11:25.000 --> 01:11:28.000 The documents here. 01:11:28.000 --> 01:11:31.000 Open. 01:11:31.000 --> 01:11:35.000 Also, if you want, you can do that. 01:11:35.000 --> 01:11:38.000 Right now that as well, you can go. 01:11:38.000 --> 01:11:44.000 Open the Firefox browser and go to Gmail. 01:11:44.000 --> 01:11:46.000 Log in there. 01:11:46.000 --> 01:11:55.000 And send to yourself the documents if you want to have those in your local computer. 01:11:55.000 --> 01:11:59.000 That will be also a good moment to do that. 01:11:59.000 --> 01:12:01.000 And. 01:12:01.000 --> 01:12:09.000 Another thing well is let me open this is I forgot to show you this. 01:12:09.000 --> 01:12:10.000 This is important. 01:12:10.000 --> 01:12:17.000 So here in the home directory, you will find a folder called. 01:12:17.000 --> 01:12:21.000 K.A.S. advanced labs. 01:12:21.000 --> 01:12:33.000 So the idea is to be in this directory because in this directory, you will find all the files that we are going to use. 01:12:33.000 --> 01:12:35.000 During the training. 01:12:35.000 --> 01:12:41.000 So, yeah, I just realized that the. 01:12:41.000 --> 01:12:46.000 Okay, we are missing some files, but in the. 01:12:46.000 --> 01:12:49.000 I'm going to access your machines to to copy that. 01:12:49.000 --> 01:12:53.000 So. 01:12:53.000 --> 01:12:56.000 Let me do that. 01:12:56.000 --> 01:13:07.000 Also, in when you're in this directory, you can open the visual studio codes with the common code that. 01:13:07.000 --> 01:13:14.000 Because this will be like a good way to to see the. 01:13:14.000 --> 01:13:18.000 The files that we are going to work with. 01:13:18.000 --> 01:13:22.000 And it's a good tool to work. 01:13:22.000 --> 01:13:26.000 So it opens a lot of tabs from what I see. 01:13:26.000 --> 01:13:27.000 So. 01:13:27.000 --> 01:13:35.000 Just close that and give me just a second because I will need to do. 01:13:35.000 --> 01:13:38.000 Something in your machines. 01:13:38.000 --> 01:13:47.000 So please go ahead, copy the files in your systems and prepare the environment and give me just a second. 01:13:47.000 --> 01:13:56.000 Is there any question of what we discussed previously? 01:14:42.000 --> 01:14:46.000 Okay, let me I'm going to access each one of your desktops. 01:14:48.000 --> 01:14:54.000 To copy these files because the image means those. 01:14:54.000 --> 01:14:57.000 And we're going to use those during the training. 01:14:57.000 --> 01:14:59.000 So. 01:14:59.000 --> 01:15:03.000 Just bear with me in a few minutes. 01:15:11.000 --> 01:15:15.000 So give me just a second Dallas. 01:15:15.000 --> 01:15:19.000 I'm going to execute a command in your machine. 01:15:19.000 --> 01:15:22.000 Careful. 01:15:49.000 --> 01:15:57.000 Okay. 01:16:45.000 --> 01:16:46.000 Okay. 01:16:46.000 --> 01:16:49.000 Thank you Dallas. 01:16:52.000 --> 01:16:55.000 So William, give me just a second. 01:16:55.000 --> 01:17:00.000 I'll take control of your machine to copy some stuff. 01:17:14.000 --> 01:17:16.000 Okay, thank you William. 01:17:16.000 --> 01:17:18.000 You're good to go. 01:17:18.000 --> 01:17:22.000 And some let me try yours, please. 01:17:32.000 --> 01:17:34.000 Okay, perfect. 01:17:34.000 --> 01:17:35.000 You're good to go. 01:17:35.000 --> 01:17:37.000 Some and Nick. 01:17:37.000 --> 01:17:43.000 Nick is not here, but I'm making his system ready. 01:17:48.000 --> 01:17:50.000 Okay. 01:17:51.000 --> 01:17:53.000 Okay, perfect. 01:17:56.000 --> 01:17:58.000 So. 01:17:58.000 --> 01:18:04.000 So what I did is to to copy the files because I missed that part. 01:18:04.000 --> 01:18:06.000 But anyway. 01:18:06.000 --> 01:18:08.000 So this is the advanced lab. 01:18:08.000 --> 01:18:16.000 Let me I'm going to do it here, but you can go ahead and work with it as well. 01:18:16.000 --> 01:18:22.000 So we are going to run the mini cube cluster. 01:18:22.000 --> 01:18:26.000 This cluster is just one for worry. 01:18:26.000 --> 01:18:28.000 We are going to remove that. 01:18:28.000 --> 01:18:36.000 So please, please notice that I'm in at the K eight s advanced labs directory. 01:18:36.000 --> 01:18:39.000 So go to this directory. 01:18:39.000 --> 01:18:45.000 And because you have the files there, it's better. 01:18:45.000 --> 01:18:57.000 And also open a visual studio code with this common code that and this will open this so you can see the files if you want to. 01:19:04.000 --> 01:19:09.000 Well, there are some extensions that may be useful. 01:19:09.000 --> 01:19:13.000 So it's OK if you sold us as well. 01:19:13.000 --> 01:19:21.000 OK, so the idea here is to to launch this mini cube. 01:19:21.000 --> 01:19:29.000 So mini cube is a small distro is the oldest one, they say. 01:19:29.000 --> 01:19:48.000 And this was the first distro that was able to run in a laptop because before that running to our next was basically impossible to to do in a common computer. 01:19:48.000 --> 01:19:53.000 It was so intensively resources that it wasn't that feasible. 01:19:53.000 --> 01:19:58.000 So many to was the first distribution. 01:19:58.000 --> 01:20:04.000 The children that distribution decided to run inside a normal computer. 01:20:04.000 --> 01:20:10.000 In this case, we are running a mini cube using Docker. 01:20:10.000 --> 01:20:23.000 We are going to use Docker as the vaccine for this training just for to make it easy because otherwise it will be a little bit more complex to work with. 01:20:23.000 --> 01:20:31.000 However, mini cube supports KVM, which is the the lead virtualization for Linux. 01:20:31.000 --> 01:20:34.000 It also supports virtual box. 01:20:34.000 --> 01:20:38.000 It supports Mac, the high fair high effects. 01:20:38.000 --> 01:20:44.000 It's the name I forgot the name, which is the virtualization of Mac OS. 01:20:44.000 --> 01:20:54.000 And also it supports secret shell so you can connect to physical notes and create a keyword cluster with me. 01:20:54.000 --> 01:21:02.000 One of the nice things about me, me too, is that it has a lot, a lot of plugins. 01:21:02.000 --> 01:21:06.000 So it's really powerful in that in that regards. 01:21:06.000 --> 01:21:13.000 So, OK, so you can see here it doesn't take long to solid users. 01:21:13.000 --> 01:21:17.000 Docker, it creates a control plane. 01:21:35.000 --> 01:21:40.000 You can run a mini cube status to see what is here. 01:21:40.000 --> 01:21:43.000 So you will find the control plane. 01:21:43.000 --> 01:21:52.000 This mini cube, which the cause, the cube led the APA and the cube config configure in this server. 01:21:52.000 --> 01:22:05.000 You can run the cube CPL get namespaces from the lab that is there, for example. 01:22:05.000 --> 01:22:10.000 Actually, what William is doing, it's a good idea as well. 01:22:10.000 --> 01:22:12.000 I like to do that as well. 01:22:12.000 --> 01:22:18.000 I'm going to show you guys, which is to have a terminal within the Visual Studio Code. 01:22:18.000 --> 01:22:20.000 This is super useful as well. 01:22:20.000 --> 01:22:23.000 And you can have multiple ones here. 01:22:23.000 --> 01:22:27.000 So that is another way to do everything as well. 01:22:27.000 --> 01:22:39.000 So and there is this shell path that has some tools. 01:22:41.000 --> 01:22:49.000 So this show, but if you run the script, it will install this application. 01:22:49.000 --> 01:22:51.000 It creates a namespace. 01:22:51.000 --> 01:22:56.000 It creates a service account, role binding apart. 01:22:56.000 --> 01:22:59.000 And we just wait for it to be ready. 01:22:59.000 --> 01:23:02.000 Let's give some definitions in the meantime. 01:23:02.000 --> 01:23:05.000 The namespace. 01:23:05.000 --> 01:23:13.000 Actually, the last definition that I read regarding namespace. 01:23:13.000 --> 01:23:14.000 Actually, I like it. 01:23:14.000 --> 01:23:24.000 I like it because it says that namespace is a virtual kubernetes clusters within kubernetes. 01:23:24.000 --> 01:23:42.000 And it's kind of true because the namespace resource is like a back in which you have all the resources for your application collected. 01:23:42.000 --> 01:23:51.000 It's I mean, if you want to create an application, you put everything from that application in this namespace. 01:23:51.000 --> 01:23:53.000 So it's an environment. 01:23:53.000 --> 01:23:56.000 It's your stack, your application. 01:23:56.000 --> 01:24:01.000 So it's a way to have control of your cluster. 01:24:01.000 --> 01:24:06.000 So you can have multiple applications, each one in a different namespace. 01:24:06.000 --> 01:24:11.000 So it provides like that space to work with. 01:24:11.000 --> 01:24:15.000 So here I run the shell pods. 01:24:15.000 --> 01:24:23.000 And the first thing I want you to notice is this, because this is a kubernetes shell. 01:24:23.000 --> 01:24:39.000 This kubernetes shell shows you the address of the API server, the context or the namespace in which this session is open. 01:24:39.000 --> 01:24:44.000 So here you will have different commands available. 01:24:44.000 --> 01:24:52.000 Qt, CPL, for example, the one that we discussed later, the K9S. 01:24:52.000 --> 01:24:54.000 It's there as well. 01:24:54.000 --> 01:24:56.000 Let me close this one. 01:24:56.000 --> 01:24:59.000 So this is this is nice to explore. 01:24:59.000 --> 01:25:04.000 So you go here. 01:25:04.000 --> 01:25:21.000 This is like a quick. 01:25:21.000 --> 01:25:31.000 So this is like V, but in order to exit, you have to do semicolon Q. 01:25:31.000 --> 01:25:33.000 And that way you can get out of that. 01:25:33.000 --> 01:25:36.000 So feel free to explore a little bit. 01:25:36.000 --> 01:25:38.000 There is more comments here. 01:25:54.000 --> 01:25:59.000 So take a look and follow the guide. 01:25:59.000 --> 01:26:04.000 And please also explore. 01:26:04.000 --> 01:26:15.000 I suggest you to right now to open the the API reference, for example, 01:26:15.000 --> 01:26:24.000 and explore with Qt, CPL, each one of those resources you have in the system. 01:26:24.000 --> 01:26:34.000 Also, in materials, you have the the sheet sheet qnets file. 01:26:34.000 --> 01:26:45.000 So here you will find not all, but a lot of comments that may be useful for you. 01:26:45.000 --> 01:26:50.000 So go ahead and explore a little bit. 01:26:50.000 --> 01:26:54.000 And we are going to. 01:26:54.000 --> 01:27:01.000 Just a few minutes, actually, because we are going to after we install the dashboard, 01:27:01.000 --> 01:27:09.000 we're going to deploy the API server and the API, an API explorer. 01:27:09.000 --> 01:27:10.000 Sorry. 01:27:10.000 --> 01:27:13.000 And take a look. 01:27:13.000 --> 01:27:14.000 There. 01:27:20.000 --> 01:27:23.000 If you don't want to use the shell pod, it's OK. 01:27:23.000 --> 01:27:28.000 I mean, it's just like another tool to have this work in any cluster. 01:27:28.000 --> 01:27:33.000 So so it's it's nice. 01:27:33.000 --> 01:27:38.000 I'm going to show you the dashboards. 01:27:38.000 --> 01:27:42.000 Those are also neat. 01:27:42.000 --> 01:27:47.000 These will one be our definite cluster, definitive cluster. 01:27:47.000 --> 01:27:51.000 So we're going to the left this one. 01:28:06.000 --> 01:28:13.000 Oh, here I enabled the metrics service server, which is 01:28:16.000 --> 01:28:22.000 the metrics collector for QNets. 01:28:22.000 --> 01:28:33.000 We need to be sent along and I'm doing that because that way we can see good information in the dashboard. 01:28:33.000 --> 01:28:35.000 So. 01:28:46.000 --> 01:28:56.000 One thing with the dashboard when you reach that part is that it takes the terminal, it takes over the terminal. 01:28:56.000 --> 01:29:00.000 So right now is just for to explore. 01:29:00.000 --> 01:29:11.000 But later we will have that running always because it will be a good idea for you to see in the dashboard what we are doing underneath. 01:29:11.000 --> 01:29:13.000 So. 01:29:23.000 --> 01:29:27.000 There is another dashboard there, which is the heat lamp. 01:29:27.000 --> 01:29:32.000 The heat lamp is is a. 01:29:32.000 --> 01:29:36.000 Web interface interface easy to use. 01:29:36.000 --> 01:29:38.000 It's it's not that bad. 01:29:38.000 --> 01:29:41.000 It's nice. 01:29:41.000 --> 01:29:43.000 In my. 01:29:43.000 --> 01:29:48.000 In my from my point of view, the best interface is open shift. 01:29:48.000 --> 01:29:50.000 There is no. 01:29:50.000 --> 01:29:54.000 I mean, it's way advanced that any other one. 01:29:54.000 --> 01:29:57.000 Rancher is not that good at all. 01:29:57.000 --> 01:30:01.000 But this this this this does the work. 01:30:01.000 --> 01:30:04.000 So I'm going to deploy this one as well. 01:30:32.000 --> 01:30:37.000 When you launch the heat lamp, it will requires you to create. 01:30:37.000 --> 01:30:44.000 You see me to the instruction is there, but it also requires that talking to access. 01:30:44.000 --> 01:30:48.000 So you will have to to open a new terminal as well. 01:30:48.000 --> 01:30:50.000 And. 01:30:50.000 --> 01:30:52.000 I know this gives control back. 01:30:52.000 --> 01:30:56.000 So in the same line, you can create the talk. 01:31:07.000 --> 01:31:35.000 So I will be there. 01:31:50.000 --> 01:31:51.000 Me. 01:31:51.000 --> 01:31:58.000 Point to you something which is kind of interesting here. 01:31:58.000 --> 01:32:01.000 Both in the two or next dashboard. 01:32:01.000 --> 01:32:04.000 And in the. 01:32:04.000 --> 01:32:18.000 In the heat lamp that dashboard, you will find well, although headlamp headlamp is not that that is not quite close to how it is in dashboard. 01:32:18.000 --> 01:32:20.000 But for example, workloads. 01:32:20.000 --> 01:32:31.000 So if you see here, this menu workloads, it shows spots, replica sets, then sets, sets, all these. 01:32:31.000 --> 01:32:37.000 And if you go to QNAP dashboard, you will see kind of the same. 01:32:37.000 --> 01:32:44.000 Oh, it's replica sets, states, sets, jobs, deployments, day, month, from jobs. 01:32:44.000 --> 01:32:49.000 So if you go to the APA reference. 01:32:49.000 --> 01:32:55.000 You will see that there is the workload resources. 01:32:55.000 --> 01:33:11.000 So that is like a component of the APA, all the workload resources, which are the pod, the replication controller, the replica set, the deployment, the state pool, the diamond said the job, the current job. 01:33:11.000 --> 01:33:21.000 So what I'm trying to say here is that this interface is just like a graphical interface to the API. 01:33:21.000 --> 01:33:33.000 Each one of these options here is like a visual representation of what the API is telling us about the resource. 01:33:33.000 --> 01:33:38.000 So it's. 01:33:38.000 --> 01:33:51.000 So everything here, so if we take a look into the pods, you will see here a lot of stuff, the specs, every one of the parameters. 01:33:51.000 --> 01:33:56.000 And that is what it's in here. 01:33:56.000 --> 01:34:06.000 This is what it's in here. 01:34:06.000 --> 01:34:21.000 In the in the host, we have installed the K9S tool so you can execute that directly as well. 01:34:21.000 --> 01:34:30.000 This actually I really I like this tool because it shows you like. 01:34:30.000 --> 01:34:34.000 Like a full view of the of your cluster. 01:34:34.000 --> 01:34:39.000 So you can see the pods, the namespaces. 01:34:39.000 --> 01:34:44.000 If you click in one of the namespaces, you will see the pod. 01:34:44.000 --> 01:34:48.000 If you click enter there, you can see the logs. 01:34:48.000 --> 01:34:50.000 If there is any. 01:34:50.000 --> 01:34:54.000 So you can navigate fairly easy. 01:34:54.000 --> 01:35:00.000 I'm not sure if that showing logs. 01:35:00.000 --> 01:35:05.000 That's us. 01:35:05.000 --> 01:35:11.000 OK, there are looks here. 01:35:11.000 --> 01:35:18.000 So it's it's kind of cool. 01:35:18.000 --> 01:35:23.000 If you there is the describe. 01:35:23.000 --> 01:35:34.000 So you can go to any one of the resources and describe the resource and you will have the manifest. 01:35:34.000 --> 01:35:41.000 Which is the summary of the API. 01:35:41.000 --> 01:35:49.000 Or each one of the API parameters are still here or defined here. 01:35:49.000 --> 01:35:53.000 So it's good as well. 01:35:53.000 --> 01:35:56.000 And actually, you can edit here as well. 01:35:56.000 --> 01:36:02.000 So you can edit one of those manifest with with with. 01:36:02.000 --> 01:36:12.000 And you have to you should use a semicolon cube in order to exit the most. 01:36:12.000 --> 01:36:14.000 Yeah, it's kind of cool. 01:36:14.000 --> 01:36:18.000 If you want to see the nodes. 01:36:18.000 --> 01:36:21.000 Has the. 01:36:21.000 --> 01:36:25.000 Difference options. 01:36:25.000 --> 01:36:31.000 OK, so let's have a small break. 01:36:31.000 --> 01:36:35.000 15 minutes and. 01:36:35.000 --> 01:36:39.000 And we we will keep going. 01:36:39.000 --> 01:36:45.000 The idea here is to actually is to deploy our server. 01:36:45.000 --> 01:36:53.000 But we're going to have a small discussion regarding different alternatives and ways to do that. 01:36:53.000 --> 01:37:02.000 And we are going to be back here exploring the API and a lot of more comments with QCTL. 01:37:02.000 --> 01:37:10.000 So. So let's meet in in 15. 01:37:10.000 --> 01:37:15.000 Minutes. OK, sounds good. Cool. 01:37:15.000 --> 01:37:18.000 So take a quick look. Yeah, back. 01:37:18.000 --> 01:37:22.000 You know what you might say. 01:37:22.000 --> 01:37:25.000 Thank you. 01:38:37.000 --> 01:38:44.000 So what we have done so far is just explore a little bit about QNets. 01:38:44.000 --> 01:39:04.000 I just wanted you to get familiarized with the different dashboards that are available and some of the tools that we have here in the environment. 01:39:04.000 --> 01:39:07.000 There is. 01:39:07.000 --> 01:39:14.000 A few tools here that may be worth to check right now. 01:39:14.000 --> 01:39:17.000 One is Qt CPX. 01:39:17.000 --> 01:39:19.000 Qt CPX. 01:39:19.000 --> 01:39:24.000 It's a tool that allows you to change context. 01:39:24.000 --> 01:39:28.000 What is the context is a QNets cluster. 01:39:28.000 --> 01:39:35.000 So, for example, you in your company have. 01:39:35.000 --> 01:39:45.000 A QNets cluster for development and other for testing and another one for production. 01:39:45.000 --> 01:39:52.000 So with Qt CPX, you can change in which cluster are you going to work. 01:39:52.000 --> 01:40:00.000 So in the next lab, we're going to deploy at least one cluster, additional cluster, just for testing purposes. 01:40:00.000 --> 01:40:05.000 So we can use this and see how we can change between clusters as well. 01:40:05.000 --> 01:40:12.000 That is one which is useful in those environments. 01:40:12.000 --> 01:40:15.000 And the other one is QNs. 01:40:15.000 --> 01:40:23.000 This is super useful because QNs allows you to change between namespaces. 01:40:23.000 --> 01:40:30.000 It turns out that I mean, if you are using pure QNets. 01:40:30.000 --> 01:40:43.000 You may have multiple namespaces, at least each one for your application or perhaps several ones for your application for each one of the environments. 01:40:43.000 --> 01:41:05.000 The namespace can be used, for example, to have for the application one, the development environment for the application one, the testing environment for the application one, the production environment that can be done using namespaces. 01:41:05.000 --> 01:41:12.000 Or you can have application one, two, three, four for the production cluster. 01:41:12.000 --> 01:41:23.000 So you will have different namespaces in the same cluster, but with with different applications in the same cluster separated with different namespaces. 01:41:23.000 --> 01:41:37.000 Or you can have like a mix of those, for example, one application in which you have a namespace for the front end and another namespace for the back end. 01:41:37.000 --> 01:41:43.000 That is that is usual. 01:41:43.000 --> 01:41:52.000 You can see that out in the world is not like the best practice from my point of view, but that happens as well. 01:41:52.000 --> 01:41:57.000 So so that QNs allows you to change that. 01:41:57.000 --> 01:41:59.000 So let me show you here. 01:41:59.000 --> 01:42:05.000 So I'm right now I'm in the default in the default namespace. 01:42:05.000 --> 01:42:19.000 So if I execute a QCTL get all and this means QCTL get all the resources, get me all the resources that are that are available in this namespace. 01:42:19.000 --> 01:42:21.000 I will see only the service. 01:42:21.000 --> 01:42:25.000 There is no other resource at the default namespace. 01:42:25.000 --> 01:42:45.000 If I change to the heat lamp namespace QNs, I will I will I will execute the same comment and I will have the port, which has the running application. 01:42:45.000 --> 01:43:05.000 The service, which is what the one that is exposing the application to the network and the deployment, which is like the manifest with the instructions, the declarative instructions of how to how this application runs. 01:43:05.000 --> 01:43:12.000 And the replica set, which is the one that is in charge of the state machine. 01:43:12.000 --> 01:43:20.000 So the number of ports decided, the sirex, the currents once and the really ones. 01:43:20.000 --> 01:43:23.000 So so I can have information here. 01:43:23.000 --> 01:43:27.000 So this is useful in order to change namespace. 01:43:45.000 --> 01:43:50.000 And some other comments that may be useful here. 01:43:50.000 --> 01:43:53.000 They get notes to see the notes only. 01:43:53.000 --> 01:43:55.000 We have one note only. 01:43:55.000 --> 01:44:01.000 But in the in the next lab, we are going to deploy two notes for a cluster. 01:44:01.000 --> 01:44:03.000 And they get bots. 01:44:03.000 --> 01:44:05.000 We showed you the bots. 01:44:05.000 --> 01:44:12.000 And there is another one, which is kind of cool. 01:44:12.000 --> 01:44:25.000 Explain, for example, if I want to have an explanation of the of the resource, but I can use explain bots. 01:44:25.000 --> 01:44:30.000 And what this is showing me again is the API. 01:44:30.000 --> 01:44:35.000 So it shows me like a summary of the API. 01:44:35.000 --> 01:44:48.000 But this is super useful because there is I mean, there is a lot of stuff here that you are well, that not necessarily one is familiarized with. 01:44:48.000 --> 01:44:50.000 So this this is used as well. 01:44:50.000 --> 01:44:57.000 So please, when you when we run any comment and you have any doubt, you can run these as well. 01:44:57.000 --> 01:45:02.000 And you will have some useful information to work with. 01:45:02.000 --> 01:45:07.000 There is another resource that is useful as well. 01:45:07.000 --> 01:45:10.000 The API resources. 01:45:10.000 --> 01:45:26.000 This shows you if your cluster has these API resource running enabled in which namespace is. 01:45:26.000 --> 01:45:32.000 And well, all the information required to have it. 01:45:32.000 --> 01:45:39.000 So there is a lot of resources that you may have there. 01:45:39.000 --> 01:45:46.000 And there are other comments there, so we can leave those for the next lab. 01:45:46.000 --> 01:45:49.000 So no worries at all. 01:45:49.000 --> 01:45:52.000 OK, so is there any question? 01:45:52.000 --> 01:45:56.000 Let me know if the pace that we have is good enough. 01:45:56.000 --> 01:46:06.000 If you want to spend more time on the labs or just give me feedback whenever you feel that is needed. 01:46:06.000 --> 01:46:11.000 So let's see. 01:46:11.000 --> 01:46:14.000 OK, so this is the. 01:46:14.000 --> 01:46:18.000 But that we had. 01:46:18.000 --> 01:46:26.000 So something just like general information that may be useful, the version of cybernets. 01:46:26.000 --> 01:46:38.000 One of the biggest headaches of cybernets is that if there is a new version and new release every three months and every six months. 01:46:38.000 --> 01:46:46.000 So in a year you may have to upgrade your cybernets cluster at least at least once. 01:46:46.000 --> 01:46:49.000 Usually it should be twice. 01:46:49.000 --> 01:47:03.000 And this is kind of important because the amount of cybernets clusters that are out in the wild without any protection, 01:47:03.000 --> 01:47:11.000 with the APA server exposed, with nodes exposed is absolutely huge. 01:47:11.000 --> 01:47:23.000 I mean, a lot of ransomware attacks have happened because cybernets clusters are. 01:47:24.000 --> 01:47:32.000 Are available in the public Internet and any any. 01:47:32.000 --> 01:47:41.000 Failure or security is exploited and and voila, your infrastructure is compromised. 01:47:41.000 --> 01:47:46.000 So it's good to have this. 01:47:46.000 --> 01:47:59.000 And I am this do not let your cybernets cluster to get behind the versioning too fast because you may face issues as is a really live project. 01:47:59.000 --> 01:48:12.000 The APA tends to change a lot, so you may face failures in your deployments if you let a lot of versioning to pass by. 01:48:12.000 --> 01:48:15.000 So that is something that you need to be aware of. 01:48:15.000 --> 01:48:25.000 Also, the QCTL, the tool to to handle the the cybernets cluster, it allows you to work with a range of versions. 01:48:25.000 --> 01:48:29.000 But also it gets it gets behind the versioning. 01:48:29.000 --> 01:48:34.000 So that should be like already also in place. 01:48:34.000 --> 01:48:38.000 So what can you do with cybernets? 01:48:38.000 --> 01:48:58.000 These these three slides, these three slides are are are useful in the sense that you should check each one of these items over the time, because this is what you can do with cybernets. 01:49:08.000 --> 01:49:15.000 So what can you do, for example, start five containers for a back end? 01:49:15.000 --> 01:49:19.000 This is an example. This is an APA. 01:49:19.000 --> 01:49:26.000 You can place a load balancer, an internal load balancer in front of those containers. 01:49:26.000 --> 01:49:36.000 So whenever something is going to access the back end, you can have the workload balanced. 01:49:36.000 --> 01:49:42.000 You can deploy deploy 10 containers with the front end. 01:49:42.000 --> 01:49:48.000 So you can handle the workload of your virtual store, for example. 01:49:48.000 --> 01:49:55.000 You can place or deploy a public load balancer in front of this architecture. 01:49:55.000 --> 01:50:05.000 If there is a holiday, a spike in the traffic, you can grow that cluster and add containers to handle the load manually. 01:50:05.000 --> 01:50:07.000 You can do that manually, for example. 01:50:07.000 --> 01:50:18.000 If there is a new release of your of your application, you can replace the running containers with the new version of the front end, for example. 01:50:18.000 --> 01:50:26.000 But the beautiful the beauty thing here is that you can do that one at a time without interrupting the service. 01:50:26.000 --> 01:50:39.000 So you can do like a control upgrade, which a few years ago was kind of overwhelming or hardly easy to do. 01:50:39.000 --> 01:50:42.000 So so that is something amazing here. 01:50:42.000 --> 01:50:53.000 And you can now to scale so you can configure the cluster that if there is a lot of CPU requests or usage in your cluster, 01:50:53.000 --> 01:51:00.000 you can launch automatically new parts or even new nodes to handle the load. 01:51:00.000 --> 01:51:05.000 You can schedule and you can manage the resources. 01:51:05.000 --> 01:51:13.000 I mean, you can put constraints on how many CPU, how many RAM a container can consume or can use. 01:51:13.000 --> 01:51:21.000 You can have advanced patterns for deployment or deploy new releases. 01:51:21.000 --> 01:51:29.000 So you can have you can test a new version of your website and keep running the current version. 01:51:29.000 --> 01:51:32.000 And depending on the results, you can move everything to the new version. 01:51:32.000 --> 01:51:36.000 So you have different kind of deployments here. 01:51:36.000 --> 01:51:40.000 You can have batch jobs, for example. 01:51:40.000 --> 01:51:58.000 The you can have a closing process every day that runs on a specific time or you can have a general task to execute only one time and can do that. 01:51:58.000 --> 01:52:06.000 You can control what can be done by someone and on which resources for the cluster. 01:52:06.000 --> 01:52:09.000 You can have a service. 01:52:09.000 --> 01:52:20.000 I mean, this means a service that will memorize is going to memorize the information or keep the data without losing it. 01:52:20.000 --> 01:52:34.000 For example, a database you and this is the is one of the most recent one with the operators with the C or these that just some resource definitions that you can automate complex tasks. 01:52:34.000 --> 01:52:47.000 I think that I guess that we are good in time and we can explore the the the open chip cluster so you can see the amount of operators are available. 01:52:47.000 --> 01:52:52.000 So these three is like show you what you can do right now with cybernets. 01:52:52.000 --> 01:52:59.000 So that is good to have and to check over the time so you can grow in your practice as well. 01:52:59.000 --> 01:53:09.000 So regarding cluster setups for QMS, there are several ways or several deployments available. 01:53:09.000 --> 01:53:22.000 For example, you can have a single node cluster for your developers or for you to try stuff for you to try manifest for you to try different configurations in this single node cluster. 01:53:22.000 --> 01:53:24.000 Everything is in the same place. 01:53:24.000 --> 01:53:27.000 The API, the controllers, the scheduler, the QBlet. 01:53:27.000 --> 01:53:30.000 So it's in the same place. 01:53:30.000 --> 01:53:37.000 Or there are another alternative for deployment is the managed cybernets, which is I think that is the one that you have. 01:53:37.000 --> 01:53:40.000 You have a case in Amazon. 01:53:40.000 --> 01:53:44.000 So so so almost everyone. 01:53:45.000 --> 01:53:54.000 All of the of the cloud providers offer a managed cybernets in which the control plane is handled by them. 01:53:54.000 --> 01:53:57.000 They are the ones responsible for the control plane. 01:53:57.000 --> 01:54:06.000 So they are supposedly they are responsible for backing up the ACCD, the database and have a high availability for the API server. 01:54:06.000 --> 01:54:12.000 So you don't have to deal with this, but you have to deal with the workers. 01:54:12.000 --> 01:54:18.000 So this is the the nodes that you have in the cloud. 01:54:18.000 --> 01:54:20.000 These are your responsibility. 01:54:20.000 --> 01:54:34.000 And for example, in Amazon, you are the one who's in charge of upgrade these nodes whenever Amazon decides to upgrade the control plane. 01:54:34.000 --> 01:54:37.000 So that is something to take into account. 01:54:38.000 --> 01:54:46.000 Another environment that you can deploy is one with a single control plane and multiple workers. 01:54:46.000 --> 01:54:55.000 This is actually pretty common, not the best for production at all, because the control plane is super sensitive. 01:54:55.000 --> 01:54:59.000 If you have an issue with your database, you lost everything. 01:54:59.000 --> 01:55:07.000 So but this is useful for testing purposes or or or or development as well. 01:55:07.000 --> 01:55:12.000 Another architecture may be to have a stack control plane. 01:55:12.000 --> 01:55:17.000 I mean, like multiple control plane, they're the best practices to have at least three. 01:55:17.000 --> 01:55:22.000 Well, actually, to have three more than three is not that common. 01:55:24.000 --> 01:55:29.000 Up to five is the most that you will have, but that must be huge. 01:55:29.000 --> 01:55:31.000 So three is more than enough. 01:55:31.000 --> 01:55:36.000 And here you will have a replication for the database. 01:55:36.000 --> 01:55:51.000 You will have a load balancer for the API so it can distribute the workload between the different API servers that are running and multiple nodes that are connected or access the API. 01:55:51.000 --> 01:55:55.000 API load balancer in order to interact with the control plane. 01:55:55.000 --> 01:56:03.000 So this is actually this is the most common on premises deployment for open chief. 01:56:03.000 --> 01:56:07.000 For example, this is the standard way. 01:56:08.000 --> 01:56:26.000 You can have another architecture here in which you have only three nodes or multiple nodes and all of those nodes are running the both the control plane and both the workers. 01:56:26.000 --> 01:56:36.000 So this is actually another useful structure, but it's not like for production from my point of view. 01:56:36.000 --> 01:56:41.000 From my point of view, this is the one that you should have in production on premises. 01:56:41.000 --> 01:56:44.000 And this is this. 01:56:44.000 --> 01:56:52.000 I mean, if you are comfortable with the cloud managing your control plane, this is the way to go. 01:56:52.000 --> 01:56:56.000 Otherwise, I would recommend this architecture as well. 01:56:56.000 --> 01:57:01.000 Yes, in a infrastructure as a service setup as well. 01:57:01.000 --> 01:57:05.000 And there is more advanced ways to do this. 01:57:05.000 --> 01:57:18.000 If you have a really big configuration, you have you can have multiple APIs, high availability for the controllers and the scheduler and what balancer for the city. 01:57:18.000 --> 01:57:25.000 So there are different ways to do this or to split the traffic as well. 01:57:25.000 --> 01:57:40.000 So these are different ways to do the most important ones will be the single node, the managed, and then where is it? 01:57:40.000 --> 01:57:43.000 This one and the stack control. 01:57:43.000 --> 01:57:47.000 Those are the three most important ones. 01:57:47.000 --> 01:57:56.000 So regarding how to plan for your cluster or how to define the sign, how your cluster should be. 01:57:56.000 --> 01:58:14.000 So at the end, your cluster, I mean, the tested to your nets goes up to five thousand nodes with no more than 110 votes per node and no more than one hundred and fifty thousand votes in total. 01:58:14.000 --> 01:58:23.000 So this will be if you have five thousand nodes and one hundred and fifty thousand votes, it's like 30 votes per node. 01:58:23.000 --> 01:58:26.000 So it's fairly common to have. 01:58:26.000 --> 01:58:31.000 I mean, that your cluster is around this number of votes per node. 01:58:31.000 --> 01:58:40.000 So this is like the role of thumb that you should use to design your cluster for at least one hundred votes per node. 01:58:40.000 --> 01:58:50.000 And what you do here is to estimate how much memory and how much CPU each one of the votes are going to use. 01:58:50.000 --> 01:58:57.000 And you just multiply that and you will have like the amount of memory and CPU that your node requires. 01:59:12.000 --> 01:59:18.000 So that is like the like the general idea here. 01:59:18.000 --> 01:59:22.000 Regarding Docker, you don't really need Docker right now. 01:59:22.000 --> 01:59:27.000 As I told you, we we are using the container engine. 01:59:27.000 --> 01:59:42.000 So there are mostly two options, container container D and container runtime interface, CREO, which is the like the main options. 01:59:42.000 --> 01:59:49.000 IBM, Docker and Canonical are the ones that use container D most of the time. 01:59:49.000 --> 01:59:51.000 Google Cloud use this one. 01:59:51.000 --> 01:59:57.000 And CREO is the one that is used by Rehab, by SAS, SUSE. 01:59:57.000 --> 02:00:03.000 Actually, I'm not sure which one is the one that is being used by Amazon right now. 02:00:03.000 --> 02:00:06.000 So those are the container engines. 02:00:06.000 --> 02:00:08.000 And the Docker was removed. 02:00:08.000 --> 02:00:19.000 Actually, it was last year, almost two years by now in the release one, 24 was completely removed the Docker support. 02:00:19.000 --> 02:00:28.000 So, however, we still need Docker not for the Kubernetes cluster, but for all the development needs that you have as well. 02:00:28.000 --> 02:00:39.000 Regarding installation, well, the cube is what we are going to use here is useful for this purpose. 02:00:39.000 --> 02:00:56.000 But you also have cube ADN, which is the not the official, but the option included with Kubernetes to install a cluster from from the grown up from scratch. 02:00:56.000 --> 02:01:03.000 And Kops is another option to deploy clusters mostly for AWS. 02:01:03.000 --> 02:01:08.000 However, those are not the only options available as well. 02:01:08.000 --> 02:01:16.000 In order to set up Kubernetes, you will need to have in mind all these different components. 02:01:16.000 --> 02:01:22.000 You will have to be aware of the certificates that you need. 02:01:22.000 --> 02:01:32.000 And usually that is not that common, to be honest, to deploy a cluster from scratch. 02:01:32.000 --> 02:01:38.000 Only if you want to to really learn how to do this is recommended. 02:01:38.000 --> 02:01:45.000 Actually, in the in the slides, there is a step by step for you to deploy a cluster using cube ADN. 02:01:45.000 --> 02:01:51.000 So if you want to give that a try, that is a nice weekend project for for sure. 02:01:51.000 --> 02:02:00.000 And right now, what is more common is the well, the managed clusters, I will say is the most common ones. 02:02:00.000 --> 02:02:08.000 And after that, clusters like with Rancher or OpenChip on-premises are the ones that follow, 02:02:09.000 --> 02:02:15.000 because those help you to deploy without too much fast. 02:02:15.000 --> 02:02:20.000 These kind of clusters. So let me let me jump a little bit here. 02:02:20.000 --> 02:02:27.000 I mean, this is what follows is like the same explanation that I just gave. 02:02:27.000 --> 02:02:32.000 So. Cube ADN. 02:02:33.000 --> 02:02:38.000 OK, so the local development clusters, there are several options. 02:02:38.000 --> 02:02:44.000 Docker desktop is that one's for easy. K3D. 02:02:44.000 --> 02:02:52.000 This one is quite nice. It's it runs with Docker and uses K3S, 02:02:52.000 --> 02:02:57.000 which is the one from from Rancher or Susan. 02:02:57.000 --> 02:03:00.000 So if you want to do that right, you can do that as well. 02:03:00.000 --> 02:03:05.000 Kind is another kind of cluster available. 02:03:05.000 --> 02:03:10.000 It's it's also really good as well for development purposes. 02:03:10.000 --> 02:03:15.000 Micro K8A from Canonical from the guys from Ubuntu. 02:03:15.000 --> 02:03:26.000 This is another one popular. Actually, this has been gaining traction because it's really good for end of mile applications. 02:03:26.000 --> 02:03:36.000 For example, in a smart cities, they are using micro K8A and they are using K3S. 02:03:36.000 --> 02:03:45.000 These two kind of clusters to process images in real time or videos in real time and do, 02:03:45.000 --> 02:03:50.000 for example, fashion recognition or situation recognition for security purposes. 02:03:50.000 --> 02:04:02.000 So they have machine learning models running in these little beasts just at the just in the same box as the camera is. 02:04:02.000 --> 02:04:07.000 So this is what the kind of purpose of this kind of clusters. 02:04:07.000 --> 02:04:14.000 Another alternative is open shift for the Dex or open shift local CRC, 02:04:14.000 --> 02:04:29.000 which is a full open shift environment that is useful if you are using open shift within your environment is the way to go for your developers as well. 02:04:29.000 --> 02:04:35.000 Or you can do a custom style for your VM as well. 02:04:35.000 --> 02:04:45.000 So let me before going to the lab, let me show you here in the presentation. 02:04:45.000 --> 02:04:54.000 You will find how to deploy a managed cluster in the cloud for Azure. 02:05:00.000 --> 02:05:07.000 Actually from the cloud, the one that I personally prefer is the Azure, the cluster ATS. 02:05:07.000 --> 02:05:20.000 I think that is the best option from the manager once regarding the easy to use and the flexibility that you can have with this. 02:05:20.000 --> 02:05:27.000 The other one is the Amazon, the ETS, which depends if you install this a lot of a long time ago. 02:05:27.000 --> 02:05:40.000 I mean, it will be better to move to the if you are still using Amazon to the new way to install the cluster because the previous way was to manual. 02:05:40.000 --> 02:05:47.000 And it tends to have a lot of issues that are not easy, solvable. 02:05:47.000 --> 02:06:07.000 So if you happen to have a case cluster for Amazon installed before this this tool, it is control is better to to migrate your cluster to a new to this installation as well. 02:06:07.000 --> 02:06:14.000 And the other one is the from Google that ironically, Google was the one who created two or nuts. 02:06:14.000 --> 02:06:21.000 But I mean, it's I mean, the cloud goes with your taste. 02:06:21.000 --> 02:06:29.000 So Google and Amazon and Azure, each one of them has its pros and cons. 02:06:29.000 --> 02:06:35.000 So it depends on what is your company invested on or what you want to do. 02:06:35.000 --> 02:06:42.000 So Google is a good option, but I personally don't really, really like it a lot. 02:06:42.000 --> 02:06:51.000 Unless you have like a data streaming platform, stuff like that, in which with Google, BigQuery may be a good option as well. 02:06:51.000 --> 02:06:56.000 Yeah. So, yeah, so there is the this lab. 02:06:56.000 --> 02:07:01.000 We are not going to do this lab, but you can go ahead and do it by yourself. 02:07:01.000 --> 02:07:08.000 You just need like the cloud credits available to deploy that and do that installation. 02:07:08.000 --> 02:07:13.000 Also regarding distributions and installers. 02:07:13.000 --> 02:07:23.000 So your net has a lot of certified distributions and a lot of non certified distributions. 02:07:23.000 --> 02:07:30.000 These ones are the that are currently recognized by the cloud foundation. 02:07:30.000 --> 02:07:33.000 So these are the distributions. 02:07:33.000 --> 02:07:40.000 These are the platforms, which are the ones in the clouds. 02:07:40.000 --> 02:07:47.000 And these are the installers, the different installers that are available as well. 02:07:48.000 --> 02:07:56.000 OK, so we're going to go ahead and execute lab, last number two and last number three. 02:07:56.000 --> 02:08:04.000 And the idea for both of these labs is the first lab is to install our cluster. 02:08:04.000 --> 02:08:12.000 But before doing that, we can explore any one of these other clusters. 02:08:12.000 --> 02:08:21.000 I'm going to show you the one from Red Hat so you can have an idea and I'll show you how to install that if you want to. 02:08:21.000 --> 02:08:25.000 But we can deploy one of these as well. 02:08:25.000 --> 02:08:35.000 And the main objective here is to deploy the cluster that we're going to use for the rest of our labs. 02:08:35.000 --> 02:08:43.000 Right. So once we install that, we have installed that we are going to. 02:08:43.000 --> 02:08:46.000 Sorry, we're going to explore where is this. 02:08:46.000 --> 02:08:55.000 We're going to explore a little bit more the API and some more stuff of the QCPL. 02:08:55.000 --> 02:08:58.000 And we're going to explore the commands as well. 02:08:58.000 --> 02:09:06.000 OK, so let me see here. 02:09:06.000 --> 02:09:14.000 OK, so before starting our mini cube cluster, please go to the page eight. 02:09:14.000 --> 02:09:20.000 And here we have two options. 02:09:20.000 --> 02:09:34.000 One is the code ready containers for OpenShift and the other one is the K3S, which is kind of cool. 02:09:34.000 --> 02:09:46.000 The thing with this one is that this installs the QNets in your computer, not in the cluster. 02:09:46.000 --> 02:09:54.000 In your computer, not in a closed environment. 02:09:54.000 --> 02:10:02.000 I mean, so this is super useful if you want to create a cluster on premises, for example. 02:10:02.000 --> 02:10:06.000 So let me let me show you here. 02:10:06.000 --> 02:10:10.000 K3S. 02:10:10.000 --> 02:10:19.000 Actually, I would say this is the best way to deploy a cluster, a full cluster on premises. 02:10:19.000 --> 02:10:24.000 I mean, is there the easiest one? 02:10:24.000 --> 02:10:35.000 So because with this script, you can create the control plane, you can create the worker nodes, you can define. 02:10:35.000 --> 02:10:44.000 OK, I want to have ETCD nodes so you can create different architectures. 02:10:44.000 --> 02:10:54.000 So this is really, really flexible and really powerful to create different scenarios for your needs. 02:10:54.000 --> 02:10:58.000 So that is why this is why this is cool. 02:10:58.000 --> 02:11:01.000 This one. 02:11:01.000 --> 02:11:06.000 So it has different options as well for installation. 02:11:06.000 --> 02:11:15.000 And the other one is the code ready containers from OpenShift. 02:11:15.000 --> 02:11:18.000 So give me just a second. 02:11:18.000 --> 02:11:21.000 I'll show you that. 02:11:29.000 --> 02:11:39.000 OK, so here I have the OpenShift cluster installed from the developer point of view. 02:11:39.000 --> 02:11:48.000 However, you can install this one using Red Hat. 02:11:48.000 --> 02:11:53.000 So this is available for free. 02:11:53.000 --> 02:11:57.000 I mean, there is no cost for installing this. 02:11:57.000 --> 02:12:02.000 So if you don't have an account with Red Hat, you can create one. 02:12:02.000 --> 02:12:04.000 You can register. 02:12:04.000 --> 02:12:07.000 And here is the link. 02:12:07.000 --> 02:12:13.000 So when you register, you can have access to this website, consoleredhat.com. 02:12:13.000 --> 02:12:17.000 So let me share this one with you. 02:12:17.000 --> 02:12:21.000 And here you will have access to OpenShift. 02:12:21.000 --> 02:12:26.000 There are some other stuff, but in this case, we are talking about OpenShift. 02:12:26.000 --> 02:12:31.000 So here in OpenShift, you can deploy your cluster. 02:12:31.000 --> 02:12:40.000 So just let me show you from OpenShift, you can deploy directly in the cloud. 02:12:40.000 --> 02:12:44.000 Oops, I have a cluster, a forgotten cluster here. 02:12:44.000 --> 02:12:47.000 So you can have a... 02:12:47.000 --> 02:12:49.000 Where is it? 02:12:49.000 --> 02:12:50.000 OK, here. 02:12:50.000 --> 02:13:06.000 In Create Cluster, you can go and deploy a cluster in the clouds, in Amazon or in Azure, in IBM or in Amazon as well. 02:13:06.000 --> 02:13:11.000 So these are different clusters that you can deploy directly straight into the cloud. 02:13:26.000 --> 02:13:36.000 And this is amazingly easy because you only need to fill this and it will assist you in installing your cluster. 02:13:36.000 --> 02:13:40.000 So for a professional cluster, this is the way to go. 02:13:40.000 --> 02:13:42.000 And the last one is the local one. 02:13:42.000 --> 02:13:45.000 The local one is the one that I have installed. 02:13:45.000 --> 02:13:48.000 So you can do this. 02:13:48.000 --> 02:13:50.000 I mean, you don't have to pay anything. 02:13:50.000 --> 02:14:02.000 So you just need to download this, the OpenShift Local, copy this full secret and follow the guide for installation of this cluster. 02:14:02.000 --> 02:14:04.000 So give me just a second. 02:14:04.000 --> 02:14:13.000 So this guide gives you the step by step to install the cluster, the OpenShift cluster in your environment. 02:14:13.000 --> 02:14:18.000 So that is something as well. 02:14:18.000 --> 02:14:20.000 Good to do. Nice to do. 02:14:20.000 --> 02:14:25.000 So where is it? 02:14:25.000 --> 02:14:27.000 Here. 02:14:27.000 --> 02:14:29.000 No, where is it? Oh, here. 02:14:29.000 --> 02:14:33.000 So this is the local cluster that I have installed. 02:14:33.000 --> 02:14:37.000 So I can create a new project here. 02:14:37.000 --> 02:14:41.000 Testing. 02:14:41.000 --> 02:14:49.000 And this has this catalog in which I can choose or find what I want to install. 02:14:49.000 --> 02:14:55.000 For example, if I want to install a Quarks application, for example. 02:14:55.000 --> 02:14:58.000 So I can create that application here. 02:14:58.000 --> 02:15:06.000 Or if I want to deploy application, for example, a PHP application with a database. 02:15:06.000 --> 02:15:08.000 So I can do that. 02:15:08.000 --> 02:15:10.000 So let's try that. 02:15:10.000 --> 02:15:18.000 So these are like templates that I can use as the basis for my application. 02:15:18.000 --> 02:15:22.000 So let me just go ahead and install that. 02:15:23.000 --> 02:15:29.000 So this is super useful for... 02:15:29.000 --> 02:15:37.000 This is mostly suited if you are using Red Hat products, but it works in any environment as well. 02:15:37.000 --> 02:15:42.000 So this is nice to have. 02:15:42.000 --> 02:15:47.000 So yeah, let me move this back here. 02:15:53.000 --> 02:15:58.000 And let's go ahead and follow the lead. 02:15:58.000 --> 02:16:06.000 So if you want to install this, the OpenShift one, you just need to run the CRC start. 02:16:06.000 --> 02:16:09.000 But you will require to create an account. 02:16:09.000 --> 02:16:11.000 It doesn't take too long. 02:16:11.000 --> 02:16:16.000 So you can do that and do what I showed you regarding the pull secrets, 02:16:16.000 --> 02:16:22.000 which is the only thing that you need when you run this command in order to have this available. 02:16:22.000 --> 02:16:25.000 Or you can do this one as well. 02:16:25.000 --> 02:16:29.000 This is the K2S cluster. 02:16:29.000 --> 02:16:34.000 This is nice to install as well because it shows you, for example, the QCTL. 02:16:34.000 --> 02:16:37.000 So we can play a little bit with that. 02:16:37.000 --> 02:16:44.000 So I'm going to deploy this one to show the QCTL and the logs. 02:16:44.000 --> 02:16:47.000 But if you want to try this, you are welcome to do it. 02:16:47.000 --> 02:16:56.000 Once we have done that, we are going to move on and create the format cluster for the rest of our labs. 02:16:56.000 --> 02:17:01.000 So if you have any questions, please don't hesitate to ask me. 02:17:06.000 --> 02:17:12.000 I guess we can have at least 20, 30 minutes to do that. 02:17:18.000 --> 02:17:21.000 Be sure to be at the... 02:17:21.000 --> 02:17:24.000 Oh, wait, what happened? 02:17:28.000 --> 02:17:30.000 I copied too much lines. 02:17:30.000 --> 02:17:35.000 Be sure to be at the right directory. 02:17:41.000 --> 02:17:52.000 If you want to go ahead and deploy the Minikube cluster, please erase the previous one, delete the previous one. 02:17:52.000 --> 02:17:56.000 So we don't have any conflicts there. 02:17:58.000 --> 02:18:10.000 Because this cluster that we are going to deploy, we are going to give it 8 gigs of memory to cores. 02:18:10.000 --> 02:18:19.000 And we are going to use the Calico network, which has the ability to create network policies. 02:18:19.000 --> 02:18:29.000 So if we are able, in case that we reach that point, I mean, if we have time available, we can do that practice as well. 02:18:29.000 --> 02:18:34.000 And we are going to add a worker to this cluster. 02:18:34.000 --> 02:18:37.000 So we have two nodes running. 02:18:37.000 --> 02:18:40.000 So that's important. 02:18:40.000 --> 02:18:50.000 In this case, with Minikube, we will have to leave at least two terminals open with the dashboard and with the talent. 02:18:50.000 --> 02:18:54.000 So when you are in that part, let me know so I can show you. 02:18:54.000 --> 02:18:59.000 In the meantime, you can explore the other ones as well. 02:18:59.000 --> 02:19:01.000 You can do a lot for sure. 02:19:01.000 --> 02:19:03.000 It's a nice... 02:19:03.000 --> 02:19:07.000 This is the place to experiment. 02:19:13.000 --> 02:19:15.000 I just installed. 02:19:15.000 --> 02:19:18.000 It's super fast. 02:19:18.000 --> 02:19:27.000 So you can see that this creates the K3S service. 02:19:27.000 --> 02:19:39.000 If I run a journal ctl-xe, I can see all the information regarding that service. 02:19:45.000 --> 02:20:04.000 If I run the psax-cubelet, I will see that this runs a cubelet cluster or service in my node. 02:20:04.000 --> 02:20:10.000 So that's why I like the K3S. 02:20:10.000 --> 02:20:14.000 It's kind of simple, super simple to set up. 02:20:14.000 --> 02:20:22.000 There was a time, I mean, it wasn't that much ago, like two, three years ago. 02:20:22.000 --> 02:20:28.000 No, three, almost four years ago. 02:20:28.000 --> 02:20:33.000 Installing an OpenShift cluster was really, really hard. 02:20:33.000 --> 02:20:38.000 I mean, a pure Kubernetes cluster was kind of mission impossible. 02:20:38.000 --> 02:20:48.000 I mean, it was super hard because you have to do a lot of stuff super manually to create a lot of files. 02:20:48.000 --> 02:20:52.000 So it was not for the faint of heart. 02:20:52.000 --> 02:20:59.000 With OpenShift, it was hard as well, but not that hard. 02:20:59.000 --> 02:21:08.000 You had to create a file, a manifest file with the design that you created for your cluster. 02:21:08.000 --> 02:21:16.000 Create some images and different stuff in order to put together all the stuff required. 02:21:16.000 --> 02:21:29.000 But nowadays, as I showed you, I mean, in the website, you just choose what you want and download an ISO file. 02:21:29.000 --> 02:21:32.000 And that's it. You are good to go. 02:21:32.000 --> 02:21:34.000 With Rancher, it's easy as well. 02:21:34.000 --> 02:21:44.000 Rancher uses K3S and you from the Rancher interface just... 02:21:44.000 --> 02:21:49.000 It gives you a command, which actually it gives you this command. 02:21:49.000 --> 02:22:01.000 This curl sfl get k3si command, but with some parameters that are created by Rancher. 02:22:01.000 --> 02:22:07.000 And with that, you install the cluster super easy as well. 02:22:07.000 --> 02:22:20.000 I was... If you install the K3S, you can play and see here. 02:22:20.000 --> 02:22:32.000 And here we can see the kubect command working because the kubect... 02:22:32.000 --> 02:22:34.000 Oh, what happened? 02:22:34.000 --> 02:22:36.000 kubectl... 02:22:36.000 --> 02:22:38.000 Oh, yeah, sorry. 02:22:38.000 --> 02:22:51.000 Here, no, we are not seeing the kubectl because the installation, in order to not conflict with each other, the installation goes as roots. 02:22:51.000 --> 02:23:00.000 So our user doesn't see the cluster, the K3S cluster. 02:23:00.000 --> 02:23:07.000 So let me... Oh, there is an error in the documents. 02:23:07.000 --> 02:23:13.000 But we can do the systemctl. 02:23:13.000 --> 02:23:17.000 The sudo system is sudo systemctl. 02:23:17.000 --> 02:23:27.000 I missed something there. 02:23:27.000 --> 02:23:38.000 So you want to run here. 02:23:38.000 --> 02:23:49.000 If you run with dash a, and we can do this comparison between the two clusters. 02:23:49.000 --> 02:23:55.000 If you run this, this applies as well to the OpenCube. 02:23:55.000 --> 02:24:00.000 I'm going to do that as well so you can take a look. 02:24:00.000 --> 02:24:03.000 Actually, I may have to install that as well. 02:24:22.000 --> 02:24:24.000 You can see the differences. 02:24:24.000 --> 02:24:30.000 I mean, every cluster is different. 02:24:30.000 --> 02:24:37.000 In this case, we installed the dashboard and some other stuff. 02:24:37.000 --> 02:24:50.000 But, for example, the K3S includes an ingress controller, the tri-effic, which is an ingress controller by default. 02:24:50.000 --> 02:24:53.000 And the metric server. 02:24:53.000 --> 02:24:59.000 So those are details that are nice to analyze. 02:24:59.000 --> 02:25:06.000 And actually, I'm going to launch the OpenCube cluster here as well. 02:25:06.000 --> 02:25:13.000 So I can show you the same. 02:25:13.000 --> 02:25:24.000 If you run the OpenCube, just cancel this log. 02:25:43.000 --> 02:25:47.000 It takes a little bit. It doesn't take that long. 02:25:47.000 --> 02:25:50.000 So it's okay. 02:25:50.000 --> 02:25:55.000 The OpenCube, it creates a user and a password. 02:25:55.000 --> 02:26:01.000 So you need to copy those in order to access the interface. 02:26:11.000 --> 02:26:22.000 When the OpenCube cluster finishes, you will be amazed about the amount of bugs by default that it deploys. 02:26:22.000 --> 02:26:26.000 It's about 100 at least. 02:26:26.000 --> 02:26:29.000 And this is the development cluster. 02:26:29.000 --> 02:26:38.000 The production cluster leaves you, just after installation, almost with 300 bugs. 02:26:38.000 --> 02:26:42.000 So it's a huge monster. 02:26:42.000 --> 02:26:48.000 Let me open another terminal. 02:26:48.000 --> 02:26:54.000 And we can count the number of bugs that each of the clusters has. 02:26:54.000 --> 02:27:04.000 QCPL, dead bugs, dash A, show us all the bugs available in the cluster. 02:27:04.000 --> 02:27:07.000 So I'm going to count those. 02:27:07.000 --> 02:27:15.000 So the Minikube cluster is giving us 12 bugs. 02:27:15.000 --> 02:27:23.000 But this is because we added the dashboard, the headlamp, the metric server. 02:27:23.000 --> 02:27:28.000 So that adds like four bugs, something like that. 02:27:28.000 --> 02:27:32.000 So that is the reason that we have 12. 02:27:32.000 --> 02:27:44.000 And if we do the same with the K3S cluster, let me do the same with sudo. 02:27:44.000 --> 02:27:52.000 K3S, QCPL, dead bugs, dash A. 02:27:52.000 --> 02:27:57.000 Okay, it's less bugs. 02:27:57.000 --> 02:28:00.000 I thought that there were more. 02:28:00.000 --> 02:28:04.000 So it's eight bugs for K3S. 02:28:04.000 --> 02:28:10.000 But this one doesn't have the dashboard installed, for example. 02:28:10.000 --> 02:28:17.000 I'm sending you the commands that I execute in the chat for the teams. 02:28:22.000 --> 02:28:26.000 And let's see how this is going. 02:28:26.000 --> 02:28:39.000 So I think that we have here QCPEX. 02:28:39.000 --> 02:28:46.000 So in this OpenShift, the thing is that this installs a lot of operators. 02:28:46.000 --> 02:28:54.000 Those are like the personalizations that Red Hat has done, and they are including some other stuff. 02:28:54.000 --> 02:29:02.000 OpenShift includes CI, CD, DevOps pipeline ready to use within OpenShift, 02:29:02.000 --> 02:29:07.000 which is the only one that has that available. 02:29:07.000 --> 02:29:16.000 So it's the same approach, but it's included within the cluster. 02:29:16.000 --> 02:29:30.000 I'm going to delete, while the OpenShift finishes, I'm going to delete the minikube cluster and the K3S cluster. 02:29:30.000 --> 02:29:43.000 So we are ready to deploy our power forward cluster. 02:30:24.000 --> 02:30:25.000 Okay. 02:30:51.000 --> 02:30:52.000 Okay. 02:30:54.000 --> 02:30:55.000 Okay, okay. 02:31:00.000 --> 02:31:01.000 Okay. 02:31:01.000 --> 02:31:08.000 While the OpenShift is finishing, let's install the former cluster. 02:31:14.000 --> 02:31:25.000 So in this cluster, we have to leave, or the idea is to leave running the dashboard and the tunnel. 02:31:25.000 --> 02:31:31.000 So we have, or we are able to have like connectivity and stuff like that. 02:31:31.000 --> 02:31:40.000 So with minikube status, I can see status. 02:31:40.000 --> 02:31:43.000 I can see if I have anything here. 02:31:43.000 --> 02:31:49.000 I don't have, so I'm just going to configure the setup by default. 02:31:49.000 --> 02:31:53.000 It only uses like two gigs of memory and one CPU. 02:31:53.000 --> 02:32:03.000 So I'm configuring here to use two cores, because this is what is going to be used by each one of the nodes. 02:32:03.000 --> 02:32:07.000 And the server has four nodes, four cores, sorry. 02:32:07.000 --> 02:32:16.000 So it will be two cores and memory. 02:32:16.000 --> 02:32:23.000 And the memory, it will be eight gigs, because we are going to deploy a lot of stuff. 02:32:23.000 --> 02:32:44.000 So that is the minikube start and minikube start with the network calico, which is one of the network plugins available. 02:32:44.000 --> 02:32:46.000 Well, one of the most popular. 02:32:46.000 --> 02:32:48.000 We are going to discuss that a little bit later. 02:32:48.000 --> 02:32:57.000 But for example, Amazon has its own, their own network plugin. 02:32:57.000 --> 02:33:09.000 So the way that the network is handled in Amazon is a little bit different from the standard. 02:33:09.000 --> 02:33:23.000 And they had to do that because of the mess that they have inside. 02:33:49.000 --> 02:33:50.000 OK, perfect. 02:33:50.000 --> 02:33:52.000 So I finished my installation. 02:33:52.000 --> 02:33:58.000 If I run a minikube status, I can see what is running. 02:33:58.000 --> 02:34:05.000 If I run a minikube node list, I can see the nodes that I have available. 02:34:05.000 --> 02:34:18.000 I'm going to add the node, the worker node for the, in order to have the nodes available for my cluster. 02:34:47.000 --> 02:34:49.000 If you have advanced, you can go ahead and start. 02:34:49.000 --> 02:34:54.000 I'm going to go ahead and start the lab tree. 02:34:54.000 --> 02:35:00.000 Because there are a lot more options available. 02:35:00.000 --> 02:35:04.000 And there we are going to create in the lab tree. 02:35:04.000 --> 02:35:13.000 The idea is that we are going to explore the API within the cluster and we are going to install a few, well, one application. 02:35:13.000 --> 02:35:21.000 What's the best way to uninstall the OpenShift cluster? 02:35:21.000 --> 02:35:25.000 What is the what? Come on, man. 02:35:25.000 --> 02:35:29.000 What's the best way to uninstall the OpenShift cluster? 02:35:29.000 --> 02:35:32.000 To uninstall? Well, you want to stop it. 02:35:32.000 --> 02:35:34.000 Just crc stop. 02:35:34.000 --> 02:35:37.000 So that will stop your cluster. 02:35:37.000 --> 02:35:41.000 And then crc delete, I guess. 02:35:41.000 --> 02:35:44.000 But with the stop, you can stop it. 02:35:44.000 --> 02:35:46.000 Awesome. 02:35:49.000 --> 02:35:51.000 Oh, it finishes here. 02:35:51.000 --> 02:35:55.000 So let me show you real quick. 02:35:55.000 --> 02:35:59.000 I'm going to access the OpenShift console here. 02:36:07.000 --> 02:36:17.000 So this creates a domain, an internal domain for testing purposes, the CRC testing. 02:36:17.000 --> 02:36:21.000 And here is the. 02:36:21.000 --> 02:36:26.000 The user and the password, the Q admin. 02:36:26.000 --> 02:36:28.000 Which is the standard. 02:36:28.000 --> 02:36:32.000 The Q admin is the standard name. 02:36:32.000 --> 02:36:36.000 For this. So Q admin. 02:36:50.000 --> 02:36:55.000 So here is the administrator view for QNets. 02:36:55.000 --> 02:37:03.000 It has some information, statistical information for the cluster, the version, the events. 02:37:03.000 --> 02:37:09.000 But if you recall the dashboard, and I'm going to show here. 02:37:09.000 --> 02:37:15.000 This is the standard, the open source QNets dashboard. 02:37:15.000 --> 02:37:22.000 And this is the world laws, the services, the conflict and the storage, which are the resources, as I told you. 02:37:22.000 --> 02:37:30.000 If you take a look in the OpenShift, you will find the same workloads with the pods. 02:37:30.000 --> 02:37:34.000 With the deployments. 02:37:34.000 --> 02:37:38.000 So this is fairly big. 02:37:38.000 --> 02:37:42.000 So let me see if we can take. 02:37:48.000 --> 02:37:52.000 If we can take the amount of. 02:37:52.000 --> 02:37:56.000 If we can count the amount of pods of this cluster. 02:37:56.000 --> 02:38:00.000 So here I'm using the QCTX, the context. 02:38:00.000 --> 02:38:08.000 And please notice that I have three different options or contexts to work with. 02:38:08.000 --> 02:38:20.000 So this is because when we install a QNets cluster, it creates a file which is called the QCubedConfig file. 02:38:20.000 --> 02:38:22.000 So. 02:38:22.000 --> 02:38:24.000 So this QCubedConfig file. 02:38:24.000 --> 02:38:31.000 The name is QCubedConfig because it's located at the Q folder and the file is conflict. 02:38:31.000 --> 02:38:40.000 So this QCubedConfig file has the information required to access each one of the clusters using a token. 02:38:40.000 --> 02:38:43.000 So there is an entry for each cluster. 02:38:43.000 --> 02:38:47.000 So all the clusters that you install will create. 02:38:47.000 --> 02:38:53.000 The information, an entry there. 02:38:53.000 --> 02:39:03.000 So with QCubedCtx, I can change to the cluster to the series CRC-admin. 02:39:03.000 --> 02:39:08.000 And here I am in the cluster in the QNets cluster. 02:39:08.000 --> 02:39:17.000 So if I run and get all, you will see the astonishing, astonishing amount of objects. 02:39:17.000 --> 02:39:22.000 Well, for a for a for a cluster of this kind. 02:39:22.000 --> 02:39:28.000 And if I list the pods, it showed me the amount of pods available. 02:39:28.000 --> 02:39:31.000 I'm going to count those. 02:39:31.000 --> 02:39:43.000 And in this case, we have 68, 68 pods by default against the 12 from Minikube and the 8 from KJS. 02:39:43.000 --> 02:39:49.000 So you can have an idea of how big this can be. 02:39:49.000 --> 02:39:53.000 And let me go back to Minikube. 02:39:53.000 --> 02:39:58.000 I don't want to be in the other side. 02:39:58.000 --> 02:40:05.000 And just to explore a little bit, actually in the in the. 02:40:05.000 --> 02:40:10.000 In this other cluster, I have installed. 02:40:10.000 --> 02:40:13.000 An application. 02:40:13.000 --> 02:40:16.000 So I'm just showing you here. 02:40:16.000 --> 02:40:22.000 This is the application that I deploy in the cluster. 02:40:22.000 --> 02:40:27.000 So here we can access to the service. 02:40:27.000 --> 02:40:41.000 Let's see. Well, it seems that it has some issues, but you can have here like a graphical interface to obtain information regarding the application and everything. 02:40:41.000 --> 02:40:54.000 So in this case, the MySQL database work, but it seems that these this have this has some issues here. 02:40:54.000 --> 02:41:00.000 So it's not running. But this is like the like the full stack. 02:41:00.000 --> 02:41:06.000 It has, for example, the helm charts are included here. 02:41:06.000 --> 02:41:09.000 The operators as well. 02:41:09.000 --> 02:41:14.000 The the from a thousand it's included here. 02:41:14.000 --> 02:41:20.000 So it's a different beast at all. 02:41:20.000 --> 02:41:25.000 And OK, let me let me continue. 02:41:25.000 --> 02:41:30.000 See, see. 02:41:30.000 --> 02:41:32.000 OK, so. 02:41:32.000 --> 02:41:38.000 I'm going to OK, I have the Minikub cluster deployed. 02:41:38.000 --> 02:41:44.000 I added the nodes. 02:41:44.000 --> 02:41:59.000 I am going to see the bots. 02:41:59.000 --> 02:42:10.000 And OK, so I was I was telling you that we needed to. 02:42:10.000 --> 02:42:14.000 To launch the dashboard and the tunnel. 02:42:14.000 --> 02:42:17.000 Let me see the notes here first. 02:42:17.000 --> 02:42:23.000 If you there is some comments there, for example, this dash of white. 02:42:23.000 --> 02:42:34.000 This is important because this shows you what do you have in those nodes, the get nodes dash of white. 02:42:34.000 --> 02:42:40.000 It shows you more information. And if you want to describe. 02:42:40.000 --> 02:42:46.000 An object, for example, a node, so describe the node, the Minikub node. 02:42:46.000 --> 02:42:50.000 You can see a lot of information there. 02:42:50.000 --> 02:42:54.000 Which for debugging purposes will be super useful. 02:42:54.000 --> 02:43:03.000 So it's good to be accustomed to these comments so you get familiarized with them over the time. 02:43:03.000 --> 02:43:06.000 If you haven't. 02:43:06.000 --> 02:43:08.000 If you haven't yet. 02:43:08.000 --> 02:43:13.000 So I'm going to launch the dashboard from this terminal. 02:43:13.000 --> 02:43:15.000 So Minikub dashboard. 02:43:15.000 --> 02:43:17.000 This will be my dashboard. 02:43:17.000 --> 02:43:27.000 The idea is, I mean, as we are going to deploy several applications and do a lot of stuff, it's good to take a look into the dashboard to see what is happening to explore. 02:43:27.000 --> 02:43:29.000 So be curious. 02:43:29.000 --> 02:43:38.000 Be be be move around and see what is happening all over the cluster because it has a lot of moving parts. 02:43:38.000 --> 02:43:48.000 So it's super easy to miss something that may be useful or interesting to analyze. 02:43:48.000 --> 02:43:50.000 In some of the labs. 02:43:50.000 --> 02:43:52.000 So. 02:43:52.000 --> 02:43:54.000 There you go. 02:43:54.000 --> 02:43:58.000 And this this terminal should not be closed. 02:43:58.000 --> 02:44:00.000 So please leave it. 02:44:00.000 --> 02:44:02.000 Leave that open. 02:44:02.000 --> 02:44:05.000 And I'm going to open the tunnel. 02:44:05.000 --> 02:44:11.000 So what I'm going to do here is to well let me first I'm going to change positions. 02:44:11.000 --> 02:44:20.000 I'm going to put this down there. 02:44:20.000 --> 02:44:26.000 So I'm switching places. 02:44:26.000 --> 02:44:32.000 And I'm going to split this in half. 02:44:32.000 --> 02:44:35.000 Sorry. 02:44:35.000 --> 02:44:38.000 I'm going to split this vertical. 02:44:38.000 --> 02:44:40.000 So I'm going to run the tunnel here. 02:44:40.000 --> 02:44:43.000 Minikubed tunnel. 02:44:43.000 --> 02:44:50.000 We're going to use that later, but it's better to leave it running there. 02:44:50.000 --> 02:44:58.000 So this is the this is this will be our load balancer for the for the cluster. 02:44:58.000 --> 02:45:00.000 Like the F5 or something like that. 02:45:00.000 --> 02:45:02.000 It's some prices. 02:45:02.000 --> 02:45:06.000 And what else do I need to enable the metric server? 02:45:06.000 --> 02:45:14.000 I need to enable that Minikubed at once enable metrics. 02:45:14.000 --> 02:45:16.000 Sorry. 02:45:16.000 --> 02:45:21.000 Sorry. 02:45:21.000 --> 02:45:22.000 OK. 02:45:22.000 --> 02:45:23.000 So is there. 02:45:23.000 --> 02:45:26.000 So we can take a look on the configuration. 02:45:26.000 --> 02:45:30.000 We don't need to stop this. 02:45:30.000 --> 02:45:36.000 We are going to leave this running. 02:45:36.000 --> 02:45:42.000 And we can see the add-ons that are available. 02:45:42.000 --> 02:45:46.000 So there are a lot of add-ons for Minikubed, which is nice. 02:45:46.000 --> 02:45:48.000 We are just going to use a few. 02:45:48.000 --> 02:45:53.000 Well, actually, I think these are the ones that we are going to use. 02:45:53.000 --> 02:45:58.000 And let me see the notes. 02:45:58.000 --> 02:46:01.000 Note list. 02:46:01.000 --> 02:46:02.000 OK. 02:46:02.000 --> 02:46:04.000 All is good. 02:46:04.000 --> 02:46:12.000 So for the lab tree, the lab tree, we have some more stuff here. 02:46:12.000 --> 02:46:15.000 The services with CPL. 02:46:15.000 --> 02:46:20.000 Feel free to explore those services. 02:46:20.000 --> 02:46:27.000 If you want to explore multiple objects at the same time, you can use a command. 02:46:27.000 --> 02:46:39.000 So for example, and there is like short shortcuts to in order to not use the whole name replica sets, you can use RS. 02:46:39.000 --> 02:46:42.000 So you can do that. 02:46:42.000 --> 02:46:53.000 If you are the dash dash all main spaces, you can see everything in the cluster or with the dash. 02:46:53.000 --> 02:46:55.000 Upper case a. 02:46:55.000 --> 02:46:57.000 So it's shorter. 02:46:57.000 --> 02:46:59.000 That is also good. 02:46:59.000 --> 02:47:05.000 You can see, for example, here the coffee's maps. 02:47:05.000 --> 02:47:10.000 So everything here are the objects that are available. 02:47:10.000 --> 02:47:14.000 They would sit. 02:47:14.000 --> 02:47:20.000 I don't remember the name of the technique for stateful sex. 02:47:20.000 --> 02:47:23.000 So this is everything that you have there. 02:47:23.000 --> 02:47:27.000 And it is drive and all that stuff that is useful to have. 02:47:27.000 --> 02:47:35.000 So here we are going to create a name space in order to test the cube and S. 02:47:35.000 --> 02:47:36.000 You want to. 02:47:36.000 --> 02:47:44.000 But what I want you to do is to deploy the A the the the API. 02:47:44.000 --> 02:47:47.000 So let me show you here. 02:47:47.000 --> 02:47:51.000 So we're going to create. 02:47:51.000 --> 02:47:56.000 And name space for. 02:47:56.000 --> 02:47:58.000 These namespace. 02:47:58.000 --> 02:48:01.000 We're going to create these namespace. 02:48:01.000 --> 02:48:02.000 This is just an example. 02:48:02.000 --> 02:48:04.000 The namespace. 02:48:04.000 --> 02:48:08.000 But what we want to do here is to deploy this application. 02:48:08.000 --> 02:48:11.000 Perhaps you are familiarized with these applications. 02:48:11.000 --> 02:48:16.000 Swagger UI, which is an interface to explore APIs. 02:48:16.000 --> 02:48:19.000 So this one is also useful. 02:48:19.000 --> 02:48:28.000 There is this URL that you can use to explore the API for. 02:48:28.000 --> 02:48:29.000 For two minutes. 02:48:29.000 --> 02:48:35.000 So let's create that namespace. 02:48:35.000 --> 02:48:38.000 You can do that. 02:48:38.000 --> 02:48:41.000 From the dashboard as well. 02:48:41.000 --> 02:48:47.000 And you we're going to use only comments. 02:48:47.000 --> 02:48:56.000 Short comments, but you can try using the web to deploy applications as well. 02:48:56.000 --> 02:49:04.000 So the namespace and change to that namespace, because if you don't change the namespace, 02:49:04.000 --> 02:49:14.000 When you deploy the application, that application will be installed in the in the default namespace or in the namespace that you are in. 02:49:14.000 --> 02:49:18.000 So you may want to have that separated. 02:49:18.000 --> 02:49:24.000 This is important to notice, for example, the cube system is the is the. 02:49:24.000 --> 02:49:37.000 The system namespace, the more important namespace for Kubernetes, because here in in cube system, all of the all the. 02:49:37.000 --> 02:49:49.000 Deployments that are related to the control plane to the worker are to the controllers to all the stuff that we were discussing are here. 02:49:49.000 --> 02:49:57.000 So if you take a look to that namespace, you bash system. 02:49:57.000 --> 02:50:06.000 There there should not be any end user application here is not the good practice. 02:50:06.000 --> 02:50:10.000 This should be only for system applications. 02:50:10.000 --> 02:50:17.000 For example, you can install here the promise to use and the elastic stack here, for example, that will be a good fit. 02:50:17.000 --> 02:50:22.000 Usually you create a different namespace for that, but it will be like that. 02:50:22.000 --> 02:50:28.000 And so, OK, I mean, we respect if I get. 02:50:28.000 --> 02:50:32.000 You get all the things here. 02:50:32.000 --> 02:50:38.000 It will show me everything that is within these namespace, right? 02:50:38.000 --> 02:50:42.000 So if I want to do that. 02:50:42.000 --> 02:50:50.000 I mean, if I'm in the namespace, I don't need to to refer to the namespace with the dash and option. 02:50:50.000 --> 02:50:54.000 As I did here, you system. 02:50:54.000 --> 02:51:04.000 So if you are not in the right namespace, be sure to execute your comments with the dash and. 02:51:04.000 --> 02:51:12.000 And namespace name. So that is that is why we are using to to this. 02:51:12.000 --> 02:51:22.000 OK, so in this case, we are going to deploy this application using a common, which is. 02:51:22.000 --> 02:51:27.000 They run the cube CTL run. 02:51:27.000 --> 02:51:37.000 We were well in the next lab, we're going to discuss that in more detail, but this is like the imperative way of deploy an application, 02:51:37.000 --> 02:51:50.000 which is inherited by Docker. I mean, the way in with Docker when you wanted to run an application, what you did was to Docker run application. 02:51:50.000 --> 02:51:56.000 So this cube CTL is like the equivalent to that Docker run. 02:51:56.000 --> 02:52:07.000 So in this case, we are wrong. We are going to run swagger UI, which is using this image swagger API, swagger UI. 02:52:07.000 --> 02:52:13.000 Let me show you where that image comes from. 02:52:13.000 --> 02:52:18.000 So, I mean, everything is affiliated or linked to Docker. 02:52:18.000 --> 02:52:23.000 I mean, Docker, I will say that it will stay for a long time. 02:52:23.000 --> 02:52:31.000 It's not it won't change, but. 02:52:31.000 --> 02:52:35.000 Why is why I'm not looking here? 02:52:35.000 --> 02:52:38.000 OK. 02:52:38.000 --> 02:52:51.000 Also, I will say almost all of the labs have the the the calls for the application. 02:52:51.000 --> 02:53:05.000 We don't have the time, but it's possible if you have, I mean, if you do the labs fast enough, obviously understand everything that you can create the application, 02:53:05.000 --> 02:53:10.000 the image with Docker and push that image to Docker Hub and stuff from there. 02:53:10.000 --> 02:53:14.000 So that is something that you can do if you want to try that. 02:53:14.000 --> 02:53:20.000 Just let me know and we can give it a try so you can see how it's done. 02:53:20.000 --> 02:53:24.000 Otherwise, we're going to use public images available. 02:53:24.000 --> 02:53:29.000 So in this case, this is the one that I wanted to show you this swagger UI. 02:53:29.000 --> 02:53:41.000 So let me show you before this image is it's downloaded 50 million times, 50 million downloads. 02:53:41.000 --> 02:53:44.000 So it's fairly common. 02:53:44.000 --> 02:53:52.000 And this is like the different versions that are available, the tags for this image. 02:53:52.000 --> 02:53:58.000 So this is just a Docker image that you can use in Docker, in this case, in Kubernetes. 02:53:58.000 --> 02:54:01.000 So everything is there. All the information is there. 02:54:01.000 --> 02:54:07.000 So that is the one that it's being used here is this the same one. 02:54:07.000 --> 02:54:18.000 So what I want to show you here is that Kubernetes by default is pointing to the Docker Hub registry. 02:54:18.000 --> 02:54:30.000 And that Docker Hub registry has a bunch of images, thousands of images that can be used in your applications. 02:54:30.000 --> 02:54:32.000 There is a quick there. 02:54:32.000 --> 02:54:47.000 I mean, you should be aware that these images may be or may have security issues or may have not that reliable. 02:54:47.000 --> 02:54:50.000 So you have to be careful with that. 02:54:50.000 --> 02:54:56.000 Try to use images from trusted providers. 02:54:56.000 --> 02:55:02.000 There are another registers available, for example, while from Red Hat. 02:55:02.000 --> 02:55:08.000 But also you can have your own registry in order to manage that. 02:55:08.000 --> 02:55:11.000 So that is important to have in there. 02:55:11.000 --> 02:55:14.000 So let's install this. 02:55:14.000 --> 02:55:17.000 This is our view. 02:55:17.000 --> 02:55:24.000 Whenever you install something, you may want to check, for example, the events. 02:55:24.000 --> 02:55:27.000 So we get events. 02:55:27.000 --> 02:55:31.000 You can see what is happening in real time. 02:55:31.000 --> 02:55:35.000 If there is any error, you will see it here. 02:55:36.000 --> 02:55:46.000 You also want to get box because that is the best way to see if everything went around smoothly. 02:55:46.000 --> 02:55:50.000 So with get box, you should see the running. 02:55:50.000 --> 02:55:55.000 So let me explain a little bit about how what we are what we are seeing here. 02:55:55.000 --> 02:56:06.000 So when you run get, what you are doing is asking the API server to bring all the information regarding these resource in this case spots. 02:56:06.000 --> 02:56:12.000 So you will have the name of the part, the status of the part. 02:56:12.000 --> 02:56:23.000 And this is one of one, which means one part is ready from one expected expected. 02:56:23.000 --> 02:56:26.000 But so this is this is perfect. 02:56:26.000 --> 02:56:35.000 You may see here zero slash one, which means there is one part expected and zero is ready. 02:56:35.000 --> 02:56:40.000 Or you can see two is like two or three slash three, whatever. 02:56:40.000 --> 02:56:43.000 So that is what is shown here. 02:56:43.000 --> 02:56:52.000 And the status, if it's running or if it's failing, you will see that the number of restarts and how old this part is running. 02:56:52.000 --> 02:57:00.000 So you will see I mean, QNets is a platform that is designed to never be turned up. 02:57:00.000 --> 02:57:05.000 So cover net is a platform that it's supposed to be up. 02:57:06.000 --> 02:57:09.000 Twenty four, seven, three, sixty five days per year. 02:57:09.000 --> 02:57:21.000 So whenever you have a deployment, you will see that the age is months or or even years, depending on the application or the amount of changes that you. 02:57:21.000 --> 02:57:37.000 Do on that application. So at the end of this training, you will see one to days of age in each one of the parts because no matter if we stop the cluster or not, it counts the time from the beginning. 02:57:37.000 --> 02:57:40.000 So OK, so we are good there. 02:57:40.000 --> 02:57:45.000 Now, what we are going to do is to expose the. 02:57:46.000 --> 02:57:51.000 The the the cluster, let me show you something first. 02:57:51.000 --> 02:57:57.000 So if I run again, all the only result that I have here is the past. 02:57:57.000 --> 02:58:04.000 So if I want to access a path, I need to publish that pop in the network. 02:58:04.000 --> 02:58:11.000 So there are different kinds of service, which is the name of this. 02:58:11.000 --> 02:58:16.000 And those are the ways to publish the the part in the network. 02:58:16.000 --> 02:58:19.000 So we're going to do that later. 02:58:19.000 --> 02:58:27.000 The explanation. But right now, what we're going is to expose the part, the name in a specific part. 02:58:27.000 --> 02:58:38.000 And we are going to use the the cluster IP address, the mini cube IP and the type of service exposed is not part. 02:58:38.000 --> 02:58:47.000 A wish is just exposing in the local machine the port that is being published. 02:58:47.000 --> 02:58:59.000 So if I do that and run again, all I will have an external IP address, which is the IP address and a port, a publishing port. 02:58:59.000 --> 02:59:07.000 So that is where I'm supposed to go to to see the our friend swagger UI. 02:59:07.000 --> 02:59:11.000 So I'm going to open that. 02:59:13.000 --> 02:59:17.000 You are all. And he shows me the swagger. 02:59:17.000 --> 02:59:24.000 It shows the store by default, but just copy the. 02:59:24.000 --> 02:59:30.000 The files that you are the URL for the file. 02:59:30.000 --> 02:59:33.000 Let me copy that. 02:59:41.000 --> 02:59:49.000 Just wanted to double check that the recording is still running. Yeah, it's every four hours. 02:59:49.000 --> 02:59:52.000 It changes. 02:59:52.000 --> 02:59:54.000 Yeah, yeah, yeah. Yeah. 02:59:54.000 --> 02:59:57.000 Every four hours, it finishes and starts all over again. 02:59:57.000 --> 03:00:01.000 Oh, actually, it's three hours here. 03:00:01.000 --> 03:00:04.000 It says record. 03:00:04.000 --> 03:00:06.000 I think it is. 03:00:06.000 --> 03:00:10.000 And yeah, sure. 03:00:10.000 --> 03:00:15.000 And let me paste that and explore. 03:00:15.000 --> 03:00:21.000 So here I'm opening the JSON file for the API, the coordinates API. 03:00:21.000 --> 03:00:33.000 So here we have basically the same that we have seen in different ways from Qt, CPL or from from the. 03:00:33.000 --> 03:00:37.000 And the API resources documentation in the web. 03:00:37.000 --> 03:00:44.000 So here is all the JSONs for every one of the objects. 03:00:44.000 --> 03:00:53.000 And when we are using Qt, CPL, what we are doing is to interact via JSON with the API. 03:00:53.000 --> 03:00:57.000 So this is this is like everything that is there. 03:00:57.000 --> 03:01:01.000 You can explore that. 03:01:01.000 --> 03:01:16.000 This is like the difference in points available for API, for metrics, for health and additions that may appear. 03:01:16.000 --> 03:01:25.000 Every API has different kinds of of resources and versions. 03:01:25.000 --> 03:01:34.000 So the version one, you will notice, for example, version one, Vita or version two, Vita or Alpha. 03:01:34.000 --> 03:01:37.000 So it depends on the object for resource. 03:01:37.000 --> 03:01:41.000 So here will you will find everything that is here. 03:01:41.000 --> 03:01:44.000 This is the version two of one. 03:01:44.000 --> 03:01:47.000 So everything is in there. 03:01:47.000 --> 03:01:58.000 So just take a few minutes to explore this and let me know if you have any questions. 03:01:58.000 --> 03:02:02.000 So we can keep going as well. 03:02:18.000 --> 03:02:21.000 What time is it? What time do you have over there? 03:02:23.000 --> 03:02:25.000 OK, so it's about OK. 03:02:25.000 --> 03:02:32.000 I will say if you want to, we can go for lunch now. 03:02:32.000 --> 03:02:36.000 I mean, this will be the right moment. 03:02:36.000 --> 03:02:37.000 Yeah, I'm doing that. 03:02:37.000 --> 03:02:39.000 OK. OK. 03:02:39.000 --> 03:02:42.000 So it's OK. 03:02:42.000 --> 03:02:48.000 We have one hour for lunch or do you want to have just half or four? 03:02:48.000 --> 03:02:53.000 I'll be working my dog, which will take me about 45 minutes. 03:02:53.000 --> 03:02:55.000 I'll just do it in your time. 03:02:55.000 --> 03:02:57.000 Anything else? 03:02:57.000 --> 03:02:59.000 Yeah, that's coming on. 03:02:59.000 --> 03:03:02.000 So the hour or 45? 03:03:02.000 --> 03:03:03.000 Yeah, yeah. 03:03:03.000 --> 03:03:04.000 OK, cool. 03:03:04.000 --> 03:03:06.000 So see you in an hour, guys. 03:03:06.000 --> 03:03:09.000 And we'll keep going. 03:03:09.000 --> 03:03:11.000 Everything good? 03:03:11.000 --> 03:03:12.000 Yeah. 03:03:12.000 --> 03:03:13.000 OK, cool. 03:03:13.000 --> 03:03:15.000 Awesome. 03:03:15.000 --> 03:03:16.000 Catch you in an hour. 03:03:16.000 --> 03:03:18.000 OK. 03:04:16.000 --> 03:04:33.000 OK. 03:05:10.000 --> 03:05:13.000 So let's wake up. 03:05:15.000 --> 03:05:35.000 So what we did so far or what we have done so far is to explore the Internet a little bit from several points of views. 03:05:35.000 --> 03:05:42.000 From directly from the API or directly from the Cube CTL. 03:05:42.000 --> 03:06:01.000 And by now we should have executed a few Cube CTL comments, which over the time you should learn by memory and use day by day. 03:06:01.000 --> 03:06:18.000 Also, we explore a few distros of Kubernetes and deploy our formal cluster for the labs. 03:06:18.000 --> 03:06:24.000 This is a mini cube cluster. 03:06:24.000 --> 03:06:30.000 This shows us the information we have for it. 03:06:30.000 --> 03:06:37.000 So this is the information for the cluster, the dump. 03:06:37.000 --> 03:06:47.000 If you want to have a full view of what's inside your cluster, you can run the cluster info dump. 03:06:47.000 --> 03:07:01.000 That will show you tons of information and is useful because over the time your cluster starts filling with like garbage. 03:07:01.000 --> 03:07:14.000 Pots that were evicted or pots that are failing or pots that are not in use or errors that show up and no one is really aware of those. 03:07:14.000 --> 03:07:37.000 So this dump is a good idea to have a copy of the dump from time to time because it will help you to understand over the months or years of usage how it has evolved and understand things of your system. 03:07:42.000 --> 03:07:51.000 Also, we deploy the dashboard that we have the Kubernetes dashboard with the plugin for the mini cube and the tunnel. 03:07:51.000 --> 03:08:04.000 So we are able to provide access from the network to applications that are deployed inside our kernel. 03:08:04.000 --> 03:08:10.000 And finally, we deployed our first application, right? 03:08:10.000 --> 03:08:15.000 Which is this Wager UI in a very basic form. 03:08:15.000 --> 03:08:29.000 What is important to have in mind here is that it's always the best practice to have a namespace for each one of your applications. 03:08:29.000 --> 03:08:34.000 So try to do that always. 03:08:34.000 --> 03:08:47.000 And obviously, if it makes sense, because if you are deploying components of the same application, you want those components all to be in the same namespace. 03:08:47.000 --> 03:08:52.000 So to not have different namespace for each component. 03:08:52.000 --> 03:08:54.000 Okay, that's it. 03:08:54.000 --> 03:09:04.000 Is there any question that you have or doubt that may be in your minds right now? 03:09:04.000 --> 03:09:06.000 Okay, cool. 03:09:06.000 --> 03:09:11.000 So let's continue. 03:09:11.000 --> 03:09:17.000 So, well, we see that. 03:09:17.000 --> 03:09:32.000 Okay, so this I'm not going to into details here, but with cube ADN, you can create your own cluster. 03:09:32.000 --> 03:09:38.000 So there are some stuff here which is useful. 03:09:38.000 --> 03:09:47.000 For example, the option cube CTL create deployment, which helps you to create a deployment from scratch. 03:09:47.000 --> 03:09:51.000 So that will be useful sometimes. 03:09:51.000 --> 03:10:07.000 Or if you want to create a cluster by yourself, this is as I said, for educational purposes, it will be a good idea for understanding a little bit behind the scenes. 03:10:07.000 --> 03:10:15.000 What is happening, for example, in the Linux world, there is a project called Linux from scratch. 03:10:15.000 --> 03:10:28.000 In this project, you create a Linux distribution completely from scratch, exactly as Richard Stallman did and the service did back in the day. 03:10:28.000 --> 03:10:37.000 So that is a great way to learn Linux to the highest or to the deepest level possible. 03:10:37.000 --> 03:10:43.000 So this kind of stuff is good for in order to do the same with Kubernetes. 03:10:43.000 --> 03:10:55.000 So if you want to go deep inside Kubernetes, it will be a good idea to try this in some free time you have or whenever you are up to. 03:10:55.000 --> 03:11:05.000 Because in this there is like all the process that is followed in order to have a running one node cluster in this case. 03:11:05.000 --> 03:11:22.000 So here you can install the API server running the service by hand, manually the ATCD connecting the server with the ATCD, start using the QC, deployments. 03:11:22.000 --> 03:11:34.000 So this is like a step by step process in order to deploy a full functional cluster with one node. 03:11:34.000 --> 03:11:40.000 So every one of the of the components that you may need are skipped. 03:11:54.000 --> 03:12:09.000 Well, so regarding high availability within QNets, first of all, you have to be aware that a few years ago before QNets, 03:12:09.000 --> 03:12:22.000 was mass adopted, having high availability within a company, within an application, within a service was really complex. 03:12:36.000 --> 03:12:51.000 control to balancing to IP addressing service able to monitor when another service went down or not. 03:12:51.000 --> 03:13:00.000 So having high availability within the company was a really high complex requirement. 03:13:00.000 --> 03:13:12.000 So thinking that today, nowadays with QNets, you are able to have high availability load balancing with just one line of code. 03:13:12.000 --> 03:13:29.000 It's amazing. I mean, I had the possibility of implement a lot of clusters with pacemaker and core sync and all that stuff from Linux. 03:13:29.000 --> 03:13:40.000 And I mean, this is just fascinating to be able to do that all to do what we did before QNets as simple as it's now. 03:13:40.000 --> 03:13:49.000 So this is really, really powerful. And it's one of the reasons why QNets is so high, highly adopted or widely adopted. 03:13:49.000 --> 03:14:02.000 So anyway, some basics that we need to have super clear and sometimes one can think that that we know this, but it's not that certain. 03:14:02.000 --> 03:14:11.000 So first of all, within QNets, you have the node, a worker node where your applications are running. 03:14:11.000 --> 03:14:28.000 And within that node, you can have multiple pods. Each pod is like the machine is like the server, the CPU and memory and networking stack is here in this part. 03:14:28.000 --> 03:14:37.000 This part has an IP address and inside the pod is where you have the containers. 03:14:37.000 --> 03:14:45.000 So the container is the image of your application that is running inside your pod. 03:15:07.000 --> 03:15:12.000 So it's important to know where is this IP address. 03:15:12.000 --> 03:15:21.000 And please notice that this IP address will be shared between these container engines and this container logger. 03:15:21.000 --> 03:15:35.000 So if you have a service here running in the same port at the same port that this other container, you will have an issue, a problem because it's only one TCP IP stack. 03:15:35.000 --> 03:15:41.000 So this is good to be clear about. 03:15:41.000 --> 03:15:51.000 So how do we scale? How do we scale this cluster? I mean, this is an engine with a logger. So I want to have multiple engines. 03:15:51.000 --> 03:15:59.000 So one option is to create more pods. Each pod may be in a different node. 03:15:59.000 --> 03:16:06.000 So you can have multiple pods in different nodes and each pod must have its own IP address. 03:16:06.000 --> 03:16:12.000 You want to add multiple engines inside this because of what I just told you. 03:16:12.000 --> 03:16:26.000 But there are some caveats here. So for example, if you have a web application with, for example, a cache server, a Redis or Memcache for sessions handling. 03:16:26.000 --> 03:16:35.000 For example, you may have that engines container with the Redis container in the same pod. 03:16:35.000 --> 03:16:47.000 And if you have that architecture, you will have high performance between the engine server and the Redis cache server because they are in local host. 03:16:47.000 --> 03:16:54.000 So the network traffic is local. So there are no virtually no delay at all. 03:16:54.000 --> 03:17:00.000 However, you will have to scale both of them together always. 03:17:00.000 --> 03:17:11.000 So you will have if you want or need 10 engines servers, you will have to deploy 10 Redis service as well. 03:17:11.000 --> 03:17:20.000 And the needs of scaling for Redis versus engines may not be the same. 03:17:20.000 --> 03:17:26.000 So you will have to like analyze which is what I want or what is best for me. 03:17:26.000 --> 03:17:36.000 Also, you can have different pods, which is like the standard and common way in which each pod will be scaled separately. 03:17:36.000 --> 03:17:49.000 So you will have multiple engines containers running each one on its own pod as well as Redis multiple Redis containers each one running at its own pod. 03:17:49.000 --> 03:17:57.000 But in this case, you will have a network communication between these pods and that will require. 03:17:57.000 --> 03:18:06.000 And let me show you. I think I think I don't have it. Oh, yeah, I have it here. 03:18:06.000 --> 03:18:18.000 So let me go and that will require something like that, like this, so that the the package that needs to travel from the engine server will have to. 03:18:18.000 --> 03:18:35.000 We'll have to cross or traverse across the different interfaces, virtual interfaces, network steps in order to reach the another or the other. 03:18:50.000 --> 03:19:04.000 However, however, when you are discussing deployments with thousands of pods, hundreds of applications, the traffic, the network traffic, 03:19:04.000 --> 03:19:17.000 the CPU usage because of that, the APA server being had, but all hammered by all of those pods and services and everything will make a toll. 03:19:17.000 --> 03:19:25.000 So this is stuff that you may want to consider depending on your use case as well. 03:19:25.000 --> 03:19:30.000 But for typical usage, it's OK. There is no no issue at all. 03:19:30.000 --> 03:19:47.000 So regarding this, there are in order to access to do load balancing, to access the services that are available within a cluster, you will have to use certain resources. 03:19:47.000 --> 03:19:56.000 The most common or popular ones are the services, which are the cluster AP, the port and the load balancer. 03:19:56.000 --> 03:20:18.000 If you want a little bit of complexity in the way that you have the access and perhaps convenience as well, you may want you may want to have an ingress controller to to to control the access to for the HTTP services that are published. 03:20:18.000 --> 03:20:31.000 And also you will leverage or the cluster will leverage on the service discovery in order to access other resources, which is mostly the environment variables as well. 03:20:46.000 --> 03:21:00.000 But using the nodes API and unique port of this node while the load balancer gives you the the possibility of the of publish a service. 03:21:00.000 --> 03:21:12.000 Which is running internally using an external load balancer provided by your cloud or your premises infrastructure. 03:21:12.000 --> 03:21:21.000 Usually this is hard on premises. This requires requires some work and is fairly common. 03:21:21.000 --> 03:21:40.000 We have a manual configuration here at the load balancer because it's not I mean, it requires a certain effort to integrate the load balancer, the external load balancer with kubernetes. 03:21:40.000 --> 03:21:50.000 Most recent load balancers have are able to or can be integrated directly because they now support kubernetes. 03:21:50.000 --> 03:21:55.000 But a few years ago, that was in the case in the case of ingress. 03:22:11.000 --> 03:22:16.000 So let's get a little bit into this. 03:22:16.000 --> 03:22:19.000 OK, so. 03:22:21.000 --> 03:22:25.000 So I just told you about these types of services. 03:22:25.000 --> 03:22:32.000 There is another one named the external name and another which is the IP address, which are not that common. 03:22:32.000 --> 03:22:38.000 External IP, which are not that common, but it's available as well. 03:22:39.000 --> 03:22:44.000 The standard one, the default one is the cluster IP. 03:22:44.000 --> 03:22:52.000 This cluster IP service is a virtual IP address, which is allocated for each one of the services that are deployed. 03:22:52.000 --> 03:23:01.000 Be aware that you can deploy bots or applications and not assign a service to that application. 03:23:01.000 --> 03:23:10.000 So that is which was the case right now with the swagger UI in which we run the path, the image. 03:23:10.000 --> 03:23:19.000 But we had to to create or to expose the service in order to to be able to reach that application. 03:23:19.000 --> 03:23:22.000 So this is important to notice, for example. 03:23:22.000 --> 03:23:25.000 How does the cluster IP work? 03:23:25.000 --> 03:23:47.000 If you are an external user, either an application or a human, and you want to access from outside this application with cluster IP, you won't be able to because the cluster IP only provides access for internal members of the cluster, internal bots. 03:23:47.000 --> 03:24:04.000 And this uses the QB proxy, which is a table at the end or QB router, which is routing layer two and ceiling, which is another plugin or well, actually different plugins of that will allow you to get access. 03:24:04.000 --> 03:24:10.000 Also, these these let me go back. 03:24:12.000 --> 03:24:26.000 So these well, I miss to tell you that this this spot, if this spot wants to communicate with the green bots, it access this IP address. 03:24:26.000 --> 03:24:29.000 But also there is the service discovery. 03:24:29.000 --> 03:24:54.000 So the service discovery, which is the best current practice or the or the best practice within a service and within an application in cybernets is to use the service name, which is the name or the well, the deployment name for accessing the service. 03:24:54.000 --> 03:24:57.000 No matter which IP address gets assigned. 03:24:57.000 --> 03:25:05.000 So in this case, the bot wants to access this service disorder service using the name. 03:25:05.000 --> 03:25:09.000 So thanks to Corbyn S, which was a few years. 03:25:09.000 --> 03:25:13.000 Well, actually, one year ago, it was QDNS. 03:25:13.000 --> 03:25:16.000 But now it's Corbyn S. 03:25:16.000 --> 03:25:27.000 Thanks to this service, you will have internal DNS resolution that maps every service to the IP address that is assigned by default. 03:25:27.000 --> 03:25:39.000 Please don't remember that if these spots are relocated or are deleted and launched again, the IP address will change. 03:25:39.000 --> 03:25:42.000 So but the name will remain. 03:25:42.000 --> 03:25:48.000 So this is why it's so important to access using not the IP, but the name. 03:25:48.000 --> 03:25:51.000 Yeah. So that's it. 03:25:51.000 --> 03:25:56.000 Now, the load balancer, the load balancer is the. 03:25:56.000 --> 03:26:05.000 It's external, usually from the cloud or as I told you, from infrastructure provided internally. 03:26:05.000 --> 03:26:09.000 This will cost in the in the in the clouds. 03:26:09.000 --> 03:26:17.000 But it's common to have access using node port before accessing load balancer. 03:26:17.000 --> 03:26:22.000 The issue here with that part is that you are exposing the nodes. 03:26:22.000 --> 03:26:28.000 So it's not a good practice out in the wild. 03:26:28.000 --> 03:26:31.000 So you have to be careful with that. 03:26:31.000 --> 03:26:41.000 So in this case, we do have the green parts using cluster IPA and the purpose using a service cluster IPA. 03:26:41.000 --> 03:26:47.000 So you create for the red ones a lot balancer. 03:26:47.000 --> 03:26:55.000 In this case, the access to the red service will always use the DNS, the load balancer, 03:26:55.000 --> 03:27:00.000 which points to the IP address corresponding IP address for those ports. 03:27:00.000 --> 03:27:05.000 So the internal communication will use this load balancer in order to access there. 03:27:05.000 --> 03:27:14.000 When you expose this service, it will request an external IP address. 03:27:14.000 --> 03:27:21.000 This external IP address will be provided by your adjacent infrastructure. 03:27:21.000 --> 03:27:33.000 Let's say your provider, your internal network in this case in me, you will be a minute to know the one that gives us this. 03:27:33.000 --> 03:27:37.000 So here it goes. 03:27:37.000 --> 03:27:39.000 So these are load balancers. 03:27:39.000 --> 03:27:46.000 The one really popular is the metal load balancer, which is a software load balancer that you can install. 03:27:46.000 --> 03:27:54.000 The H8 proxy is also another super common load balancer. 03:27:54.000 --> 03:28:03.000 OpenShift in the version three, they use H8 proxy as the default load balancer. 03:28:03.000 --> 03:28:07.000 And now the engines is another one that is being used. 03:28:07.000 --> 03:28:14.000 And the traffic is another one that is commonly used in these scenarios as well. 03:28:14.000 --> 03:28:25.000 So these load balancers will give you an external IP address that external IP address will be available for external users. 03:28:25.000 --> 03:28:37.000 So they will hit this external IP address and will be able to access the ports as the same as this before. 03:28:37.000 --> 03:28:43.000 Also, you can create here. 03:28:43.000 --> 03:28:49.000 I mean, you can expose here ports. 03:28:49.000 --> 03:28:58.000 You can expose here ports, particular ports for each one of the services that are here. 03:28:58.000 --> 03:29:06.000 So, for example, in this case, the port 80 points to the port 3080. 03:29:06.000 --> 03:29:15.000 And so here there is like this mapping that allows you to access the different services within the cluster as well. 03:29:15.000 --> 03:29:20.000 And that is handled by the load balancer, the way that is balanced. 03:29:23.000 --> 03:29:30.000 These ports are the ones that are publicly exposed by the nodes. 03:29:30.000 --> 03:29:47.000 So Kubernetes or the networking component has to be aware of which ports are being used because it may, I mean, it cannot share the same port between in the same node. 03:29:47.000 --> 03:29:50.000 I mean, this port will be unique for this service. 03:29:50.000 --> 03:29:58.000 The three hundred eighty will be unique for the red and it will be the same port in the other nodes. 03:29:58.000 --> 03:30:04.000 These are two different nodes. It will be the same accessible from here. 03:30:04.000 --> 03:30:12.000 So in this case, the load balancer is connecting to these node ports. 03:30:12.000 --> 03:30:19.000 In the previous case, it was connecting to the IP address directly as well. 03:30:19.000 --> 03:30:30.000 And here, so these these ones were not able to access directly closer, but here they are able to access the closer. 03:30:33.000 --> 03:30:44.000 This means also that if you are in the cloud, you must be aware that your node may be exposed if it's not properly configured. 03:30:44.000 --> 03:30:54.000 So I mean, and this is one of the ways in which the hackers find find Kubernetes clusters in the Internet. 03:30:54.000 --> 03:31:03.000 They start scanning usually the API server port, which is the six forty four three is the common one or the eight forty four three. 03:31:03.000 --> 03:31:07.000 And they find API servers open to the public. 03:31:07.000 --> 03:31:23.000 And the other way that they do is to scan for ports in this range, which is the standard range used by a keyword that and find nodes with ports exposed and completely open. 03:31:23.000 --> 03:31:28.000 So that is that is something to be aware of. 03:31:30.000 --> 03:31:43.000 So the node port, it goes from three thirty thousand to thirty two thousand seven hundred sixty seven range. 03:31:43.000 --> 03:31:47.000 This port will be the same for all of the nodes. 03:31:47.000 --> 03:32:00.000 And that is because remember that it may happen that this spot has multiple instances running each one instance for each one of the nodes. 03:32:00.000 --> 03:32:06.000 Or it may happen that this spot needs to be relocated to the other port. 03:32:06.000 --> 03:32:13.000 So this port will always be like tied to the to the port or to the service in question. 03:32:13.000 --> 03:32:17.000 So it's the same. You don't can be used. 03:32:17.000 --> 03:32:31.000 And if you are configuring or using these node port, you will have to be to handle that as well manually. 03:32:31.000 --> 03:32:36.000 So that is why the load balancer is the best way to work with. 03:32:36.000 --> 03:32:41.000 There is another one which is not that common is the external name. 03:32:41.000 --> 03:32:43.000 This is this external name. 03:32:43.000 --> 03:32:55.000 What that what this does is to use that DNS entry and the DNS entry is handled by the external load balancer to access the service. 03:32:56.000 --> 03:32:58.000 The same with external IP. 03:32:58.000 --> 03:33:13.000 Actually, we are going to use this in one of the labs because the external IP allows you to map already wrote IP address within our system to the service that we are deploying in a specific port. 03:33:14.000 --> 03:33:25.000 Also, there are headless services which are services that doesn't or don't use UDP or TCP to communicate. 03:33:25.000 --> 03:33:30.000 So they are using, for example, G or PC or something like that. 03:33:30.000 --> 03:33:36.000 So in these cases, those are headless services that doesn't need to be published. 03:33:36.000 --> 03:33:51.000 And in this case, we use a cluster IP none in the manifest or in the in the running line in order to don't to not have a service assignment as well. 03:33:51.000 --> 03:33:56.000 So this is a certain kind of services. 03:33:56.000 --> 03:34:06.000 You can always describe the service and you will see the endpoints and the host and IP address available for that service as well. 03:34:06.000 --> 03:34:12.000 If you want to see the endpoints, well, we don't have yet. 03:34:20.000 --> 03:34:28.000 So here you will see like the with with the endpoints, you will see the full URL that you can access. 03:34:28.000 --> 03:34:32.000 So that whereas with services. 03:34:35.000 --> 03:34:41.000 You see the IP address and the ports, so it's different. 03:34:41.000 --> 03:34:48.000 So here you you need to think how is how can I access this? 03:34:48.000 --> 03:34:53.000 For example, and here you can see that directly the end point. 03:34:55.000 --> 03:34:59.000 So you can run that later as important. 03:34:59.000 --> 03:35:01.000 These is endpoints. 03:35:01.000 --> 03:35:03.000 There is because it's in plural. 03:35:03.000 --> 03:35:09.000 There is no there is no end point in similar resource as well. 03:35:09.000 --> 03:35:17.000 So every other nodes, node deployment, deployments, those are you can use both names as well. 03:35:17.000 --> 03:35:26.000 Another kind of resource here is the ingress, which is only for HTTP and for TLS. 03:35:30.000 --> 03:35:49.000 So usually what happens here with ingress is that you have a wildcard certificate configured at the ingress and with with URL rewriting or mapping, 03:35:49.000 --> 03:35:56.000 you and allow to use the same certificate for all the services that are exposed in your cluster. 03:35:56.000 --> 03:36:00.000 So it's one common way to work with that. 03:36:00.000 --> 03:36:05.000 So in this case, in this example, we have the ingress controller here. 03:36:05.000 --> 03:36:15.000 This is pointing to load balancer has an IP address, has these ports exposed, the 80 and the 44 tree. 03:36:15.000 --> 03:36:25.000 So here this this service provides the termination services and the load balancer services. 03:36:25.000 --> 03:36:34.000 And it connects to the controller within the cluster and this controller, the engines, the traffic, the proxy or the. 03:36:37.000 --> 03:36:39.000 So I forgot the name. 03:36:39.000 --> 03:36:43.000 The. Ambassador is another one. 03:36:43.000 --> 03:36:54.000 So these are these are the ones the controllers that handle the access to the services within the cluster from a unique point of view. 03:36:54.000 --> 03:36:58.000 There is something important here with this approach. 03:36:58.000 --> 03:37:08.000 With this approach, you only need one IP address for accessing the whole cluster, any of the applications that are available in the cluster. 03:37:08.000 --> 03:37:12.000 With the load balancer approach. 03:37:12.000 --> 03:37:22.000 You will require one IP address, one IP address for each one of the load balancer inputs. 03:37:22.000 --> 03:37:29.000 So that is a big difference, because you have a lot of applications using load balancers. 03:37:29.000 --> 03:37:37.000 One is called ECB. So so that is why we use ingress ingress as well. 03:37:37.000 --> 03:37:46.000 This means obviously this requires like an extra job in order to reach the actual workload. 03:37:46.000 --> 03:37:52.000 So it may include some latency. 03:37:52.000 --> 03:38:04.000 But there are some some stuff that allows you to to handle the way of the traffic is done to have a lot of balancing. 03:38:04.000 --> 03:38:06.000 In different ways. 03:38:10.000 --> 03:38:13.000 This works like a standard load balancer. 03:38:13.000 --> 03:38:24.000 If one of the nodes fails or there is no way to connect, it just ignores that node and sends the request to the available node. 03:38:24.000 --> 03:38:30.000 So so that is like the standard way to do this. 03:38:34.000 --> 03:38:37.000 We are going to deploy some applications in this lab. 03:38:37.000 --> 03:38:45.000 But before doing that, let me show you talk about one of the applications that we are going to use during the training. 03:38:45.000 --> 03:38:50.000 I mean, there are several applications that we can work with. 03:38:50.000 --> 03:38:53.000 This is one of the applications. 03:38:53.000 --> 03:39:05.000 What I would recommend to you guys is to do the exercises using the application proposed in the in the specific lab, 03:39:05.000 --> 03:39:12.000 but also using this application because this application is a little bit more complex. 03:39:12.000 --> 03:39:22.000 Not that much, but it's it's kind of I mean, it has a certain architecture that can be that can show you a lot of these concepts. 03:39:22.000 --> 03:39:25.000 In a fairly interesting way. 03:39:25.000 --> 03:39:32.000 So within the labs, we are using my basic applications and stuff like that. 03:39:32.000 --> 03:39:34.000 So please do that. 03:39:34.000 --> 03:39:38.000 But also try the same in lab with the Docker coins application. 03:39:38.000 --> 03:39:41.000 So so that's why I explain this. 03:39:41.000 --> 03:39:49.000 So this application, it's a it's kind of a cryptocurrency, 03:39:49.000 --> 03:39:52.000 cryptocurrency, but it's not a cryptocurrency. 03:39:52.000 --> 03:39:55.000 It's like a mean. 03:39:55.000 --> 03:40:09.000 So with Docker coin and what you do is to create Docker coins, which at the end is to generate a random bytes hash those bytes. 03:40:09.000 --> 03:40:19.000 And every time that it finishes the hash, increments the counter because that is like a new Docker coin created. 03:40:19.000 --> 03:40:27.000 It's like the same principle of of Bitcoin and everything, but with a very simple hash. 03:40:27.000 --> 03:40:32.000 So it won't take years to have a new coin. 03:40:32.000 --> 03:40:46.000 So this counter will show us the speed of meaning of these Docker coins and is that it showed us the graphic with the with the container. 03:40:46.000 --> 03:40:56.000 So what happens with this application that we can escape the application if we want to increase the number of coins created. 03:40:56.000 --> 03:41:04.000 We can play moving the application from or the or the back end of the application to one of the nodes or to multiple nodes. 03:41:04.000 --> 03:41:11.000 So so that is like the idea behind this application has five services. 03:41:11.000 --> 03:41:16.000 One service is the RNG, the random generator. 03:41:16.000 --> 03:41:25.000 This is a web service which creates the random bytes, the hasher, which computes the hash for those random bytes. 03:41:25.000 --> 03:41:32.000 The worker, which is the one who calls or which calls the random generator and the hasher. 03:41:32.000 --> 03:41:47.000 The web UI, which is the interface to see the progress of the meaning and redis, which is our back end to store the data of the how many Docker coins we have created. 03:41:47.000 --> 03:41:52.000 So these that the store is updated by the worker. 03:41:52.000 --> 03:41:56.000 So the worker is the one who interacts with redis as well. 03:41:56.000 --> 03:42:02.000 So there is five services within that. 03:42:02.000 --> 03:42:05.000 How this work? 03:42:05.000 --> 03:42:08.000 The worker invokes the random generator. 03:42:08.000 --> 03:42:11.000 The worker invokes the hasher. 03:42:11.000 --> 03:42:16.000 The worker does this always are wild forever. 03:42:16.000 --> 03:42:19.000 I mean, if you need to loop, it doesn't stop ever. 03:42:19.000 --> 03:42:27.000 So if the worker face, I mean, there is panic because everything stops working. 03:42:27.000 --> 03:42:29.000 So the worker should never fail. 03:42:29.000 --> 03:42:38.000 And every second, the worker updates the redis back end showing how many loops it has done. 03:42:38.000 --> 03:42:42.000 So how many Docker coins has been created? 03:42:42.000 --> 03:42:49.000 The web UI, where is this back end and shows us the hash speed in the browser. 03:42:49.000 --> 03:42:52.000 So this is the architecture. 03:42:52.000 --> 03:42:58.000 The user gets the HTTP interface. 03:42:58.000 --> 03:43:01.000 Web UI using TCP. 03:43:01.000 --> 03:43:04.000 It connects to the redis to read the information. 03:43:04.000 --> 03:43:16.000 So the web UI is just a glorified database reader and the worker, which is the main back end, invokes or interacts with a web service. 03:43:16.000 --> 03:43:19.000 So there are no other protocols here. 03:43:19.000 --> 03:43:23.000 Just TCP, the random, the hasher and the redis. 03:43:23.000 --> 03:43:27.000 So that is like the application. 03:43:28.000 --> 03:43:37.000 So we got in line with the idea is that we have four labs to to to run this evening. 03:43:37.000 --> 03:43:45.000 So the first one will be let me show you what the first one is to deploy applications and explore networking. 03:43:45.000 --> 03:43:50.000 The other one is for high availability and scale workloads. 03:43:50.000 --> 03:44:05.000 I think it's worth for us to create the ingress controller as well and to create the demon sets so we can understand the difference between a replica set, a demon set deployment. 03:44:05.000 --> 03:44:12.000 So I would suggest that let's do all of these labs today. 03:44:12.000 --> 03:44:23.000 So let me go to the document here so we can take a look to the labs. 03:44:23.000 --> 03:44:27.000 I'll explain them to you. 03:44:27.000 --> 03:44:35.000 So, well, the first one, the lab for applications, deploying applications with bots and exploring the networking options. 03:44:35.000 --> 03:44:38.000 So what this is like the introduction. 03:44:38.000 --> 03:44:47.000 There are some comments here that are the usual or the typical comments that you may use when you want to accomplish this task. 03:44:47.000 --> 03:44:54.000 So these are just like for example purposes, not proper comments to execute in this lab. 03:44:54.000 --> 03:45:00.000 And this is the in this case, this is the proper lab to execute. 03:45:00.000 --> 03:45:09.000 Please. Here we are using a very simple application, multi tool, which is like another Swiss Army knife. 03:45:09.000 --> 03:45:12.000 This has been in this look up. 03:45:12.000 --> 03:45:14.000 How's this? 03:45:14.000 --> 03:45:19.000 I mean, this is an application that you may want to use within your own kernel. 03:45:19.000 --> 03:45:26.000 I'll give her next closer story because this allows you to diagnose what is happening in the kernel. 03:45:26.000 --> 03:45:28.000 So this is useful for that. 03:45:28.000 --> 03:45:32.000 So we can use that do the lab with this. 03:45:32.000 --> 03:45:39.000 But I strongly suggest that you deploy the Docker coin as well. 03:45:39.000 --> 03:45:48.000 I'll show you there is another lab in which we work directly with Docker coin, but it's it's probably simple what we want to do here. 03:45:48.000 --> 03:45:53.000 So OK, so first we will create the namespace. 03:45:53.000 --> 03:45:57.000 We are using something that is called an imperative deployment. 03:45:57.000 --> 03:46:11.000 This imperative deployment is just like the option of run an image, the one that we did previously or or with the command create deployment. 03:46:11.000 --> 03:46:12.000 What's the difference? 03:46:12.000 --> 03:46:23.000 When you use QCTL run, what you are doing is telling the cluster to run the path and nothing else. 03:46:23.000 --> 03:46:38.000 When you say use create deployment, you are telling the cluster, OK, please, let's say that will create a deployment, a replica set and the path, obviously. 03:46:38.000 --> 03:46:45.000 So it goes a little bit further than the wrong comment. 03:46:45.000 --> 03:46:52.000 Now, when we have that, we are going to discuss the deployment and the replica set like concept. 03:46:52.000 --> 03:46:56.000 So we agree on the meaning of this. 03:46:56.000 --> 03:46:59.000 So first, we create the namespace. 03:46:59.000 --> 03:47:02.000 After that, deploy the multi-tool image. 03:47:02.000 --> 03:47:05.000 Then we can test the deployment. 03:47:05.000 --> 03:47:10.000 So in order to test the deployment, we expose service. 03:47:10.000 --> 03:47:26.000 In this case, we are going to use we are going to use a node port service and we are going to access using the IP and others. 03:47:26.000 --> 03:47:31.000 So there are some comments here that will allow you to obtain that information. 03:47:31.000 --> 03:47:33.000 Oh, please notice. 03:47:33.000 --> 03:47:34.000 OK, yeah. 03:47:34.000 --> 03:47:40.000 So here you will find like the IP address so you can run this comments. 03:47:40.000 --> 03:47:54.000 Let me know if you have issues copying these because sometimes it gets like I mean the PDF file changes or damages these characters. 03:47:54.000 --> 03:47:59.000 So sometimes you need to copy and paste that for you. 03:47:59.000 --> 03:48:09.000 Once you have that access the service and you will see the this comment, you can execute. 03:48:09.000 --> 03:48:20.000 Well, it's not there, but I'll show you how to access the pod so you can explore also the tools that are within the cluster. 03:48:20.000 --> 03:48:24.000 Now, that will be the the imperative deployment. 03:48:24.000 --> 03:48:27.000 The other one will be the declarative deployment. 03:48:27.000 --> 03:48:31.000 In this case, what we are using is a Jamf file. 03:48:31.000 --> 03:48:36.000 So in this case, we are going to deploy engines. 03:48:36.000 --> 03:48:41.000 Engines and so engines, the Jamf file with engines. 03:48:41.000 --> 03:48:50.000 It's here, but I will show you. 03:48:50.000 --> 03:48:56.000 It's here in the in the folder K8A's advanced labs. 03:48:56.000 --> 03:49:01.000 Actually, let me it's better to see to see it here. 03:49:01.000 --> 03:49:04.000 So in this visual studio code, we have those files. 03:49:04.000 --> 03:49:09.000 So here you will find the engines Jamf. 03:49:09.000 --> 03:49:15.000 So this is this is called the declarative. 03:49:15.000 --> 03:49:22.000 Because. 03:49:22.000 --> 03:49:30.000 Because it declares rather than see, but it declares or explains how the deployment will be. 03:49:30.000 --> 03:49:35.000 So, oh, my God, let me see. 03:49:35.000 --> 03:49:38.000 OK, there is one. 03:49:38.000 --> 03:49:40.000 We can correct that here. 03:49:40.000 --> 03:49:43.000 I just noticed that there is an error here. 03:49:43.000 --> 03:49:50.000 This this name, this line namespace should be the same name of the namespace that you have created. 03:49:50.000 --> 03:49:56.000 So I'm going to check if there is something in the version of the file that was updated. 03:49:56.000 --> 03:49:59.000 But it will take a while. 03:49:59.000 --> 03:50:10.000 So with this NX, NX Jamf file, we create a deployment and we can see what happens and how it differs from the previous one. 03:50:10.000 --> 03:50:17.000 So also the service discovery will be like the like the like the same as well. 03:50:17.000 --> 03:50:23.000 Later in the same lab, we will create different services. 03:50:23.000 --> 03:50:28.000 So the cluster IP. 03:50:28.000 --> 03:50:31.000 The lab balancer and the node port. 03:50:31.000 --> 03:50:35.000 So we can explore the different ways to do that. 03:50:35.000 --> 03:50:41.000 So please go ahead and let's work with that. 03:50:41.000 --> 03:50:46.000 I'm going to to do it as well. 03:50:46.000 --> 03:50:50.000 So, but feel free to advance on your own. 03:50:50.000 --> 03:50:57.000 And just if you have any doubt, please don't hesitate in asking me. 03:50:57.000 --> 03:51:01.000 I'm here to help you with this. 03:51:01.000 --> 03:51:05.000 So. 03:51:05.000 --> 03:51:18.000 I'm going to check what happened with the file. 03:51:18.000 --> 03:51:23.000 OK, now it's only one file that had the error. 03:51:23.000 --> 03:51:26.000 So. 03:51:26.000 --> 03:51:27.000 We can fix it. 03:51:27.000 --> 03:51:33.000 You can fix it without issue. 03:51:33.000 --> 03:51:39.000 Remember to use the QBEN S command. 03:51:39.000 --> 03:51:45.000 To change the namespace and be there. 03:51:45.000 --> 03:51:52.000 So if you want to see which namespaces are available with QCTL get NS. 03:51:52.000 --> 03:51:59.000 And if you want to see in which namespace are you in with QNs, you can do it. 03:51:59.000 --> 03:52:02.000 So it shows me that I'm in the main space. 03:52:02.000 --> 03:52:08.000 So in the instructions, there is no for this lab is not the QNs. 03:52:08.000 --> 03:52:09.000 I need that. 03:52:09.000 --> 03:52:15.000 So actually, I'm going to have this in the file for the next version. 03:52:15.000 --> 03:52:19.000 But please be sure to be aware of that. 03:52:19.000 --> 03:52:25.000 So you don't lose. 03:52:25.000 --> 03:52:37.000 Don't deploy the applications in the different namespace. 03:52:37.000 --> 03:52:44.000 I use NS instead of namespace. 03:52:44.000 --> 03:52:49.000 There is a lot of stuff. 03:52:49.000 --> 03:52:54.000 Also, you can create an alias to QCTL. 03:52:54.000 --> 03:52:57.000 Let me show you. 03:52:57.000 --> 03:53:00.000 Because that is super useful. 03:53:00.000 --> 03:53:05.000 So you don't have to write QCTL all the time. 03:53:05.000 --> 03:53:11.000 So that is actually that is available in the sheet. 03:53:11.000 --> 03:53:15.000 Let me show you. 03:53:15.000 --> 03:53:22.000 So where is it? 03:53:34.000 --> 03:53:37.000 Oh, it's not here. 03:53:37.000 --> 03:53:40.000 It was here. 03:53:40.000 --> 03:53:46.000 Let me show you. 03:53:46.000 --> 03:53:52.000 So what you do is just alias K equal QCTL. 03:53:52.000 --> 03:54:03.000 And with that, you every time that you type K, you will have you will need to write everything. 03:54:03.000 --> 03:54:07.000 So if you want to do that, that will be super nice. 03:54:07.000 --> 03:54:10.000 It will help you. 03:54:10.000 --> 03:54:17.000 But just make yourself comfortable. 03:54:17.000 --> 03:54:33.000 OK, don't forget to change your namespace. 03:54:33.000 --> 03:54:47.000 Also, it would be a great idea if you type the comments, not just copy, but try at the beginning to to to type down the comment. 03:54:47.000 --> 03:54:56.000 And that is because your brain learns more if you use your hands to type. 03:54:56.000 --> 03:55:08.000 I mean, if you make that link between what your brain is reading and what your hands are typing, that will be a better way to get familiarized with these comments. 03:55:08.000 --> 03:55:13.000 Over the time, you will do this automatically. 03:55:13.000 --> 03:55:15.000 And it won't matter if you copy or not. 03:55:15.000 --> 03:55:19.000 But it will be a good idea for you to try to copy. 03:55:19.000 --> 03:55:26.000 Obviously, if it's too big, you need to help yourself. 03:55:26.000 --> 03:55:36.000 And for example, in the example, we are using that in imperative, but we don't really need that because we are already there. 03:55:36.000 --> 03:55:42.000 However, it's it's super common that you made a mistake. 03:55:42.000 --> 03:55:45.000 So that is why you're there. 03:55:45.000 --> 03:55:49.000 OK, so the image that we are going to use is this one. 03:55:49.000 --> 03:55:51.000 Let me show you the. 03:55:54.000 --> 03:56:01.000 The image first, this is value the. 03:56:01.000 --> 03:56:06.000 So this is the tool, the network multi tool. 03:56:06.000 --> 03:56:08.000 It's. 03:56:11.000 --> 03:56:14.000 Well, it has different comments included. 03:56:14.000 --> 03:56:19.000 Our P and to be down to the shark. 03:56:19.000 --> 03:56:23.000 Engines straight roads tell it. 03:56:23.000 --> 03:56:28.000 Apache benchmark Apache benchmark. 03:56:29.000 --> 03:56:44.000 So it's useful because one thing with two or nets and the best practice in general is that a container and image has a minimal set of tools. 03:56:44.000 --> 03:56:59.000 So it's even possible that you don't even have a shell within a container or a pinch or a host or an NS lookup or a T.C. 03:57:21.000 --> 03:57:25.000 So whenever you create something, 03:57:25.000 --> 03:57:32.000 deploy something, get used to run a get old, a Cuba, Cuba, Cuba, get old. 03:57:32.000 --> 03:57:34.000 I'm going to use the full comments. 03:57:34.000 --> 03:57:40.000 So so you see the comment because this will show you what is happening. 03:57:40.000 --> 03:57:48.000 If it's running or not, you can run the dead events as well. 03:57:48.000 --> 03:57:50.000 Because this shows you events. 03:57:50.000 --> 03:57:55.000 Usually is super common that the image is wrong. 03:57:55.000 --> 03:58:01.000 For example, if I'm going to delete this deployment. 03:58:06.000 --> 03:58:08.000 Just to show you something. 03:58:08.000 --> 03:58:11.000 So I deleted it. 03:58:12.000 --> 03:58:14.000 So there is nothing here. 03:58:14.000 --> 03:58:23.000 But if I try to create the deployment and I make a mistake with the image, for example. 03:58:23.000 --> 03:58:29.000 So I will have an error created creating the container. 03:58:29.000 --> 03:58:37.000 And it will show me an error in a school because there is no such image. 03:58:37.000 --> 03:58:41.000 And with events, I can see the same error. 03:58:41.000 --> 03:58:45.000 I mean, I can see like the detail of this error. 03:58:45.000 --> 03:58:52.000 So so just keep that in mind as well. 03:58:53.000 --> 03:58:57.000 I'm going to do something that runs here. 03:58:57.000 --> 03:59:00.000 I'm going to delete the deployment. 03:59:03.000 --> 03:59:06.000 And fix the error. 03:59:06.000 --> 03:59:09.000 Deployment. 03:59:15.000 --> 03:59:18.000 There is a lot for troubleshooting. 03:59:18.000 --> 03:59:22.000 So we do stuff like this. 03:59:22.000 --> 03:59:26.000 But it doesn't hurt to do it from now. 03:59:27.000 --> 03:59:34.000 Usually by the time when we reach troubleshooting, you already know how to troubleshoot. 03:59:34.000 --> 03:59:37.000 Because it fades. 03:59:46.000 --> 03:59:49.000 Let me show you another comment. 03:59:52.000 --> 03:59:58.000 I want to send the edit comment so you want to take a look. 04:00:00.000 --> 04:00:08.000 But I'm going to connect to the multi-tool part. 04:00:10.000 --> 04:00:13.000 So this is... 04:00:20.000 --> 04:00:23.000 This is the... 04:00:30.000 --> 04:00:37.000 This is the way in which you access a container directly. 04:00:37.000 --> 04:00:44.000 So what I'm doing here is to open a shell terminal within the container. 04:00:44.000 --> 04:00:49.000 That is not possible with all the containers. 04:00:49.000 --> 04:00:53.000 But the majority allows you to do this. 04:00:53.000 --> 04:00:59.000 But the best practice is to not even allow this kind of stuff that I'm doing here. 04:00:59.000 --> 04:01:05.000 So I'm doing this just to show you the comments that are available. 04:01:05.000 --> 04:01:08.000 Like this. 04:01:08.000 --> 04:01:12.000 So there are a lot of comments. 04:01:14.000 --> 04:01:25.000 Let's create the service. 04:01:44.000 --> 04:01:56.000 Remember, every time that you create something, take a look at the logs to the events to see what happens. 04:01:56.000 --> 04:02:02.000 I haven't shown you how to see the logs for a pot. 04:02:02.000 --> 04:02:07.000 So I'll use it to do it. 04:02:42.000 --> 04:02:43.000 That's it. 04:02:43.000 --> 04:02:46.000 That's a super big line. 04:02:46.000 --> 04:02:50.000 And this big line... 04:02:50.000 --> 04:03:17.000 So while this comments here... 04:03:25.000 --> 04:03:31.000 If you have reached the cluster IP segment, let me show you. 04:03:31.000 --> 04:03:37.000 You may find an issue that is this one, the cluster IP. 04:03:37.000 --> 04:03:43.000 So whenever you find this kind of comments or examples, 04:03:43.000 --> 04:03:52.000 what you need to do first is to try the internal comment and see the outcome, the result. 04:03:52.000 --> 04:03:54.000 Obviously, this is too long. 04:03:54.000 --> 04:03:56.000 So I'm going to copy. 04:03:56.000 --> 04:04:07.000 But when you run this, it is supposed to show me the IP address, but it's showing the services. 04:04:07.000 --> 04:04:09.000 And let me explain why is that. 04:04:09.000 --> 04:04:17.000 And actually, it was on purpose because I wanted to show you something regarding the cluster. 04:04:17.000 --> 04:04:26.000 So what this is doing here is to execute a Qt-CTL get notes. 04:04:29.000 --> 04:04:34.000 But in this case, it is selecting with this option. 04:04:37.000 --> 04:04:42.000 The notes tag with the role master. 04:04:42.000 --> 04:04:47.000 So if I run this, it shows nothing. 04:04:47.000 --> 04:04:50.000 And that is because the role... 04:04:50.000 --> 04:04:53.000 And here you can see it. 04:04:53.000 --> 04:04:57.000 The role that is available here is control plane. 04:04:57.000 --> 04:05:08.000 So if I change this for control plane, it will show me a note. 04:05:08.000 --> 04:05:23.000 So that line that we are using here needs to be changed to 222 control plane. 04:05:40.000 --> 04:05:45.000 Oh, but it dumped a lot of stuff. Why? 04:05:54.000 --> 04:05:55.000 Okay. 04:05:55.000 --> 04:05:59.000 So it doesn't have the internal IP. 04:05:59.000 --> 04:06:05.000 I think it's because I'm using the backend for Calico. 04:06:05.000 --> 04:06:08.000 So perhaps the IP address change. 04:06:09.000 --> 04:06:18.000 However, we can find the IP address for other way. 04:06:18.000 --> 04:06:19.000 Let me see. Okay. 04:06:19.000 --> 04:06:22.000 It's IP before address. 04:06:28.000 --> 04:06:34.000 So what we are seeing here is the JSON object. 04:06:34.000 --> 04:06:47.000 And which is what the basic information or the raw information is saved in Kubernetes. 04:06:47.000 --> 04:06:54.000 So there is this JSON viewer online that allows you to... 04:06:54.000 --> 04:06:55.000 What happened? 04:06:55.000 --> 04:06:58.000 That allows you to see... 04:06:58.000 --> 04:07:01.000 That allows you to... 04:07:01.000 --> 04:07:03.000 To... 04:07:03.000 --> 04:07:04.000 To... 04:07:04.000 --> 04:07:08.000 To rectify the output. 04:07:08.000 --> 04:07:11.000 So you can understand what is in there. 04:07:11.000 --> 04:07:12.000 So this is huge. 04:07:12.000 --> 04:07:16.000 I mean, it's dumping a lot of stuff. 04:07:16.000 --> 04:07:19.000 Oops. 04:07:22.000 --> 04:07:28.000 So this is all the information. 04:07:28.000 --> 04:07:31.000 We are looking at the IP address. 04:07:31.000 --> 04:07:36.000 This happens also when there is a change in the API. 04:07:36.000 --> 04:07:41.000 So you need to deal with the JSON and try to find what you want. 04:07:41.000 --> 04:07:49.000 So I just want to find the key for the IP address that I saw it. 04:07:49.000 --> 04:07:50.000 Okay, it's here. 04:07:50.000 --> 04:07:53.000 Well, this is this one. 04:07:53.000 --> 04:08:01.000 Oh, it's internal IP, but it's way hidden between here. 04:08:01.000 --> 04:08:05.000 Spec interface, internal IP. 04:08:05.000 --> 04:08:08.000 It's not easy to find that key. 04:08:08.000 --> 04:08:13.000 So... 04:08:13.000 --> 04:08:21.000 Because this part changes from what we are seeing in this JSON. 04:08:21.000 --> 04:08:22.000 It's different. 04:08:22.000 --> 04:08:27.000 So interface... 04:08:27.000 --> 04:08:30.000 Interface address. 04:08:30.000 --> 04:08:36.000 So it will be easier to find it in a different way, which is... 04:08:36.000 --> 04:08:39.000 This is a local kernel, a local cluster. 04:08:39.000 --> 04:08:49.000 What we can do here is just to see in which node our pod is running. 04:08:49.000 --> 04:09:00.000 So in order to do that, what we can do is execute a describe on the node. 04:09:00.000 --> 04:09:10.000 So with Juke.cpl describe nodes, we need to... 04:09:10.000 --> 04:09:14.000 You can see which pods are running here. 04:09:14.000 --> 04:09:23.000 So... 04:09:23.000 --> 04:09:41.000 I will go see it too. 04:09:41.000 --> 04:09:53.000 I will see it here. 04:09:53.000 --> 04:09:55.000 Here is the swagger. 04:09:55.000 --> 04:09:59.000 Okay, it's here, the multi-tool in the second. 04:09:59.000 --> 04:10:08.000 So this has... 04:10:08.000 --> 04:10:10.000 This IP address. 04:10:10.000 --> 04:10:27.000 We can try this IP address. 04:10:27.000 --> 04:10:32.000 Or we can just take a look here to this cluster IP address as well. 04:10:32.000 --> 04:10:33.000 We can see that. 04:10:33.000 --> 04:10:42.000 We can try this one first here in the pod in the browser. 04:10:42.000 --> 04:10:44.000 Okay, yeah, we can see that. 04:10:44.000 --> 04:10:49.000 Because as we have this tunnel, this tunnel is giving us that access. 04:10:49.000 --> 04:10:51.000 So we can see that. 04:10:51.000 --> 04:10:58.000 So it will be easier to just get the service and use the IP address. 04:10:58.000 --> 04:11:09.000 Or try the node port address, the host address. 04:11:09.000 --> 04:11:36.000 So let me just give me just a second. 04:11:36.000 --> 04:11:40.000 So these will be the end. 04:12:11.000 --> 04:12:13.000 Okay, no, it's jumping directly. 04:12:13.000 --> 04:12:17.000 So this will be the only way to use it. 04:12:17.000 --> 04:12:19.000 Because it's not using this one. 04:12:19.000 --> 04:12:24.000 So this is just a basic example. 04:12:24.000 --> 04:12:29.000 Try the other one, the declarative. 04:12:29.000 --> 04:12:40.000 So in this case, we have the Enginx.yml file for the declarative one. 04:12:40.000 --> 04:12:41.000 Where is it? 04:12:41.000 --> 04:12:42.000 Yeah, this is one. 04:12:42.000 --> 04:12:49.000 In this case, there is the deployment. 04:12:49.000 --> 04:12:52.000 The deployment, the full deployment. 04:12:52.000 --> 04:13:02.000 So this deployment, this is the standard format for a deployment. 04:13:02.000 --> 04:13:08.000 And there is a few stuff here that is like mandatory. 04:13:08.000 --> 04:13:13.000 The API version, the kind of resource. 04:13:13.000 --> 04:13:25.000 This metadata, it's not mandatory, but it's useful because here is where you can label an application. 04:13:25.000 --> 04:13:27.000 You can define the namespace here. 04:13:27.000 --> 04:13:36.000 Please change that code we start to the one that is in the document, which is declarative. 04:13:36.000 --> 04:13:45.000 We need to create another namespace. 04:13:45.000 --> 04:13:56.000 And here in the spec, in the deployment, you can define the replicas, the number of replicas, 04:13:56.000 --> 04:14:02.000 which is the amount of parts that you will have in this deployment. 04:14:02.000 --> 04:14:04.000 In this case, it's one. 04:14:04.000 --> 04:14:20.000 So when you use that, you will create by default a replica set, which is the controller that is in charge of securing that there is this number of replicas running in your cluster. 04:14:20.000 --> 04:14:23.000 So this is important. 04:14:23.000 --> 04:14:27.000 And the other important is this containers part. 04:14:27.000 --> 04:14:30.000 So here is where you define the containers. 04:14:30.000 --> 04:14:33.000 You can have more than one container. 04:14:33.000 --> 04:14:35.000 Here. 04:14:35.000 --> 04:14:40.000 So those are like patterns for Kubernetes, different patterns available. 04:14:40.000 --> 04:14:44.000 But we are just covering the basic one, which is one container. 04:14:44.000 --> 04:14:52.000 So here you will have the image that you want to run and the port that you want to expose. 04:14:52.000 --> 04:15:00.000 So if you use this deployment, I'm going to do it here. 04:15:00.000 --> 04:15:08.000 So I'm going to create the namespace declarative, which is the one that we say. 04:15:08.000 --> 04:15:14.000 I'm going to move to that namespace. 04:15:14.000 --> 04:15:18.000 And see if I have since year, which is now. 04:15:18.000 --> 04:15:21.000 So let's deploy that. 04:15:21.000 --> 04:15:32.000 So here we are using the common apply, which is the which is the the the. 04:15:32.000 --> 04:15:36.000 The option to apply a manifest. 04:15:36.000 --> 04:15:38.000 And this works. 04:15:38.000 --> 04:15:47.000 I mean, whenever you apply a manifest, you will look for those resources to see if they are already there. 04:15:47.000 --> 04:15:53.000 If they are, it will try to update whenever whatever you have changed. 04:15:53.000 --> 04:15:59.000 If not, it will just create whatever you have defined in this. 04:15:59.000 --> 04:16:07.000 So in this case, we use the apply GEO dash file. 04:16:07.000 --> 04:16:19.000 And if you notice in the in the line of the lab, we are using the dash dash record equal to. 04:16:19.000 --> 04:16:36.000 So these record equal to is not I mean, it's depreciated, but we are using it here because this is a way to record the deployment in order to do a rollback. 04:16:36.000 --> 04:16:41.000 Well, it was the way to do a rollback to go back in a version. 04:16:41.000 --> 04:16:53.000 So these record creates a history of deployments, but that is now incorporated within within the deployment. 04:16:53.000 --> 04:16:57.000 So it's not needed. 04:16:57.000 --> 04:17:01.000 So if it's there, you can see the deployment. 04:17:01.000 --> 04:17:05.000 The deployment cubes, CPL. 04:17:05.000 --> 04:17:10.000 That deployments. 04:17:10.000 --> 04:17:13.000 And it will be running. 04:17:13.000 --> 04:17:17.000 As well, the QCTL. 04:17:17.000 --> 04:17:19.000 Services. 04:17:19.000 --> 04:17:21.000 We don't have any terms. 04:17:21.000 --> 04:17:28.000 The box. 04:17:28.000 --> 04:17:35.000 If you want to repeat these two with Docker coins, I'm going to do it here. 04:17:35.000 --> 04:17:43.000 What I will suggest is to create a namespace. 04:17:43.000 --> 04:17:52.000 So in this case, create a namespace called Docker coins. 04:17:52.000 --> 04:17:58.000 As we have in this case, we have. 04:17:58.000 --> 04:18:00.000 A manifest. 04:18:00.000 --> 04:18:01.000 A Jaml file. 04:18:01.000 --> 04:18:13.000 This manifest is way more complex than the one that we were working because this manifest have all the application. 04:18:13.000 --> 04:18:15.000 Embedded. 04:18:15.000 --> 04:18:17.000 This architecture. 04:18:17.000 --> 04:18:19.000 Is described it. 04:18:19.000 --> 04:18:21.000 Here in this manifest. 04:18:21.000 --> 04:18:27.000 So we are just going to deploy it later. 04:18:27.000 --> 04:18:32.000 We can explore in detail this manifest. 04:18:32.000 --> 04:18:36.000 But you just need to. 04:18:36.000 --> 04:18:38.000 Q events. 04:18:38.000 --> 04:18:40.000 Docker. 04:18:41.000 --> 04:18:45.000 We just want to deploy this. 04:18:45.000 --> 04:18:48.000 So apply. 04:18:48.000 --> 04:18:54.000 By Docker coins. 04:18:54.000 --> 04:19:04.000 And you can see that this creates the services already. 04:19:04.000 --> 04:19:06.000 So it's a little bit bigger. 04:19:06.000 --> 04:19:12.000 If you go to the dashboard, you will see a lot going on. 04:19:12.000 --> 04:19:14.000 Hopefully. 04:19:14.000 --> 04:19:16.000 So. 04:19:16.000 --> 04:19:24.000 So you should see all the deployments that are available. 04:19:24.000 --> 04:19:26.000 Some pending. 04:19:26.000 --> 04:19:27.000 Intended status. 04:19:27.000 --> 04:19:30.000 This is because. 04:19:30.000 --> 04:19:36.000 It may be facing an issue or it's just. 04:19:36.000 --> 04:19:38.000 Downloading. 04:19:38.000 --> 04:19:42.000 Pulling the image and deploying the image. 04:19:42.000 --> 04:19:45.000 So in this case, it was just that. 04:19:45.000 --> 04:19:50.000 But by now we do have or I have at least 22 bots. 04:19:50.000 --> 04:19:53.000 So we are 12 deployments. 04:19:53.000 --> 04:19:55.000 So we have almost double. 04:19:55.000 --> 04:19:57.000 The amount of. 04:19:57.000 --> 04:19:58.000 Of. 04:19:58.000 --> 04:20:00.000 That we started with. 04:20:00.000 --> 04:20:03.000 So it was as simple as that. 04:20:03.000 --> 04:20:05.000 So. 04:20:05.000 --> 04:20:08.000 Just wanted to show you that. 04:20:08.000 --> 04:20:19.000 I'm going to send the call so you can. 04:20:19.000 --> 04:20:24.000 That if you want to. 04:20:24.000 --> 04:20:27.000 And let's keep doing the services. 04:20:27.000 --> 04:20:31.000 Part. 04:20:31.000 --> 04:20:32.000 Yeah. 04:20:32.000 --> 04:20:34.000 Go find the web. 04:20:34.000 --> 04:20:35.000 The UI. 04:20:35.000 --> 04:20:37.000 I. 04:20:37.000 --> 04:20:44.000 If I take a look here in the dashboard, I can find the address. 04:20:44.000 --> 04:20:46.000 You need to. 04:20:46.000 --> 04:20:53.000 To dig a little bit, but it's here at services and the web UI. 04:21:17.000 --> 04:21:22.000 So it's running with four in my case, four hashes per second. 04:21:22.000 --> 04:21:23.000 So. 04:21:23.000 --> 04:21:26.000 Leave it like that in the meantime. 04:22:17.000 --> 04:22:21.000 You can open a terminal and see. 04:22:21.000 --> 04:22:24.000 From with K9S. 04:22:24.000 --> 04:22:26.000 What is. 04:22:26.000 --> 04:22:29.000 What is showing up so. 04:22:29.000 --> 04:22:33.000 That is cool as well. 04:22:33.000 --> 04:22:36.000 It helps. 04:22:36.000 --> 04:22:39.000 I mean, it's easier to navigate here. 04:22:39.000 --> 04:22:42.000 And we can change. 04:22:42.000 --> 04:22:44.000 Okay, with zero. 04:22:44.000 --> 04:22:47.000 You can see all the namespaces. 04:22:49.000 --> 04:22:52.000 And you can kill stuff and everything. 04:22:52.000 --> 04:22:54.000 So. 04:22:54.000 --> 04:22:57.000 Play around. 04:24:11.000 --> 04:24:12.000 Yeah. 04:24:32.000 --> 04:24:36.000 So in this case, in the. 04:24:36.000 --> 04:24:39.000 In the point number four. 04:24:39.000 --> 04:24:42.000 The step just before the service is correct. 04:24:42.000 --> 04:24:45.000 You can see. 04:24:45.000 --> 04:24:47.000 Or you can. 04:24:47.000 --> 04:24:50.000 Increase. 04:24:50.000 --> 04:24:53.000 Some replicas for the engines. 04:24:53.000 --> 04:24:56.000 So in order to do that. 04:24:56.000 --> 04:24:59.000 Or let me do it from the. 04:24:59.000 --> 04:25:00.000 From the. 04:25:00.000 --> 04:25:02.000 From here from the. 04:25:02.000 --> 04:25:05.000 We saw code. 04:25:05.000 --> 04:25:08.000 We saw code so I can change this replica. 04:25:08.000 --> 04:25:11.000 This line instead of one. 04:25:11.000 --> 04:25:14.000 I can say let's do three. 04:25:14.000 --> 04:25:17.000 I'm going to save that. 04:25:17.000 --> 04:25:20.000 And I apply that again. 04:25:20.000 --> 04:25:23.000 Doing that with the engine. So I mean the. 04:25:23.000 --> 04:25:26.000 In the imperative namespace. 04:25:26.000 --> 04:25:29.000 Just to show that. 04:25:29.000 --> 04:25:32.000 So where is it? 04:25:32.000 --> 04:25:35.000 So QCPL. 04:25:35.000 --> 04:25:38.000 Apply that. 04:25:38.000 --> 04:25:41.000 Engines. 04:25:41.000 --> 04:25:44.000 So if I do that. 04:25:44.000 --> 04:25:47.000 Here in the get pods watch. 04:25:47.000 --> 04:25:50.000 You will see that it kicks off. 04:25:50.000 --> 04:25:53.000 The launching of multiple pods. 04:25:53.000 --> 04:25:56.000 Because what we did with that. 04:25:56.000 --> 04:25:59.000 Line replica is to change this. 04:25:59.000 --> 04:26:02.000 Replicaset. 04:26:02.000 --> 04:26:05.000 So let me show you. 04:26:05.000 --> 04:26:08.000 If I run. 04:26:08.000 --> 04:26:11.000 QCPL. 04:26:11.000 --> 04:26:14.000 Get RS. 04:26:14.000 --> 04:26:17.000 It will show me that now we have three. 04:26:17.000 --> 04:26:20.000 Replicasets. If you do that. 04:26:20.000 --> 04:26:23.000 With the Docker coins. 04:26:23.000 --> 04:26:26.000 Deployment. You will see an increase. 04:26:26.000 --> 04:26:29.000 In the hash. 04:26:29.000 --> 04:26:32.000 In the hash output. 04:26:32.000 --> 04:26:35.000 But you will also see an increase in the number of pods. 04:26:35.000 --> 04:26:38.000 But in the case of the Docker coins. 04:26:38.000 --> 04:26:41.000 You need to think a little bit. 04:26:41.000 --> 04:26:44.000 What should I increase? 04:26:44.000 --> 04:26:47.000 I mean should I have more workers? 04:26:47.000 --> 04:26:50.000 Or more hashers? 04:26:50.000 --> 04:26:53.000 Or more random generators? 04:26:53.000 --> 04:26:56.000 So. 04:26:56.000 --> 04:26:59.000 This is where the software architecture. 04:26:59.000 --> 04:27:02.000 Enters the room. 04:27:02.000 --> 04:27:05.000 To discuss that part. 04:27:05.000 --> 04:27:08.000 If you are curious about the code. 04:27:08.000 --> 04:27:11.000 Everything. All the code is available. 04:27:11.000 --> 04:27:14.000 I mean from the labs. 04:27:14.000 --> 04:27:17.000 It's available. Let me show you here. 04:27:17.000 --> 04:27:20.000 There is this other folder. 04:27:20.000 --> 04:27:23.000 You will see that as well. 04:27:23.000 --> 04:27:26.000 It's the repo. The kit clone repo. 04:27:26.000 --> 04:27:29.000 Which is in the slides. 04:27:29.000 --> 04:27:32.000 There is a folder labs. 04:27:32.000 --> 04:27:35.000 That has every one of the labs. 04:27:35.000 --> 04:27:38.000 That we are running here. 04:27:38.000 --> 04:27:41.000 And actually some more labs. 04:27:41.000 --> 04:27:44.000 So you can check the code. 04:27:44.000 --> 04:27:47.000 The Docker coins comes from containment training. 04:27:47.000 --> 04:27:50.000 The code for these applications. 04:27:50.000 --> 04:27:53.000 So. 04:27:53.000 --> 04:27:56.000 For example the hasher is a Ruby application. 04:27:56.000 --> 04:27:59.000 So if you are curious about that. 04:27:59.000 --> 04:28:02.000 You can play with that as well. 04:28:21.000 --> 04:28:24.000 . 04:28:24.000 --> 04:28:27.000 . 04:28:27.000 --> 04:28:30.000 . 04:28:30.000 --> 04:28:33.000 . 04:28:33.000 --> 04:28:36.000 . 04:28:36.000 --> 04:28:39.000 . 04:28:39.000 --> 04:28:42.000 . 04:28:42.000 --> 04:28:45.000 . 04:28:45.000 --> 04:28:48.000 . 04:28:48.000 --> 04:28:51.000 . 04:28:51.000 --> 04:28:54.000 . 04:28:54.000 --> 04:28:57.000 . 04:28:57.000 --> 04:29:00.000 . 04:29:00.000 --> 04:29:03.000 . 04:29:03.000 --> 04:29:06.000 . 04:29:06.000 --> 04:29:09.000 . 04:29:09.000 --> 04:29:12.000 . 04:29:12.000 --> 04:29:15.000 . 04:29:15.000 --> 04:29:18.000 . 04:29:18.000 --> 04:29:21.000 . 04:29:21.000 --> 04:29:24.000 . 04:29:24.000 --> 04:29:27.000 . 04:29:27.000 --> 04:29:30.000 . 04:29:30.000 --> 04:29:33.000 . 04:29:33.000 --> 04:29:36.000 . 04:29:36.000 --> 04:29:39.000 . 04:29:39.000 --> 04:29:42.000 . 04:29:42.000 --> 04:29:45.000 . 04:29:45.000 --> 04:29:48.000 . 04:29:48.000 --> 04:29:51.000 . 04:29:51.000 --> 04:29:54.000 . 04:29:54.000 --> 04:29:57.000 . 04:29:57.000 --> 04:30:00.000 . 04:30:00.000 --> 04:30:03.000 . 04:30:03.000 --> 04:30:06.000 . 04:30:06.000 --> 04:30:09.000 . 04:30:09.000 --> 04:30:12.000 . 04:30:12.000 --> 04:30:15.000 . 04:30:15.000 --> 04:30:18.000 . 04:30:18.000 --> 04:30:21.000 . 04:30:21.000 --> 04:30:24.000 . 04:30:24.000 --> 04:30:27.000 . 04:30:27.000 --> 04:30:30.000 . 04:30:30.000 --> 04:30:33.000 . 04:30:33.000 --> 04:30:36.000 . 04:30:36.000 --> 04:30:39.000 . 04:30:39.000 --> 04:30:42.000 . 04:30:42.000 --> 04:30:45.000 . 04:30:45.000 --> 04:30:48.000 . 04:30:48.000 --> 04:30:51.000 . 04:30:51.000 --> 04:30:54.000 . 04:30:54.000 --> 04:30:57.000 . 04:30:57.000 --> 04:31:00.000 . 04:31:00.000 --> 04:31:03.000 . 04:31:03.000 --> 04:31:06.000 . 04:31:06.000 --> 04:31:09.000 . 04:31:09.000 --> 04:31:12.000 . 04:31:12.000 --> 04:31:15.000 . 04:31:15.000 --> 04:31:18.000 . 04:31:18.000 --> 04:31:21.000 . 04:31:21.000 --> 04:31:24.000 . 04:31:24.000 --> 04:31:27.000 . 04:31:27.000 --> 04:31:30.000 . 04:31:30.000 --> 04:31:33.000 . 04:31:33.000 --> 04:31:36.000 . 04:31:36.000 --> 04:31:39.000 . 04:31:39.000 --> 04:31:42.000 . 04:31:42.000 --> 04:31:45.000 . 04:31:45.000 --> 04:31:48.000 . 04:31:48.000 --> 04:31:51.000 . 04:31:51.000 --> 04:31:54.000 . 04:31:54.000 --> 04:31:57.000 . 04:31:57.000 --> 04:32:00.000 . 04:32:00.000 --> 04:32:03.000 . 04:32:03.000 --> 04:32:06.000 . 04:32:06.000 --> 04:32:09.000 . 04:32:09.000 --> 04:32:12.000 . 04:32:12.000 --> 04:32:15.000 . 04:32:15.000 --> 04:32:18.000 . 04:32:18.000 --> 04:32:21.000 . 04:32:21.000 --> 04:32:24.000 . 04:32:24.000 --> 04:32:27.000 . 04:32:27.000 --> 04:32:30.000 . 04:32:30.000 --> 04:32:33.000 . 04:32:33.000 --> 04:32:36.000 . 04:32:36.000 --> 04:32:39.000 . 04:32:39.000 --> 04:32:42.000 . 04:32:42.000 --> 04:32:45.000 . 04:32:45.000 --> 04:32:48.000 . 04:32:58.000 --> 04:33:01.000 . 04:33:01.000 --> 04:33:04.000 . 04:33:04.000 --> 04:33:07.000 . 04:33:07.000 --> 04:33:10.000 . 04:33:10.000 --> 04:33:13.000 . 04:33:13.000 --> 04:33:16.000 . 04:33:16.000 --> 04:33:19.000 . 04:33:19.000 --> 04:33:22.000 . 04:33:22.000 --> 04:33:25.000 . 04:33:25.000 --> 04:33:28.000 . 04:33:28.000 --> 04:33:31.000 . 04:33:31.000 --> 04:33:34.000 . 04:33:34.000 --> 04:33:37.000 . 04:33:37.000 --> 04:33:40.000 . 04:33:40.000 --> 04:33:43.000 . 04:33:43.000 --> 04:33:46.000 . 04:33:46.000 --> 04:33:49.000 . 04:33:49.000 --> 04:33:52.000 . 04:33:52.000 --> 04:33:55.000 . 04:33:55.000 --> 04:33:58.000 . 04:33:58.000 --> 04:34:01.000 . 04:34:01.000 --> 04:34:04.000 . 04:34:04.000 --> 04:34:07.000 . 04:34:07.000 --> 04:34:10.000 . 04:34:10.000 --> 04:34:13.000 . 04:34:13.000 --> 04:34:16.000 . 04:34:16.000 --> 04:34:19.000 . 04:34:19.000 --> 04:34:22.000 . 04:34:22.000 --> 04:34:25.000 . 04:34:25.000 --> 04:34:28.000 . 04:34:28.000 --> 04:34:31.000 . 04:34:31.000 --> 04:34:34.000 . 04:34:34.000 --> 04:34:37.000 . 04:34:37.000 --> 04:34:40.000 . 04:34:40.000 --> 04:34:43.000 . 04:34:43.000 --> 04:34:46.000 . 04:34:46.000 --> 04:34:49.000 . 04:34:49.000 --> 04:34:52.000 . 04:34:52.000 --> 04:34:55.000 . 04:34:55.000 --> 04:34:58.000 . 04:34:58.000 --> 04:35:01.000 . 04:35:01.000 --> 04:35:04.000 . 04:35:04.000 --> 04:35:07.000 . 04:35:07.000 --> 04:35:10.000 . 04:35:10.000 --> 04:35:13.000 . 04:35:13.000 --> 04:35:16.000 . 04:35:16.000 --> 04:35:19.000 . 04:35:19.000 --> 04:35:22.000 . 04:35:22.000 --> 04:35:25.000 . 04:35:25.000 --> 04:35:28.000 . 04:35:28.000 --> 04:35:31.000 . 04:35:31.000 --> 04:35:34.000 . 04:35:34.000 --> 04:35:37.000 . 04:35:37.000 --> 04:35:40.000 . 04:35:40.000 --> 04:35:43.000 . 04:35:43.000 --> 04:35:46.000 . 04:35:46.000 --> 04:35:49.000 . 04:35:49.000 --> 04:35:52.000 . 04:35:52.000 --> 04:35:55.000 . 04:35:55.000 --> 04:35:58.000 . 04:35:58.000 --> 04:36:01.000 . 04:36:01.000 --> 04:36:04.000 . 04:36:04.000 --> 04:36:07.000 . 04:36:07.000 --> 04:36:10.000 . 04:36:10.000 --> 04:36:13.000 . 04:36:13.000 --> 04:36:16.000 . 04:36:16.000 --> 04:36:19.000 . 04:36:19.000 --> 04:36:22.000 . 04:36:22.000 --> 04:36:25.000 . 04:36:49.000 --> 04:36:52.000 . 04:36:52.000 --> 04:36:55.000 . 04:36:55.000 --> 04:36:58.000 . 04:36:58.000 --> 04:37:01.000 . 04:37:01.000 --> 04:37:04.000 . 04:37:04.000 --> 04:37:07.000 . 04:37:07.000 --> 04:37:10.000 . 04:37:10.000 --> 04:37:13.000 . 04:37:13.000 --> 04:37:16.000 . 04:37:16.000 --> 04:37:19.000 . 04:37:19.000 --> 04:37:22.000 . 04:37:22.000 --> 04:37:25.000 . 04:37:25.000 --> 04:37:28.000 . 04:37:28.000 --> 04:37:31.000 . 04:37:31.000 --> 04:37:34.000 . 04:37:34.000 --> 04:37:37.000 . 04:37:37.000 --> 04:37:40.000 . 04:37:40.000 --> 04:37:43.000 . 04:37:43.000 --> 04:37:46.000 . 04:37:46.000 --> 04:37:49.000 . 04:37:49.000 --> 04:37:52.000 . 04:37:52.000 --> 04:37:55.000 . 04:37:55.000 --> 04:37:58.000 . 04:37:58.000 --> 04:38:01.000 . 04:38:01.000 --> 04:38:04.000 . 04:38:04.000 --> 04:38:07.000 . 04:38:07.000 --> 04:38:10.000 . 04:38:10.000 --> 04:38:13.000 . 04:38:13.000 --> 04:38:16.000 . 04:38:16.000 --> 04:38:19.000 . 04:38:19.000 --> 04:38:22.000 . 04:38:22.000 --> 04:38:25.000 . 04:38:25.000 --> 04:38:28.000 . 04:38:28.000 --> 04:38:31.000 . 04:38:31.000 --> 04:38:34.000 . 04:38:34.000 --> 04:38:37.000 . 04:38:37.000 --> 04:38:40.000 . 04:38:40.000 --> 04:38:43.000 . 04:38:43.000 --> 04:38:46.000 . 04:38:46.000 --> 04:38:49.000 . 04:38:49.000 --> 04:38:52.000 . 04:38:52.000 --> 04:38:55.000 . 04:38:55.000 --> 04:38:58.000 . 04:38:58.000 --> 04:39:01.000 . 04:39:01.000 --> 04:39:04.000 . 04:39:04.000 --> 04:39:07.000 . 04:39:07.000 --> 04:39:10.000 . 04:39:10.000 --> 04:39:13.000 . 04:39:13.000 --> 04:39:16.000 . 04:39:16.000 --> 04:39:19.000 . 04:39:19.000 --> 04:39:22.000 . 04:39:22.000 --> 04:39:25.000 . 04:39:25.000 --> 04:39:28.000 . 04:39:28.000 --> 04:39:31.000 . 04:39:31.000 --> 04:39:34.000 . 04:39:34.000 --> 04:39:37.000 . 04:39:37.000 --> 04:39:40.000 . 04:39:40.000 --> 04:39:43.000 . 04:39:43.000 --> 04:39:46.000 . 04:39:46.000 --> 04:39:49.000 . 04:39:49.000 --> 04:39:52.000 . 04:39:52.000 --> 04:39:55.000 . 04:39:55.000 --> 04:39:58.000 . 04:39:58.000 --> 04:40:01.000 . 04:40:01.000 --> 04:40:04.000 . 04:40:04.000 --> 04:40:07.000 . 04:40:07.000 --> 04:40:10.000 . 04:40:10.000 --> 04:40:13.000 . 04:40:13.000 --> 04:40:16.000 . 04:40:16.000 --> 04:40:19.000 . 04:40:19.000 --> 04:40:22.000 . 04:40:22.000 --> 04:40:25.000 . 04:40:25.000 --> 04:40:28.000 . 04:40:28.000 --> 04:40:31.000 . 04:40:31.000 --> 04:40:34.000 . 04:40:34.000 --> 04:40:37.000 . 04:40:37.000 --> 04:40:40.000 . 04:40:40.000 --> 04:40:43.000 . 04:40:43.000 --> 04:40:46.000 . 04:40:46.000 --> 04:40:49.000 . 04:40:49.000 --> 04:40:52.000 . 04:40:52.000 --> 04:40:55.000 . 04:40:55.000 --> 04:40:58.000 . 04:40:58.000 --> 04:41:01.000 . 04:41:01.000 --> 04:41:04.000 . 04:41:04.000 --> 04:41:07.000 . 04:41:07.000 --> 04:41:10.000 . 04:41:10.000 --> 04:41:13.000 . 04:41:13.000 --> 04:41:16.000 . 04:41:16.000 --> 04:41:19.000 . 04:41:19.000 --> 04:41:22.000 . 04:41:22.000 --> 04:41:25.000 . 04:41:25.000 --> 04:41:28.000 . 04:41:28.000 --> 04:41:31.000 . 04:41:31.000 --> 04:41:34.000 . 04:41:34.000 --> 04:41:37.000 . 04:41:37.000 --> 04:41:40.000 . 04:41:40.000 --> 04:41:43.000 . 04:41:43.000 --> 04:41:46.000 . 04:41:46.000 --> 04:41:49.000 . 04:41:49.000 --> 04:41:52.000 . 04:41:52.000 --> 04:41:55.000 . 04:41:55.000 --> 04:41:58.000 . 04:41:58.000 --> 04:42:01.000 . 04:42:01.000 --> 04:42:04.000 . 04:42:04.000 --> 04:42:07.000 . 04:42:07.000 --> 04:42:10.000 . 04:42:10.000 --> 04:42:13.000 . 04:42:13.000 --> 04:42:16.000 . 04:42:16.000 --> 04:42:19.000 . 04:42:19.000 --> 04:42:22.000 . 04:42:22.000 --> 04:42:25.000 . 04:42:25.000 --> 04:42:28.000 . 04:42:28.000 --> 04:42:31.000 . 04:42:31.000 --> 04:42:34.000 . 04:42:34.000 --> 04:42:37.000 . 04:42:37.000 --> 04:42:40.000 . 04:42:40.000 --> 04:42:43.000 . 04:42:43.000 --> 04:42:46.000 . 04:42:46.000 --> 04:42:49.000 . 04:42:49.000 --> 04:42:52.000 . 04:42:52.000 --> 04:42:55.000 . 04:42:55.000 --> 04:42:58.000 . 04:42:58.000 --> 04:43:01.000 . 04:43:01.000 --> 04:43:04.000 . 04:43:04.000 --> 04:43:07.000 . 04:43:07.000 --> 04:43:10.000 . 04:43:10.000 --> 04:43:13.000 . 04:43:13.000 --> 04:43:16.000 . 04:43:16.000 --> 04:43:19.000 . 04:43:19.000 --> 04:43:22.000 . 04:43:22.000 --> 04:43:25.000 . 04:43:25.000 --> 04:43:28.000 . 04:43:28.000 --> 04:43:31.000 . 04:43:31.000 --> 04:43:34.000 . 04:43:34.000 --> 04:43:37.000 . 04:43:37.000 --> 04:43:40.000 . 04:43:40.000 --> 04:43:43.000 . 04:43:43.000 --> 04:43:46.000 . 04:43:46.000 --> 04:43:49.000 . 04:43:49.000 --> 04:43:52.000 . 04:43:52.000 --> 04:43:55.000 . 04:43:55.000 --> 04:43:58.000 . 04:43:58.000 --> 04:44:01.000 . 04:44:01.000 --> 04:44:04.000 . 04:44:04.000 --> 04:44:07.000 . 04:44:07.000 --> 04:44:10.000 . 04:44:10.000 --> 04:44:13.000 . 04:44:13.000 --> 04:44:16.000 . 04:44:16.000 --> 04:44:19.000 . 04:44:19.000 --> 04:44:22.000 . 04:44:22.000 --> 04:44:25.000 . 04:44:25.000 --> 04:44:28.000 . 04:44:28.000 --> 04:44:31.000 . 04:44:31.000 --> 04:44:34.000 . 04:44:34.000 --> 04:44:37.000 . 04:44:37.000 --> 04:44:40.000 . 04:44:40.000 --> 04:44:43.000 . 04:44:43.000 --> 04:44:46.000 . 04:44:46.000 --> 04:44:49.000 . 04:44:49.000 --> 04:44:52.000 . 04:44:52.000 --> 04:44:55.000 . 04:44:55.000 --> 04:44:58.000 . 04:44:58.000 --> 04:45:01.000 . 04:45:01.000 --> 04:45:04.000 . 04:45:04.000 --> 04:45:07.000 . 04:45:07.000 --> 04:45:10.000 . 04:45:10.000 --> 04:45:13.000 . 04:45:13.000 --> 04:45:16.000 . 04:45:16.000 --> 04:45:19.000 . 04:45:19.000 --> 04:45:22.000 . 04:45:22.000 --> 04:45:25.000 . 04:45:25.000 --> 04:45:28.000 . 04:45:28.000 --> 04:45:31.000 . 04:45:31.000 --> 04:45:34.000 . 04:45:34.000 --> 04:45:37.000 . 04:45:37.000 --> 04:45:40.000 . 04:45:40.000 --> 04:45:43.000 . 04:45:43.000 --> 04:45:46.000 . 04:45:46.000 --> 04:45:49.000 . 04:45:49.000 --> 04:45:52.000 . 04:45:52.000 --> 04:45:55.000 . 04:45:55.000 --> 04:45:58.000 . 04:45:58.000 --> 04:46:01.000 . 04:46:01.000 --> 04:46:04.000 . 04:46:04.000 --> 04:46:07.000 . 04:46:07.000 --> 04:46:10.000 . 04:46:10.000 --> 04:46:13.000 . 04:46:13.000 --> 04:46:16.000 . 04:46:16.000 --> 04:46:19.000 . 04:46:19.000 --> 04:46:22.000 . 04:46:22.000 --> 04:46:25.000 . 04:46:25.000 --> 04:46:28.000 . 04:46:28.000 --> 04:46:31.000 . 04:46:31.000 --> 04:46:34.000 . 04:46:34.000 --> 04:46:37.000 . 04:46:37.000 --> 04:46:40.000 . 04:46:40.000 --> 04:46:43.000 . 04:46:43.000 --> 04:46:46.000 . 04:46:46.000 --> 04:46:49.000 . 04:46:49.000 --> 04:46:52.000 . 04:46:52.000 --> 04:46:55.000 . 04:46:55.000 --> 04:46:58.000 . 04:46:58.000 --> 04:47:01.000 . 04:47:01.000 --> 04:47:04.000 . 04:47:04.000 --> 04:47:07.000 . 04:47:07.000 --> 04:47:10.000 . 04:47:10.000 --> 04:47:13.000 . 04:47:13.000 --> 04:47:16.000 . 04:47:16.000 --> 04:47:19.000 . 04:47:19.000 --> 04:47:22.000 . 04:47:22.000 --> 04:47:25.000 . 04:47:25.000 --> 04:47:28.000 . 04:47:28.000 --> 04:47:31.000 . 04:47:31.000 --> 04:47:34.000 . 04:47:34.000 --> 04:47:37.000 . 04:47:37.000 --> 04:47:40.000 . 04:47:40.000 --> 04:47:43.000 . 04:47:43.000 --> 04:47:46.000 . 04:47:46.000 --> 04:47:49.000 . 04:47:49.000 --> 04:47:52.000 . 04:47:52.000 --> 04:47:55.000 . 04:47:55.000 --> 04:47:58.000 . 04:47:58.000 --> 04:48:01.000 . 04:48:01.000 --> 04:48:04.000 . 04:48:04.000 --> 04:48:07.000 . 04:48:07.000 --> 04:48:10.000 . 04:48:10.000 --> 04:48:13.000 . 04:48:13.000 --> 04:48:16.000 . 04:48:16.000 --> 04:48:19.000 . 04:48:19.000 --> 04:48:22.000 . 04:48:22.000 --> 04:48:25.000 . 04:48:25.000 --> 04:48:28.000 . 04:48:28.000 --> 04:48:31.000 . 04:48:31.000 --> 04:48:34.000 . 04:48:34.000 --> 04:48:37.000 . 04:48:37.000 --> 04:48:40.000 . 04:48:40.000 --> 04:48:43.000 . 04:48:43.000 --> 04:48:46.000 . 04:48:46.000 --> 04:48:49.000 . 04:48:49.000 --> 04:48:52.000 . 04:48:52.000 --> 04:48:55.000 . 04:48:55.000 --> 04:48:58.000 . 04:48:58.000 --> 04:49:01.000 . 04:49:01.000 --> 04:49:04.000 . 04:49:04.000 --> 04:49:07.000 . 04:49:07.000 --> 04:49:10.000 . 04:49:10.000 --> 04:49:13.000 . 04:49:13.000 --> 04:49:16.000 . 04:49:16.000 --> 04:49:19.000 . 04:49:19.000 --> 04:49:22.000 . 04:49:22.000 --> 04:49:25.000 . 04:49:25.000 --> 04:49:28.000 . 04:49:28.000 --> 04:49:31.000 . 04:49:31.000 --> 04:49:34.000 . 04:49:34.000 --> 04:49:37.000 . 04:49:37.000 --> 04:49:40.000 . 04:49:40.000 --> 04:49:43.000 . 04:49:43.000 --> 04:49:46.000 . 04:49:46.000 --> 04:49:49.000 . 04:49:49.000 --> 04:49:52.000 . 04:49:52.000 --> 04:49:55.000 . 04:49:55.000 --> 04:49:58.000 . 04:49:58.000 --> 04:50:01.000 . 04:50:01.000 --> 04:50:04.000 . 04:50:04.000 --> 04:50:07.000 . 04:50:07.000 --> 04:50:10.000 . 04:50:10.000 --> 04:50:13.000 . 04:50:13.000 --> 04:50:16.000 . 04:50:16.000 --> 04:50:19.000 . 04:50:19.000 --> 04:50:22.000 . 04:50:22.000 --> 04:50:25.000 . 04:50:25.000 --> 04:50:28.000 . 04:50:28.000 --> 04:50:31.000 . 04:50:31.000 --> 04:50:34.000 . 04:50:34.000 --> 04:50:37.000 . 04:50:37.000 --> 04:50:40.000 . 04:50:40.000 --> 04:50:43.000 . 04:50:43.000 --> 04:50:46.000 . 04:50:46.000 --> 04:50:49.000 . 04:50:49.000 --> 04:50:52.000 . 04:50:52.000 --> 04:50:55.000 . 04:50:55.000 --> 04:50:58.000 . 04:50:58.000 --> 04:51:01.000 . 04:51:01.000 --> 04:51:04.000 . 04:51:04.000 --> 04:51:07.000 . 04:51:07.000 --> 04:51:10.000 . 04:51:10.000 --> 04:51:13.000 . 04:51:13.000 --> 04:51:16.000 . 04:51:16.000 --> 04:51:19.000 . 04:51:19.000 --> 04:51:22.000 . 04:51:22.000 --> 04:51:25.000 . 04:51:25.000 --> 04:51:28.000 . 04:51:28.000 --> 04:51:31.000 . 04:51:31.000 --> 04:51:34.000 . 04:51:34.000 --> 04:51:37.000 . 04:51:37.000 --> 04:51:40.000 . 04:51:40.000 --> 04:51:43.000 . 04:51:43.000 --> 04:51:46.000 . 04:51:46.000 --> 04:51:49.000 . 04:51:49.000 --> 04:51:52.000 . 04:51:52.000 --> 04:51:55.000 . 04:51:55.000 --> 04:51:58.000 . 04:51:58.000 --> 04:52:01.000 . 04:52:01.000 --> 04:52:04.000 . 04:52:04.000 --> 04:52:07.000 . 04:52:07.000 --> 04:52:10.000 . 04:52:10.000 --> 04:52:13.000 . 04:52:13.000 --> 04:52:16.000 . 04:52:16.000 --> 04:52:19.000 . 04:52:19.000 --> 04:52:22.000 . 04:52:22.000 --> 04:52:25.000 . 04:52:25.000 --> 04:52:28.000 . 04:52:28.000 --> 04:52:31.000 . 04:52:31.000 --> 04:52:34.000 . 04:52:34.000 --> 04:52:37.000 . 04:52:37.000 --> 04:52:40.000 . 04:52:40.000 --> 04:52:43.000 . 04:52:43.000 --> 04:52:46.000 . 04:52:46.000 --> 04:52:49.000 . 04:52:49.000 --> 04:52:52.000 . 04:52:52.000 --> 04:52:55.000 . 04:52:55.000 --> 04:52:58.000 . 04:52:58.000 --> 04:53:01.000 . 04:53:01.000 --> 04:53:04.000 . 04:53:04.000 --> 04:53:07.000 . 04:53:07.000 --> 04:53:10.000 . 04:53:10.000 --> 04:53:13.000 . 04:53:13.000 --> 04:53:16.000 . 04:53:16.000 --> 04:53:19.000 . 04:53:19.000 --> 04:53:22.000 . 04:53:22.000 --> 04:53:25.000 . 04:53:25.000 --> 04:53:28.000 . 04:53:28.000 --> 04:53:31.000 . 04:53:31.000 --> 04:53:34.000 . 04:53:34.000 --> 04:53:37.000 . 04:53:37.000 --> 04:53:40.000 . 04:53:40.000 --> 04:53:43.000 . 04:53:43.000 --> 04:53:46.000 . 04:53:46.000 --> 04:53:49.000 . 04:53:49.000 --> 04:53:52.000 . 04:53:52.000 --> 04:53:55.000 . 04:53:55.000 --> 04:53:58.000 . 04:53:58.000 --> 04:54:01.000 . 04:54:01.000 --> 04:54:04.000 . 04:54:04.000 --> 04:54:07.000 . 04:54:07.000 --> 04:54:10.000 . 04:54:10.000 --> 04:54:13.000 . 04:54:13.000 --> 04:54:16.000 . 04:54:16.000 --> 04:54:19.000 . 04:54:19.000 --> 04:54:22.000 . 04:54:22.000 --> 04:54:25.000 . 04:54:25.000 --> 04:54:28.000 . 04:54:28.000 --> 04:54:31.000 . 04:54:31.000 --> 04:54:34.000 . 04:54:34.000 --> 04:54:37.000 . 04:54:37.000 --> 04:54:40.000 . 04:54:40.000 --> 04:54:43.000 . 04:54:43.000 --> 04:54:46.000 . 04:54:46.000 --> 04:54:49.000 . 04:54:49.000 --> 04:54:52.000 . 04:54:52.000 --> 04:54:55.000 . 04:54:55.000 --> 04:54:58.000 . 04:54:58.000 --> 04:55:01.000 . 04:55:01.000 --> 04:55:04.000 . 04:55:04.000 --> 04:55:07.000 . 04:55:07.000 --> 04:55:10.000 . 04:55:10.000 --> 04:55:13.000 . 04:55:13.000 --> 04:55:16.000 . 04:55:16.000 --> 04:55:19.000 . 04:55:19.000 --> 04:55:22.000 . 04:55:22.000 --> 04:55:25.000 . 04:55:25.000 --> 04:55:28.000 . 04:55:28.000 --> 04:55:31.000 . 04:55:31.000 --> 04:55:34.000 . 04:55:34.000 --> 04:55:37.000 . 04:55:37.000 --> 04:55:40.000 . 04:55:40.000 --> 04:55:43.000 . 04:55:43.000 --> 04:55:46.000 . 04:55:46.000 --> 04:55:49.000 . 04:55:49.000 --> 04:55:52.000 . 04:55:52.000 --> 04:55:55.000 . 04:55:55.000 --> 04:55:58.000 . 04:55:58.000 --> 04:56:01.000 . 04:56:01.000 --> 04:56:04.000 . 04:56:04.000 --> 04:56:07.000 . 04:56:07.000 --> 04:56:10.000 . 04:56:10.000 --> 04:56:13.000 . 04:56:13.000 --> 04:56:16.000 . 04:56:16.000 --> 04:56:19.000 . 04:56:19.000 --> 04:56:22.000 . 04:56:22.000 --> 04:56:25.000 . 04:56:25.000 --> 04:56:28.000 . 04:56:28.000 --> 04:56:31.000 . 04:56:31.000 --> 04:56:34.000 . 04:56:34.000 --> 04:56:37.000 . 04:56:37.000 --> 04:56:40.000 . 04:56:40.000 --> 04:56:43.000 . 04:56:43.000 --> 04:56:46.000 . 04:56:46.000 --> 04:56:49.000 . 04:56:49.000 --> 04:56:52.000 . 04:56:52.000 --> 04:56:55.000 . 04:56:55.000 --> 04:56:58.000 . 04:56:58.000 --> 04:57:01.000 . 04:57:01.000 --> 04:57:04.000 . 04:57:04.000 --> 04:57:07.000 . 04:57:07.000 --> 04:57:10.000 . 04:57:10.000 --> 04:57:13.000 . 04:57:13.000 --> 04:57:16.000 . 04:57:16.000 --> 04:57:19.000 . 04:57:19.000 --> 04:57:22.000 . 04:57:22.000 --> 04:57:25.000 . 04:57:25.000 --> 04:57:28.000 . 04:57:28.000 --> 04:57:31.000 . 04:57:31.000 --> 04:57:34.000 . 04:57:34.000 --> 04:57:37.000 . 04:57:37.000 --> 04:57:40.000 . 04:57:40.000 --> 04:57:43.000 . 04:57:43.000 --> 04:57:46.000 . 04:57:46.000 --> 04:57:49.000 . 04:57:49.000 --> 04:57:52.000 . 04:57:52.000 --> 04:57:55.000 . 04:57:55.000 --> 04:57:58.000 . 04:57:58.000 --> 04:58:01.000 . 04:58:01.000 --> 04:58:04.000 . 04:58:04.000 --> 04:58:07.000 . 04:58:07.000 --> 04:58:10.000 . 04:58:10.000 --> 04:58:13.000 . 04:58:13.000 --> 04:58:16.000 . 04:58:16.000 --> 04:58:19.000 . 04:58:19.000 --> 04:58:22.000 . 04:58:22.000 --> 04:58:25.000 . 04:58:25.000 --> 04:58:28.000 . 04:58:28.000 --> 04:58:31.000 . 04:58:31.000 --> 04:58:34.000 . 04:58:34.000 --> 04:58:37.000 . 04:58:37.000 --> 04:58:40.000 . 04:58:40.000 --> 04:58:43.000 . 04:58:43.000 --> 04:58:46.000 . 04:58:46.000 --> 04:58:49.000 . 04:58:49.000 --> 04:58:52.000 . 04:58:52.000 --> 04:58:55.000 . 04:58:55.000 --> 04:58:58.000 . 04:58:58.000 --> 04:59:01.000 . 04:59:01.000 --> 04:59:04.000 . 04:59:04.000 --> 04:59:07.000 . 04:59:07.000 --> 04:59:10.000 . 04:59:10.000 --> 04:59:13.000 . 04:59:13.000 --> 04:59:16.000 . 04:59:16.000 --> 04:59:19.000 . 04:59:19.000 --> 04:59:22.000 . 04:59:22.000 --> 04:59:25.000 . 04:59:25.000 --> 04:59:28.000 . 04:59:28.000 --> 04:59:31.000 . 04:59:31.000 --> 04:59:34.000 . 04:59:34.000 --> 04:59:37.000 . 04:59:37.000 --> 04:59:40.000 . 04:59:40.000 --> 04:59:43.000 . 04:59:43.000 --> 04:59:46.000 . 04:59:46.000 --> 04:59:49.000 . 04:59:49.000 --> 04:59:52.000 . 04:59:52.000 --> 04:59:55.000 . 04:59:55.000 --> 04:59:58.000 . 04:59:58.000 --> 05:00:01.000 . 05:00:01.000 --> 05:00:04.000 . 05:00:04.000 --> 05:00:07.000 . 05:00:07.000 --> 05:00:10.000 . 05:00:10.000 --> 05:00:13.000 . 05:00:13.000 --> 05:00:16.000 . 05:00:16.000 --> 05:00:19.000 . 05:00:19.000 --> 05:00:22.000 . 05:00:22.000 --> 05:00:25.000 . 05:00:25.000 --> 05:00:28.000 . 05:00:28.000 --> 05:00:31.000 . 05:00:31.000 --> 05:00:34.000 . 05:00:34.000 --> 05:00:37.000 . 05:00:37.000 --> 05:00:40.000 . 05:00:40.000 --> 05:00:43.000 . 05:00:43.000 --> 05:00:46.000 . 05:00:46.000 --> 05:00:49.000 . 05:00:49.000 --> 05:00:52.000 . 05:00:52.000 --> 05:00:55.000 . 05:00:55.000 --> 05:00:58.000 . 05:00:58.000 --> 05:01:01.000 . 05:01:01.000 --> 05:01:04.000 . 05:01:04.000 --> 05:01:07.000 . 05:01:07.000 --> 05:01:10.000 . 05:01:10.000 --> 05:01:13.000 . 05:01:13.000 --> 05:01:16.000 . 05:01:16.000 --> 05:01:19.000 . 05:01:19.000 --> 05:01:22.000 . 05:01:22.000 --> 05:01:25.000 . 05:01:25.000 --> 05:01:28.000 . 05:01:28.000 --> 05:01:31.000 . 05:01:31.000 --> 05:01:34.000 . 05:01:34.000 --> 05:01:37.000 . 05:01:37.000 --> 05:01:40.000 . 05:01:40.000 --> 05:01:43.000 . 05:01:43.000 --> 05:01:46.000 . 05:01:46.000 --> 05:01:49.000 . 05:01:49.000 --> 05:01:52.000 . 05:01:52.000 --> 05:01:55.000 . 05:01:55.000 --> 05:01:58.000 . 05:01:58.000 --> 05:02:01.000 . 05:02:01.000 --> 05:02:04.000 . 05:02:04.000 --> 05:02:07.000 . 05:02:07.000 --> 05:02:10.000 . 05:02:10.000 --> 05:02:13.000 . 05:02:13.000 --> 05:02:16.000 . 05:02:16.000 --> 05:02:19.000 . 05:02:19.000 --> 05:02:22.000 . 05:02:22.000 --> 05:02:25.000 . 05:02:25.000 --> 05:02:28.000 . 05:02:28.000 --> 05:02:31.000 . 05:02:31.000 --> 05:02:34.000 . 05:02:34.000 --> 05:02:37.000 . 05:02:37.000 --> 05:02:40.000 . 05:02:40.000 --> 05:02:43.000 . 05:02:43.000 --> 05:02:46.000 . 05:02:46.000 --> 05:02:49.000 . 05:02:49.000 --> 05:02:52.000 . 05:02:52.000 --> 05:02:55.000 . 05:02:55.000 --> 05:02:58.000 . 05:02:58.000 --> 05:03:01.000 . 05:03:01.000 --> 05:03:04.000 . 05:03:04.000 --> 05:03:07.000 . 05:03:07.000 --> 05:03:10.000 . 05:03:10.000 --> 05:03:13.000 . 05:03:13.000 --> 05:03:16.000 . 05:03:16.000 --> 05:03:19.000 . 05:03:19.000 --> 05:03:22.000 . 05:03:22.000 --> 05:03:25.000 . 05:03:25.000 --> 05:03:28.000 . 05:03:28.000 --> 05:03:31.000 . 05:03:31.000 --> 05:03:34.000 . 05:03:34.000 --> 05:03:37.000 . 05:03:37.000 --> 05:03:40.000 . 05:03:40.000 --> 05:03:43.000 . 05:03:43.000 --> 05:03:46.000 . 05:03:46.000 --> 05:03:49.000 . 05:03:49.000 --> 05:03:52.000 . 05:03:52.000 --> 05:03:55.000 . 05:03:55.000 --> 05:03:58.000 . 05:03:58.000 --> 05:04:01.000 . 05:04:01.000 --> 05:04:04.000 . 05:04:04.000 --> 05:04:07.000 . 05:04:07.000 --> 05:04:10.000 . 05:04:10.000 --> 05:04:13.000 . 05:04:13.000 --> 05:04:16.000 . 05:04:16.000 --> 05:04:19.000 . 05:04:19.000 --> 05:04:22.000 . 05:04:22.000 --> 05:04:25.000 . 05:04:25.000 --> 05:04:28.000 . 05:04:28.000 --> 05:04:31.000 . 05:04:31.000 --> 05:04:34.000 . 05:04:34.000 --> 05:04:37.000 . 05:04:37.000 --> 05:04:40.000 . 05:04:40.000 --> 05:04:43.000 . 05:04:43.000 --> 05:04:46.000 . 05:04:46.000 --> 05:04:49.000 . 05:04:49.000 --> 05:04:52.000 . 05:04:52.000 --> 05:04:55.000 . 05:04:55.000 --> 05:04:58.000 . 05:04:58.000 --> 05:05:01.000 . 05:05:01.000 --> 05:05:04.000 . 05:05:04.000 --> 05:05:07.000 . 05:05:07.000 --> 05:05:10.000 . 05:05:10.000 --> 05:05:13.000 . 05:05:13.000 --> 05:05:16.000 . 05:05:16.000 --> 05:05:19.000 . 05:05:19.000 --> 05:05:22.000 . 05:05:22.000 --> 05:05:25.000 . 05:05:25.000 --> 05:05:28.000 . 05:05:28.000 --> 05:05:31.000 . 05:05:31.000 --> 05:05:34.000 . 05:05:34.000 --> 05:05:37.000 . 05:05:37.000 --> 05:05:40.000 . 05:05:40.000 --> 05:05:43.000 . 05:05:43.000 --> 05:05:46.000 . 05:05:46.000 --> 05:05:49.000 . 05:05:49.000 --> 05:05:52.000 . 05:05:52.000 --> 05:05:55.000 . 05:05:55.000 --> 05:05:58.000 . 05:05:58.000 --> 05:06:01.000 . 05:06:01.000 --> 05:06:04.000 . 05:06:04.000 --> 05:06:07.000 . 05:06:07.000 --> 05:06:10.000 . 05:06:10.000 --> 05:06:13.000 . 05:06:13.000 --> 05:06:16.000 . 05:06:16.000 --> 05:06:19.000 . 05:06:19.000 --> 05:06:22.000 . 05:06:22.000 --> 05:06:25.000 . 05:06:25.000 --> 05:06:28.000 . 05:06:28.000 --> 05:06:31.000 . 05:06:31.000 --> 05:06:34.000 . 05:06:34.000 --> 05:06:37.000 . 05:06:37.000 --> 05:06:40.000 . 05:06:40.000 --> 05:06:43.000 . 05:06:43.000 --> 05:06:46.000 . 05:06:46.000 --> 05:06:49.000 . 05:06:49.000 --> 05:06:52.000 . 05:06:52.000 --> 05:06:55.000 . 05:06:55.000 --> 05:06:58.000 . 05:06:58.000 --> 05:07:01.000 . 05:07:01.000 --> 05:07:04.000 . 05:07:04.000 --> 05:07:07.000 . 05:07:07.000 --> 05:07:10.000 . 05:07:10.000 --> 05:07:13.000 . 05:07:13.000 --> 05:07:16.000 . 05:07:16.000 --> 05:07:19.000 . 05:07:19.000 --> 05:07:22.000 . 05:07:22.000 --> 05:07:25.000 . 05:07:25.000 --> 05:07:28.000 . 05:07:28.000 --> 05:07:31.000 . 05:07:31.000 --> 05:07:34.000 . 05:07:34.000 --> 05:07:37.000 . 05:07:37.000 --> 05:07:40.000 . 05:07:40.000 --> 05:07:43.000 . 05:07:43.000 --> 05:07:46.000 . 05:07:46.000 --> 05:07:49.000 . 05:07:49.000 --> 05:07:52.000 . 05:07:52.000 --> 05:07:55.000 . 05:07:55.000 --> 05:07:58.000 . 05:07:58.000 --> 05:08:01.000 . 05:08:01.000 --> 05:08:04.000 . 05:08:04.000 --> 05:08:07.000 . 05:08:07.000 --> 05:08:10.000 . 05:08:10.000 --> 05:08:13.000 . 05:08:13.000 --> 05:08:16.000 . 05:08:16.000 --> 05:08:19.000 . 05:08:19.000 --> 05:08:22.000 . 05:08:22.000 --> 05:08:25.000 . 05:08:25.000 --> 05:08:28.000 . 05:08:28.000 --> 05:08:31.000 . 05:08:31.000 --> 05:08:34.000 . 05:08:34.000 --> 05:08:37.000 . 05:08:37.000 --> 05:08:40.000 . 05:08:40.000 --> 05:08:43.000 . 05:08:43.000 --> 05:08:46.000 . 05:08:46.000 --> 05:08:49.000 . 05:08:49.000 --> 05:08:52.000 . 05:08:52.000 --> 05:08:55.000 . 05:08:55.000 --> 05:08:58.000 . 05:08:58.000 --> 05:09:01.000 . 05:09:01.000 --> 05:09:04.000 . 05:09:04.000 --> 05:09:07.000 . 05:09:07.000 --> 05:09:10.000 . 05:09:10.000 --> 05:09:13.000 . 05:09:13.000 --> 05:09:16.000 . 05:09:16.000 --> 05:09:19.000 . 05:09:19.000 --> 05:09:22.000 . 05:09:22.000 --> 05:09:25.000 . 05:09:25.000 --> 05:09:28.000 . 05:09:28.000 --> 05:09:31.000 . 05:09:31.000 --> 05:09:34.000 . 05:09:34.000 --> 05:09:37.000 . 05:09:37.000 --> 05:09:40.000 . 05:09:40.000 --> 05:09:43.000 . 05:09:43.000 --> 05:09:46.000 . 05:09:46.000 --> 05:09:49.000 . 05:09:49.000 --> 05:09:52.000 . 05:09:52.000 --> 05:09:55.000 . 05:09:55.000 --> 05:09:58.000 . 05:09:58.000 --> 05:10:01.000 . 05:10:01.000 --> 05:10:04.000 . 05:10:04.000 --> 05:10:07.000 . 05:10:07.000 --> 05:10:10.000 . 05:10:10.000 --> 05:10:13.000 . 05:10:13.000 --> 05:10:16.000 . 05:10:16.000 --> 05:10:19.000 . 05:10:19.000 --> 05:10:22.000 . 05:10:22.000 --> 05:10:25.000 . 05:10:25.000 --> 05:10:28.000 . 05:10:28.000 --> 05:10:31.000 . 05:10:31.000 --> 05:10:34.000 . 05:10:34.000 --> 05:10:37.000 . 05:10:37.000 --> 05:10:40.000 . 05:10:40.000 --> 05:10:43.000 . 05:10:43.000 --> 05:10:46.000 . 05:10:46.000 --> 05:10:49.000 . 05:10:49.000 --> 05:10:52.000 . 05:10:52.000 --> 05:10:55.000 . 05:10:55.000 --> 05:10:58.000 . 05:10:58.000 --> 05:11:01.000 . 05:11:01.000 --> 05:11:04.000 . 05:11:04.000 --> 05:11:07.000 . 05:11:07.000 --> 05:11:10.000 . 05:11:10.000 --> 05:11:13.000 . 05:11:13.000 --> 05:11:16.000 . 05:11:16.000 --> 05:11:19.000 . 05:11:19.000 --> 05:11:22.000 . 05:11:22.000 --> 05:11:25.000 . 05:11:25.000 --> 05:11:28.000 . 05:11:28.000 --> 05:11:31.000 . 05:11:31.000 --> 05:11:34.000 . 05:11:34.000 --> 05:11:37.000 . 05:11:37.000 --> 05:11:40.000 . 05:11:40.000 --> 05:11:43.000 . 05:11:43.000 --> 05:11:46.000 . 05:11:46.000 --> 05:11:49.000 . 05:11:49.000 --> 05:11:52.000 . 05:11:52.000 --> 05:11:55.000 . 05:11:55.000 --> 05:11:58.000 . 05:11:58.000 --> 05:12:01.000 . 05:12:01.000 --> 05:12:04.000 . 05:12:04.000 --> 05:12:07.000 . 05:12:07.000 --> 05:12:10.000 . 05:12:10.000 --> 05:12:13.000 . 05:12:13.000 --> 05:12:16.000 . 05:12:16.000 --> 05:12:19.000 . 05:12:19.000 --> 05:12:22.000 . 05:12:22.000 --> 05:12:25.000 . 05:12:25.000 --> 05:12:28.000 . 05:12:28.000 --> 05:12:31.000 . 05:12:31.000 --> 05:12:34.000 . 05:12:34.000 --> 05:12:37.000 . 05:12:37.000 --> 05:12:40.000 . 05:12:40.000 --> 05:12:43.000 . 05:12:43.000 --> 05:12:46.000 . 05:12:46.000 --> 05:12:49.000 . 05:12:49.000 --> 05:12:52.000 . 05:12:52.000 --> 05:12:55.000 . 05:12:55.000 --> 05:12:58.000 . 05:12:58.000 --> 05:13:01.000 . 05:13:01.000 --> 05:13:04.000 . 05:13:04.000 --> 05:13:07.000 . 05:13:07.000 --> 05:13:10.000 . 05:13:10.000 --> 05:13:13.000 . 05:13:13.000 --> 05:13:16.000 . 05:13:16.000 --> 05:13:19.000 . 05:13:19.000 --> 05:13:22.000 . 05:13:22.000 --> 05:13:25.000 . 05:13:25.000 --> 05:13:28.000 . 05:13:28.000 --> 05:13:31.000 . 05:13:31.000 --> 05:13:34.000 . 05:13:34.000 --> 05:13:37.000 . 05:13:37.000 --> 05:13:40.000 . 05:13:40.000 --> 05:13:43.000 . 05:13:43.000 --> 05:13:46.000 . 05:13:46.000 --> 05:13:49.000 . 05:13:49.000 --> 05:13:52.000 . 05:13:52.000 --> 05:13:55.000 . 05:13:55.000 --> 05:13:58.000 . 05:13:58.000 --> 05:14:01.000 . 05:14:01.000 --> 05:14:04.000 . 05:14:04.000 --> 05:14:07.000 . 05:14:07.000 --> 05:14:10.000 . 05:14:10.000 --> 05:14:13.000 . 05:14:13.000 --> 05:14:16.000 . 05:14:16.000 --> 05:14:19.000 . 05:14:19.000 --> 05:14:22.000 . 05:14:22.000 --> 05:14:25.000 . 05:14:25.000 --> 05:14:28.000 . 05:14:28.000 --> 05:14:31.000 . 05:14:31.000 --> 05:14:34.000 . 05:14:34.000 --> 05:14:37.000 . 05:14:37.000 --> 05:14:40.000 . 05:14:40.000 --> 05:14:43.000 . 05:14:43.000 --> 05:14:46.000 . 05:14:46.000 --> 05:14:49.000 . 05:14:49.000 --> 05:14:52.000 . 05:14:52.000 --> 05:14:55.000 . 05:14:55.000 --> 05:14:58.000 . 05:14:58.000 --> 05:15:01.000 . 05:15:01.000 --> 05:15:04.000 . 05:15:04.000 --> 05:15:07.000 . 05:15:07.000 --> 05:15:10.000 . 05:15:10.000 --> 05:15:13.000 . 05:15:13.000 --> 05:15:16.000 . 05:15:16.000 --> 05:15:19.000 . 05:15:19.000 --> 05:15:22.000 . 05:15:22.000 --> 05:15:25.000 . 05:15:25.000 --> 05:15:28.000 . 05:15:28.000 --> 05:15:31.000 . 05:15:31.000 --> 05:15:34.000 . 05:15:34.000 --> 05:15:37.000 . 05:15:37.000 --> 05:15:40.000 . 05:15:40.000 --> 05:15:43.000 . 05:15:43.000 --> 05:15:46.000 . 05:15:46.000 --> 05:15:49.000 . 05:15:49.000 --> 05:15:52.000 . 05:15:52.000 --> 05:15:55.000 . 05:15:55.000 --> 05:15:58.000 . 05:15:58.000 --> 05:16:01.000 . 05:16:01.000 --> 05:16:04.000 . 05:16:04.000 --> 05:16:07.000 . 05:16:07.000 --> 05:16:10.000 . 05:16:10.000 --> 05:16:13.000 . 05:16:13.000 --> 05:16:16.000 . 05:16:16.000 --> 05:16:19.000 . 05:16:19.000 --> 05:16:22.000 . 05:16:22.000 --> 05:16:25.000 . 05:16:25.000 --> 05:16:28.000 . 05:16:28.000 --> 05:16:31.000 . 05:16:31.000 --> 05:16:34.000 . 05:16:34.000 --> 05:16:37.000 . 05:16:37.000 --> 05:16:40.000 . 05:16:40.000 --> 05:16:43.000 . 05:16:43.000 --> 05:16:46.000 . 05:16:46.000 --> 05:16:49.000 . 05:16:49.000 --> 05:16:52.000 . 05:16:52.000 --> 05:16:55.000 . 05:16:55.000 --> 05:16:58.000 . 05:16:58.000 --> 05:17:01.000 . 05:17:01.000 --> 05:17:04.000 . 05:17:04.000 --> 05:17:07.000 . 05:17:07.000 --> 05:17:10.000 . 05:17:10.000 --> 05:17:13.000 . 05:17:13.000 --> 05:17:16.000 . 05:17:16.000 --> 05:17:19.000 . 05:17:19.000 --> 05:17:22.000 . 05:17:22.000 --> 05:17:25.000 . 05:17:25.000 --> 05:17:28.000 . 05:17:28.000 --> 05:17:31.000 . 05:17:31.000 --> 05:17:34.000 . 05:17:34.000 --> 05:17:37.000 . 05:17:37.000 --> 05:17:40.000 . 05:17:40.000 --> 05:17:43.000 . 05:17:43.000 --> 05:17:46.000 . 05:17:46.000 --> 05:17:49.000 . 05:17:49.000 --> 05:17:52.000 . 05:17:52.000 --> 05:17:55.000 . 05:17:55.000 --> 05:17:58.000 . 05:17:58.000 --> 05:18:01.000 . 05:18:01.000 --> 05:18:04.000 . 05:18:04.000 --> 05:18:07.000 . 05:18:07.000 --> 05:18:10.000 . 05:18:10.000 --> 05:18:13.000 . 05:18:13.000 --> 05:18:16.000 . 05:18:16.000 --> 05:18:19.000 . 05:18:19.000 --> 05:18:22.000 . 05:18:22.000 --> 05:18:25.000 . 05:18:25.000 --> 05:18:28.000 . 05:18:28.000 --> 05:18:31.000 . 05:18:31.000 --> 05:18:34.000 . 05:18:34.000 --> 05:18:37.000 . 05:18:37.000 --> 05:18:40.000 . 05:18:40.000 --> 05:18:43.000 . 05:18:43.000 --> 05:18:46.000 . 05:18:46.000 --> 05:18:49.000 . 05:18:49.000 --> 05:18:52.000 . 05:18:52.000 --> 05:18:55.000 . 05:18:55.000 --> 05:18:58.000 . 05:18:58.000 --> 05:19:01.000 . 05:19:01.000 --> 05:19:04.000 . 05:19:04.000 --> 05:19:07.000 . 05:19:07.000 --> 05:19:10.000 . 05:19:10.000 --> 05:19:13.000 . 05:19:13.000 --> 05:19:16.000 . 05:19:16.000 --> 05:19:19.000 . 05:19:19.000 --> 05:19:22.000 . 05:19:22.000 --> 05:19:25.000 . 05:19:25.000 --> 05:19:28.000 . 05:19:28.000 --> 05:19:31.000 . 05:19:31.000 --> 05:19:34.000 . 05:19:34.000 --> 05:19:37.000 . 05:19:37.000 --> 05:19:40.000 . 05:19:40.000 --> 05:19:43.000 . 05:19:43.000 --> 05:19:46.000 . 05:19:46.000 --> 05:19:49.000 . 05:19:49.000 --> 05:19:52.000 . 05:19:52.000 --> 05:19:55.000 . 05:19:55.000 --> 05:19:58.000 . 05:19:58.000 --> 05:20:01.000 . 05:20:01.000 --> 05:20:04.000 . 05:20:04.000 --> 05:20:07.000 . 05:20:07.000 --> 05:20:10.000 . 05:20:10.000 --> 05:20:13.000 . 05:20:13.000 --> 05:20:16.000 . 05:20:16.000 --> 05:20:19.000 . 05:20:19.000 --> 05:20:22.000 . 05:20:22.000 --> 05:20:25.000 . 05:20:25.000 --> 05:20:28.000 . 05:20:28.000 --> 05:20:31.000 . 05:20:31.000 --> 05:20:34.000 . 05:20:34.000 --> 05:20:37.000 . 05:20:37.000 --> 05:20:40.000 . 05:20:40.000 --> 05:20:43.000 . 05:20:43.000 --> 05:20:46.000 . 05:20:46.000 --> 05:20:49.000 . 05:20:49.000 --> 05:20:52.000 . 05:20:52.000 --> 05:20:55.000 . 05:20:55.000 --> 05:20:58.000 . 05:20:58.000 --> 05:21:01.000 . 05:21:01.000 --> 05:21:04.000 . 05:21:04.000 --> 05:21:07.000 . 05:21:07.000 --> 05:21:10.000 . 05:21:10.000 --> 05:21:13.000 . 05:21:13.000 --> 05:21:16.000 . 05:21:16.000 --> 05:21:19.000 . 05:21:19.000 --> 05:21:22.000 . 05:21:22.000 --> 05:21:25.000 . 05:21:25.000 --> 05:21:28.000 . 05:21:28.000 --> 05:21:31.000 . 05:21:31.000 --> 05:21:34.000 . 05:21:34.000 --> 05:21:37.000 . 05:21:37.000 --> 05:21:40.000 . 05:21:40.000 --> 05:21:43.000 . 05:21:43.000 --> 05:21:46.000 . 05:21:46.000 --> 05:21:49.000 . 05:21:49.000 --> 05:21:52.000 . 05:21:52.000 --> 05:21:55.000 . 05:21:55.000 --> 05:21:58.000 . 05:21:58.000 --> 05:22:01.000 . 05:22:01.000 --> 05:22:04.000 . 05:22:04.000 --> 05:22:07.000 . 05:22:07.000 --> 05:22:10.000 . 05:22:10.000 --> 05:22:13.000 . 05:22:13.000 --> 05:22:16.000 . 05:22:16.000 --> 05:22:19.000 . 05:22:19.000 --> 05:22:22.000 . 05:22:22.000 --> 05:22:25.000 . 05:22:25.000 --> 05:22:28.000 . 05:22:28.000 --> 05:22:31.000 . 05:22:31.000 --> 05:22:34.000 . 05:22:34.000 --> 05:22:37.000 . 05:22:37.000 --> 05:22:40.000 . 05:22:40.000 --> 05:22:43.000 . 05:22:43.000 --> 05:22:46.000 . 05:22:46.000 --> 05:22:49.000 . 05:22:49.000 --> 05:22:52.000 . 05:22:52.000 --> 05:22:55.000 . 05:22:55.000 --> 05:22:58.000 . 05:22:58.000 --> 05:23:01.000 . 05:23:01.000 --> 05:23:04.000 . 05:23:04.000 --> 05:23:07.000 . 05:23:07.000 --> 05:23:10.000 . 05:23:10.000 --> 05:23:13.000 . 05:23:13.000 --> 05:23:16.000 . 05:23:16.000 --> 05:23:19.000 . 05:23:19.000 --> 05:23:22.000 . 05:23:22.000 --> 05:23:25.000 . 05:23:25.000 --> 05:23:28.000 . 05:23:28.000 --> 05:23:31.000 . 05:23:31.000 --> 05:23:34.000 . 05:23:34.000 --> 05:23:37.000 . 05:23:37.000 --> 05:23:40.000 . 05:23:40.000 --> 05:23:43.000 . 05:23:43.000 --> 05:23:46.000 . 05:23:46.000 --> 05:23:49.000 . 05:23:49.000 --> 05:23:52.000 . 05:23:52.000 --> 05:23:55.000 . 05:23:55.000 --> 05:23:58.000 . 05:23:58.000 --> 05:24:01.000 . 05:24:01.000 --> 05:24:04.000 . 05:24:04.000 --> 05:24:07.000 . 05:24:07.000 --> 05:24:10.000 . 05:24:10.000 --> 05:24:13.000 . 05:24:13.000 --> 05:24:16.000 . 05:24:16.000 --> 05:24:19.000 . 05:24:19.000 --> 05:24:22.000 . 05:24:22.000 --> 05:24:25.000 . 05:24:25.000 --> 05:24:28.000 . 05:24:28.000 --> 05:24:31.000 . 05:24:31.000 --> 05:24:34.000 . 05:24:34.000 --> 05:24:37.000 . 05:24:37.000 --> 05:24:40.000 . 05:24:40.000 --> 05:24:43.000 . 05:24:43.000 --> 05:24:46.000 . 05:24:46.000 --> 05:24:49.000 . 05:24:49.000 --> 05:24:52.000 . 05:24:52.000 --> 05:24:55.000 . 05:24:55.000 --> 05:24:58.000 . 05:24:58.000 --> 05:25:01.000 . 05:25:01.000 --> 05:25:04.000 . 05:25:04.000 --> 05:25:07.000 . 05:25:07.000 --> 05:25:10.000 . 05:25:10.000 --> 05:25:13.000 . 05:25:13.000 --> 05:25:16.000 . 05:25:16.000 --> 05:25:19.000 . 05:25:19.000 --> 05:25:22.000 . 05:25:22.000 --> 05:25:25.000 . 05:25:25.000 --> 05:25:28.000 . 05:25:28.000 --> 05:25:31.000 . 05:25:31.000 --> 05:25:34.000 . 05:25:34.000 --> 05:25:37.000 . 05:25:37.000 --> 05:25:40.000 . 05:25:40.000 --> 05:25:43.000 . 05:25:43.000 --> 05:25:46.000 . 05:25:46.000 --> 05:25:49.000 . 05:25:49.000 --> 05:25:52.000 . 05:25:52.000 --> 05:25:55.000 . 05:25:55.000 --> 05:25:58.000 . 05:25:58.000 --> 05:26:01.000 . 05:26:01.000 --> 05:26:04.000 . 05:26:04.000 --> 05:26:07.000 . 05:26:07.000 --> 05:26:10.000 . 05:26:10.000 --> 05:26:13.000 . 05:26:13.000 --> 05:26:16.000 . 05:26:16.000 --> 05:26:19.000 . 05:26:19.000 --> 05:26:22.000 . 05:26:22.000 --> 05:26:25.000 . 05:26:25.000 --> 05:26:28.000 . 05:26:28.000 --> 05:26:31.000 . 05:26:31.000 --> 05:26:34.000 . 05:26:34.000 --> 05:26:37.000 . 05:26:37.000 --> 05:26:40.000 . 05:26:40.000 --> 05:26:43.000 . 05:26:43.000 --> 05:26:46.000 . 05:26:46.000 --> 05:26:49.000 . 05:26:49.000 --> 05:26:52.000 . 05:26:52.000 --> 05:26:55.000 . 05:26:55.000 --> 05:26:58.000 . 05:26:58.000 --> 05:27:01.000 . 05:27:01.000 --> 05:27:04.000 . 05:27:04.000 --> 05:27:07.000 . 05:27:07.000 --> 05:27:10.000 . 05:27:10.000 --> 05:27:13.000 . 05:27:13.000 --> 05:27:16.000 . 05:27:16.000 --> 05:27:19.000 . 05:27:19.000 --> 05:27:22.000 . 05:27:22.000 --> 05:27:25.000 . 05:27:25.000 --> 05:27:28.000 . 05:27:28.000 --> 05:27:31.000 . 05:27:31.000 --> 05:27:34.000 . 05:27:34.000 --> 05:27:37.000 . 05:27:37.000 --> 05:27:40.000 . 05:27:40.000 --> 05:27:43.000 . 05:27:43.000 --> 05:27:46.000 . 05:27:46.000 --> 05:27:49.000 . 05:27:49.000 --> 05:27:52.000 . 05:27:52.000 --> 05:27:55.000 . 05:27:55.000 --> 05:27:58.000 . 05:27:58.000 --> 05:28:01.000 . 05:28:01.000 --> 05:28:04.000 . 05:28:04.000 --> 05:28:07.000 . 05:28:07.000 --> 05:28:10.000 . 05:28:10.000 --> 05:28:13.000 . 05:28:13.000 --> 05:28:16.000 . 05:28:16.000 --> 05:28:19.000 . 05:28:19.000 --> 05:28:22.000 . 05:28:22.000 --> 05:28:25.000 . 05:28:25.000 --> 05:28:28.000 . 05:28:28.000 --> 05:28:31.000 . 05:28:31.000 --> 05:28:34.000 . 05:28:34.000 --> 05:28:37.000 . 05:28:37.000 --> 05:28:40.000 . 05:28:40.000 --> 05:28:43.000 . 05:28:43.000 --> 05:28:46.000 . 05:28:46.000 --> 05:28:49.000 . 05:28:49.000 --> 05:28:52.000 . 05:28:52.000 --> 05:28:55.000 . 05:28:55.000 --> 05:28:58.000 . 05:28:58.000 --> 05:29:01.000 . 05:29:01.000 --> 05:29:04.000 . 05:29:04.000 --> 05:29:07.000 . 05:29:07.000 --> 05:29:10.000 . 05:29:10.000 --> 05:29:13.000 . 05:29:13.000 --> 05:29:16.000 . 05:29:16.000 --> 05:29:19.000 . 05:29:19.000 --> 05:29:22.000 . 05:29:22.000 --> 05:29:25.000 . 05:29:25.000 --> 05:29:28.000 . 05:29:28.000 --> 05:29:31.000 . 05:29:31.000 --> 05:29:34.000 . 05:29:34.000 --> 05:29:37.000 . 05:29:37.000 --> 05:29:40.000 . 05:29:40.000 --> 05:29:43.000 . 05:29:43.000 --> 05:29:46.000 . 05:29:46.000 --> 05:29:49.000 . 05:29:49.000 --> 05:29:52.000 . 05:29:52.000 --> 05:29:55.000 . 05:29:55.000 --> 05:29:58.000 . 05:29:58.000 --> 05:30:01.000 . 05:30:01.000 --> 05:30:04.000 . 05:30:04.000 --> 05:30:07.000 . 05:30:07.000 --> 05:30:10.000 . 05:30:10.000 --> 05:30:13.000 . 05:30:13.000 --> 05:30:16.000 . 05:30:16.000 --> 05:30:19.000 . 05:30:19.000 --> 05:30:22.000 . 05:30:22.000 --> 05:30:25.000 . 05:30:25.000 --> 05:30:28.000 . 05:30:28.000 --> 05:30:31.000 . 05:30:31.000 --> 05:30:34.000 . 05:30:34.000 --> 05:30:37.000 . 05:30:37.000 --> 05:30:40.000 . 05:30:40.000 --> 05:30:43.000 . 05:30:43.000 --> 05:30:46.000 . 05:30:46.000 --> 05:30:49.000 . 05:30:49.000 --> 05:30:52.000 . 05:30:52.000 --> 05:30:55.000 . 05:30:55.000 --> 05:30:58.000 . 05:30:58.000 --> 05:31:01.000 . 05:31:01.000 --> 05:31:04.000 . 05:31:04.000 --> 05:31:07.000 . 05:31:07.000 --> 05:31:10.000 . 05:31:10.000 --> 05:31:13.000 . 05:31:13.000 --> 05:31:16.000 . 05:31:16.000 --> 05:31:19.000 . 05:31:19.000 --> 05:31:22.000 . 05:31:22.000 --> 05:31:25.000 . 05:31:25.000 --> 05:31:28.000 . 05:31:28.000 --> 05:31:31.000 . 05:31:31.000 --> 05:31:34.000 . 05:31:34.000 --> 05:31:37.000 . 05:31:37.000 --> 05:31:40.000 . 05:31:40.000 --> 05:31:43.000 . 05:31:43.000 --> 05:31:46.000 . 05:31:46.000 --> 05:31:49.000 . 05:31:49.000 --> 05:31:52.000 . 05:31:52.000 --> 05:31:55.000 . 05:31:55.000 --> 05:31:58.000 . 05:31:58.000 --> 05:32:01.000 . 05:32:01.000 --> 05:32:04.000 . 05:32:04.000 --> 05:32:07.000 . 05:32:07.000 --> 05:32:10.000 . 05:32:10.000 --> 05:32:13.000 . 05:32:13.000 --> 05:32:16.000 . 05:32:16.000 --> 05:32:19.000 . 05:32:19.000 --> 05:32:22.000 . 05:32:22.000 --> 05:32:25.000 . 05:32:25.000 --> 05:32:28.000 . 05:32:28.000 --> 05:32:31.000 . 05:32:31.000 --> 05:32:34.000 . 05:32:34.000 --> 05:32:37.000 . 05:32:37.000 --> 05:32:40.000 . 05:32:40.000 --> 05:32:43.000 . 05:32:43.000 --> 05:32:46.000 . 05:32:46.000 --> 05:32:49.000 . 05:32:49.000 --> 05:32:52.000 . 05:32:52.000 --> 05:32:55.000 . 05:32:55.000 --> 05:32:58.000 . 05:32:58.000 --> 05:33:01.000 . 05:33:01.000 --> 05:33:04.000 . 05:33:04.000 --> 05:33:07.000 . 05:33:07.000 --> 05:33:10.000 . 05:33:10.000 --> 05:33:13.000 . 05:33:13.000 --> 05:33:16.000 . 05:33:16.000 --> 05:33:19.000 . 05:33:19.000 --> 05:33:22.000 . 05:33:22.000 --> 05:33:25.000 . 05:33:25.000 --> 05:33:28.000 . 05:33:28.000 --> 05:33:31.000 . 05:33:31.000 --> 05:33:34.000 . 05:33:34.000 --> 05:33:37.000 . 05:33:37.000 --> 05:33:40.000 . 05:33:40.000 --> 05:33:43.000 . 05:33:43.000 --> 05:33:46.000 . 05:33:46.000 --> 05:33:49.000 . 05:33:49.000 --> 05:33:52.000 . 05:33:52.000 --> 05:33:55.000 . 05:33:55.000 --> 05:33:58.000 . 05:33:58.000 --> 05:34:01.000 . 05:34:01.000 --> 05:34:04.000 . 05:34:04.000 --> 05:34:07.000 . 05:34:07.000 --> 05:34:10.000 . 05:34:10.000 --> 05:34:13.000 . 05:34:13.000 --> 05:34:16.000 . 05:34:16.000 --> 05:34:19.000 . 05:34:19.000 --> 05:34:22.000 . 05:34:22.000 --> 05:34:25.000 . 05:34:25.000 --> 05:34:28.000 . 05:34:28.000 --> 05:34:31.000 . 05:34:31.000 --> 05:34:34.000 . 05:34:34.000 --> 05:34:37.000 . 05:34:37.000 --> 05:34:40.000 . 05:34:40.000 --> 05:34:43.000 . 05:34:43.000 --> 05:34:46.000 . 05:34:46.000 --> 05:34:49.000 . 05:34:49.000 --> 05:34:52.000 . 05:34:52.000 --> 05:34:55.000 . 05:34:55.000 --> 05:34:58.000 . 05:34:58.000 --> 05:35:01.000 . 05:35:01.000 --> 05:35:04.000 . 05:35:04.000 --> 05:35:07.000 . 05:35:07.000 --> 05:35:10.000 . 05:35:10.000 --> 05:35:13.000 . 05:35:13.000 --> 05:35:16.000 . 05:35:16.000 --> 05:35:19.000 . 05:35:19.000 --> 05:35:22.000 . 05:35:22.000 --> 05:35:25.000 . 05:35:25.000 --> 05:35:28.000 . 05:35:28.000 --> 05:35:31.000 . 05:35:31.000 --> 05:35:34.000 . 05:35:34.000 --> 05:35:37.000 . 05:35:37.000 --> 05:35:40.000 . 05:35:40.000 --> 05:35:43.000 . 05:35:43.000 --> 05:35:46.000 . 05:35:46.000 --> 05:35:49.000 . 05:35:49.000 --> 05:35:52.000 . 05:35:52.000 --> 05:35:55.000 . 05:35:55.000 --> 05:35:58.000 . 05:35:58.000 --> 05:36:01.000 . 05:36:01.000 --> 05:36:04.000 . 05:36:04.000 --> 05:36:07.000 . 05:36:07.000 --> 05:36:10.000 . 05:36:10.000 --> 05:36:13.000 . 05:36:13.000 --> 05:36:16.000 . 05:36:16.000 --> 05:36:19.000 . 05:36:19.000 --> 05:36:22.000 . 05:36:22.000 --> 05:36:25.000 . 05:36:25.000 --> 05:36:28.000 . 05:36:28.000 --> 05:36:31.000 . 05:36:31.000 --> 05:36:34.000 . 05:36:34.000 --> 05:36:37.000 . 05:36:37.000 --> 05:36:40.000 . 05:36:40.000 --> 05:36:43.000 . 05:36:43.000 --> 05:36:46.000 . 05:36:46.000 --> 05:36:49.000 . 05:36:49.000 --> 05:36:52.000 . 05:36:52.000 --> 05:36:55.000 . 05:36:55.000 --> 05:36:58.000 . 05:36:58.000 --> 05:37:01.000 . 05:37:01.000 --> 05:37:04.000 . 05:37:04.000 --> 05:37:07.000 . 05:37:07.000 --> 05:37:10.000 . 05:37:10.000 --> 05:37:13.000 . 05:37:13.000 --> 05:37:16.000 . 05:37:16.000 --> 05:37:19.000 . 05:37:19.000 --> 05:37:22.000 . 05:37:22.000 --> 05:37:25.000 . 05:37:25.000 --> 05:37:28.000 . 05:37:28.000 --> 05:37:31.000 . 05:37:31.000 --> 05:37:34.000 . 05:37:34.000 --> 05:37:37.000 . 05:37:37.000 --> 05:37:40.000 . 05:37:40.000 --> 05:37:43.000 . 05:37:43.000 --> 05:37:46.000 . 05:37:46.000 --> 05:37:49.000 . 05:37:49.000 --> 05:37:52.000 . 05:37:52.000 --> 05:37:55.000 . 05:37:55.000 --> 05:37:58.000 . 05:37:58.000 --> 05:38:01.000 . 05:38:01.000 --> 05:38:04.000 . 05:38:04.000 --> 05:38:07.000 . 05:38:07.000 --> 05:38:10.000 . 05:38:10.000 --> 05:38:13.000 . 05:38:13.000 --> 05:38:16.000 . 05:38:16.000 --> 05:38:19.000 . 05:38:19.000 --> 05:38:22.000 . 05:38:22.000 --> 05:38:25.000 . 05:38:25.000 --> 05:38:28.000 . 05:38:28.000 --> 05:38:31.000 . 05:38:31.000 --> 05:38:34.000 . 05:38:34.000 --> 05:38:37.000 . 05:38:37.000 --> 05:38:40.000 . 05:38:40.000 --> 05:38:43.000 . 05:38:43.000 --> 05:38:46.000 . 05:38:46.000 --> 05:38:49.000 . 05:38:49.000 --> 05:38:52.000 . 05:38:52.000 --> 05:38:55.000 . 05:38:55.000 --> 05:38:58.000 . 05:38:58.000 --> 05:39:01.000 . 05:39:01.000 --> 05:39:04.000 . 05:39:04.000 --> 05:39:07.000 . 05:39:07.000 --> 05:39:10.000 . 05:39:10.000 --> 05:39:13.000 . 05:39:13.000 --> 05:39:16.000 . 05:39:16.000 --> 05:39:19.000 . 05:39:19.000 --> 05:39:22.000 . 05:39:22.000 --> 05:39:25.000 . 05:39:25.000 --> 05:39:28.000 . 05:39:28.000 --> 05:39:31.000 . 05:39:31.000 --> 05:39:34.000 . 05:39:34.000 --> 05:39:37.000 . 05:39:37.000 --> 05:39:40.000 . 05:39:40.000 --> 05:39:43.000 . 05:39:43.000 --> 05:39:46.000 . 05:39:46.000 --> 05:39:49.000 . 05:39:49.000 --> 05:39:52.000 . 05:39:52.000 --> 05:39:55.000 . 05:39:55.000 --> 05:39:58.000 . 05:39:58.000 --> 05:40:01.000 . 05:40:01.000 --> 05:40:04.000 . 05:40:04.000 --> 05:40:07.000 . 05:40:07.000 --> 05:40:10.000 . 05:40:10.000 --> 05:40:13.000 . 05:40:13.000 --> 05:40:16.000 . 05:40:16.000 --> 05:40:19.000 . 05:40:19.000 --> 05:40:22.000 . 05:40:22.000 --> 05:40:25.000 . 05:40:25.000 --> 05:40:28.000 . 05:40:28.000 --> 05:40:31.000 . 05:40:31.000 --> 05:40:34.000 . 05:40:34.000 --> 05:40:37.000 . 05:40:37.000 --> 05:40:40.000 . 05:40:40.000 --> 05:40:43.000 . 05:40:43.000 --> 05:40:46.000 . 05:40:46.000 --> 05:40:49.000 . 05:40:49.000 --> 05:40:52.000 . 05:40:52.000 --> 05:40:55.000 . 05:40:55.000 --> 05:40:58.000 . 05:40:58.000 --> 05:41:01.000 . 05:41:01.000 --> 05:41:04.000 . 05:41:04.000 --> 05:41:07.000 . 05:41:07.000 --> 05:41:10.000 . 05:41:10.000 --> 05:41:13.000 . 05:41:13.000 --> 05:41:16.000 . 05:41:16.000 --> 05:41:19.000 . 05:41:19.000 --> 05:41:22.000 . 05:41:22.000 --> 05:41:25.000 . 05:41:25.000 --> 05:41:28.000 . 05:41:28.000 --> 05:41:31.000 . 05:41:31.000 --> 05:41:34.000 . 05:41:34.000 --> 05:41:37.000 . 05:41:37.000 --> 05:41:40.000 . 05:41:40.000 --> 05:41:43.000 . 05:41:43.000 --> 05:41:46.000 . 05:41:46.000 --> 05:41:49.000 . 05:41:49.000 --> 05:41:52.000 . 05:41:52.000 --> 05:41:55.000 . 05:41:55.000 --> 05:41:58.000 . 05:41:58.000 --> 05:42:01.000 . 05:42:01.000 --> 05:42:04.000 . 05:42:04.000 --> 05:42:07.000 . 05:42:07.000 --> 05:42:10.000 . 05:42:10.000 --> 05:42:13.000 . 05:42:13.000 --> 05:42:16.000 . 05:42:16.000 --> 05:42:19.000 . 05:42:19.000 --> 05:42:22.000 . 05:42:22.000 --> 05:42:25.000 . 05:42:25.000 --> 05:42:28.000 . 05:42:28.000 --> 05:42:31.000 . 05:42:31.000 --> 05:42:34.000 . 05:42:34.000 --> 05:42:37.000 . 05:42:37.000 --> 05:42:40.000 . 05:42:40.000 --> 05:42:43.000 . 05:42:43.000 --> 05:42:46.000 . 05:42:46.000 --> 05:42:49.000 . 05:42:49.000 --> 05:42:52.000 . 05:42:52.000 --> 05:42:55.000 . 05:42:55.000 --> 05:42:58.000 . 05:42:58.000 --> 05:43:01.000 . 05:43:01.000 --> 05:43:04.000 . 05:43:04.000 --> 05:43:07.000 . 05:43:07.000 --> 05:43:10.000 . 05:43:10.000 --> 05:43:13.000 . 05:43:13.000 --> 05:43:16.000 . 05:43:16.000 --> 05:43:19.000 . 05:43:19.000 --> 05:43:22.000 . 05:43:22.000 --> 05:43:25.000 . 05:43:25.000 --> 05:43:28.000 . 05:43:28.000 --> 05:43:31.000 . 05:43:31.000 --> 05:43:34.000 . 05:43:34.000 --> 05:43:37.000 . 05:43:37.000 --> 05:43:40.000 . 05:43:40.000 --> 05:43:43.000 . 05:43:43.000 --> 05:43:46.000 . 05:43:46.000 --> 05:43:49.000 . 05:43:49.000 --> 05:43:52.000 . 05:43:52.000 --> 05:43:55.000 . 05:43:55.000 --> 05:43:58.000 . 05:43:58.000 --> 05:44:01.000 . 05:44:01.000 --> 05:44:04.000 . 05:44:04.000 --> 05:44:07.000 . 05:44:07.000 --> 05:44:10.000 . 05:44:10.000 --> 05:44:13.000 . 05:44:13.000 --> 05:44:16.000 . 05:44:16.000 --> 05:44:19.000 . 05:44:19.000 --> 05:44:22.000 . 05:44:22.000 --> 05:44:25.000 . 05:44:25.000 --> 05:44:28.000 . 05:44:28.000 --> 05:44:31.000 . 05:44:31.000 --> 05:44:34.000 . 05:44:34.000 --> 05:44:37.000 . 05:44:37.000 --> 05:44:40.000 . 05:44:40.000 --> 05:44:43.000 . 05:44:43.000 --> 05:44:46.000 . 05:44:46.000 --> 05:44:49.000 . 05:44:49.000 --> 05:44:52.000 . 05:44:52.000 --> 05:44:55.000 . 05:44:55.000 --> 05:44:58.000 . 05:44:58.000 --> 05:45:01.000 . 05:45:01.000 --> 05:45:04.000 . 05:45:04.000 --> 05:45:07.000 . 05:45:07.000 --> 05:45:10.000 . 05:45:10.000 --> 05:45:13.000 . 05:45:13.000 --> 05:45:16.000 . 05:45:16.000 --> 05:45:19.000 . 05:45:19.000 --> 05:45:22.000 . 05:45:22.000 --> 05:45:25.000 . 05:45:25.000 --> 05:45:28.000 . 05:45:28.000 --> 05:45:31.000 . 05:45:31.000 --> 05:45:34.000 . 05:45:34.000 --> 05:45:37.000 . 05:45:37.000 --> 05:45:40.000 . 05:45:40.000 --> 05:45:43.000 . 05:45:43.000 --> 05:45:46.000 . 05:45:46.000 --> 05:45:49.000 . 05:45:49.000 --> 05:45:52.000 . 05:45:52.000 --> 05:45:55.000 . 05:45:55.000 --> 05:45:58.000 . 05:45:58.000 --> 05:46:01.000 . 05:46:01.000 --> 05:46:04.000 . 05:46:04.000 --> 05:46:07.000 . 05:46:07.000 --> 05:46:10.000 . 05:46:10.000 --> 05:46:13.000 . 05:46:13.000 --> 05:46:16.000 . 05:46:16.000 --> 05:46:19.000 . 05:46:19.000 --> 05:46:22.000 . 05:46:22.000 --> 05:46:25.000 . 05:46:25.000 --> 05:46:28.000 . 05:46:28.000 --> 05:46:31.000 . 05:46:31.000 --> 05:46:34.000 . 05:46:34.000 --> 05:46:37.000 . 05:46:37.000 --> 05:46:40.000 . 05:46:40.000 --> 05:46:43.000 . 05:46:43.000 --> 05:46:46.000 . 05:46:46.000 --> 05:46:49.000 . 05:46:49.000 --> 05:46:52.000 . 05:46:52.000 --> 05:46:55.000 . 05:46:55.000 --> 05:46:58.000 . 05:46:58.000 --> 05:47:01.000 . 05:47:01.000 --> 05:47:04.000 . 05:47:04.000 --> 05:47:07.000 . 05:47:07.000 --> 05:47:10.000 . 05:47:10.000 --> 05:47:13.000 . 05:47:13.000 --> 05:47:16.000 . 05:47:16.000 --> 05:47:19.000 . 05:47:19.000 --> 05:47:22.000 . 05:47:22.000 --> 05:47:25.000 . 05:47:25.000 --> 05:47:28.000 . 05:47:28.000 --> 05:47:31.000 . 05:47:31.000 --> 05:47:34.000 . 05:47:34.000 --> 05:47:37.000 . 05:47:37.000 --> 05:47:40.000 . 05:47:40.000 --> 05:47:43.000 . 05:47:43.000 --> 05:47:46.000 . 05:47:46.000 --> 05:47:49.000 . 05:47:49.000 --> 05:47:52.000 . 05:47:52.000 --> 05:47:55.000 . 05:47:55.000 --> 05:47:58.000 . 05:47:58.000 --> 05:48:01.000 . 05:48:01.000 --> 05:48:04.000 . 05:48:04.000 --> 05:48:07.000 . 05:48:07.000 --> 05:48:10.000 . 05:48:10.000 --> 05:48:13.000 . 05:48:13.000 --> 05:48:16.000 . 05:48:16.000 --> 05:48:19.000 . 05:48:19.000 --> 05:48:22.000 . 05:48:22.000 --> 05:48:25.000 . 05:48:25.000 --> 05:48:28.000 . 05:48:28.000 --> 05:48:31.000 . 05:48:31.000 --> 05:48:34.000 . 05:48:34.000 --> 05:48:37.000 . 05:48:37.000 --> 05:48:40.000 . 05:48:40.000 --> 05:48:43.000 . 05:48:43.000 --> 05:48:46.000 . 05:48:46.000 --> 05:48:49.000 . 05:48:49.000 --> 05:48:52.000 . 05:48:52.000 --> 05:48:55.000 . 05:48:55.000 --> 05:48:58.000 . 05:48:58.000 --> 05:49:01.000 . 05:49:01.000 --> 05:49:04.000 . 05:49:04.000 --> 05:49:07.000 . 05:49:07.000 --> 05:49:10.000 . 05:49:10.000 --> 05:49:13.000 . 05:49:13.000 --> 05:49:16.000 . 05:49:16.000 --> 05:49:19.000 . 05:49:19.000 --> 05:49:22.000 . 05:49:22.000 --> 05:49:25.000 . 05:49:25.000 --> 05:49:28.000 . 05:49:28.000 --> 05:49:31.000 . 05:49:31.000 --> 05:49:34.000 . 05:49:34.000 --> 05:49:37.000 . 05:49:37.000 --> 05:49:40.000 . 05:49:40.000 --> 05:49:43.000 . 05:49:43.000 --> 05:49:46.000 . 05:49:46.000 --> 05:49:49.000 . 05:49:49.000 --> 05:49:52.000 . 05:49:52.000 --> 05:49:55.000 . 05:49:55.000 --> 05:49:58.000 . 05:49:58.000 --> 05:50:01.000 . 05:50:01.000 --> 05:50:04.000 . 05:50:04.000 --> 05:50:07.000 . 05:50:07.000 --> 05:50:10.000 . 05:50:10.000 --> 05:50:13.000 . 05:50:13.000 --> 05:50:16.000 . 05:50:16.000 --> 05:50:19.000 . 05:50:19.000 --> 05:50:22.000 . 05:50:22.000 --> 05:50:25.000 . 05:50:25.000 --> 05:50:28.000 . 05:50:28.000 --> 05:50:31.000 . 05:50:31.000 --> 05:50:34.000 . 05:50:34.000 --> 05:50:37.000 . 05:50:37.000 --> 05:50:40.000 . 05:50:40.000 --> 05:50:43.000 . 05:50:43.000 --> 05:50:46.000 . 05:50:46.000 --> 05:50:49.000 . 05:50:49.000 --> 05:50:52.000 . 05:50:52.000 --> 05:50:55.000 . 05:50:55.000 --> 05:50:58.000 . 05:50:58.000 --> 05:51:01.000 . 05:51:01.000 --> 05:51:04.000 . 05:51:04.000 --> 05:51:07.000 . 05:51:07.000 --> 05:51:10.000 . 05:51:10.000 --> 05:51:13.000 . 05:51:13.000 --> 05:51:16.000 . 05:51:16.000 --> 05:51:19.000 . 05:51:19.000 --> 05:51:22.000 . 05:51:22.000 --> 05:51:25.000 . 05:51:25.000 --> 05:51:28.000 . 05:51:28.000 --> 05:51:31.000 . 05:51:31.000 --> 05:51:34.000 . 05:51:34.000 --> 05:51:37.000 . 05:51:37.000 --> 05:51:40.000 . 05:51:40.000 --> 05:51:43.000 . 05:51:43.000 --> 05:51:46.000 . 05:51:46.000 --> 05:51:49.000 . 05:51:49.000 --> 05:51:52.000 . 05:51:52.000 --> 05:51:55.000 . 05:51:55.000 --> 05:51:58.000 . 05:51:58.000 --> 05:52:01.000 . 05:52:01.000 --> 05:52:04.000 . 05:52:04.000 --> 05:52:07.000 . 05:52:07.000 --> 05:52:10.000 . 05:52:10.000 --> 05:52:13.000 . 05:52:13.000 --> 05:52:16.000 . 05:52:16.000 --> 05:52:19.000 . 05:52:19.000 --> 05:52:22.000 . 05:52:22.000 --> 05:52:25.000 . 05:52:25.000 --> 05:52:28.000 . 05:52:28.000 --> 05:52:31.000 . 05:52:31.000 --> 05:52:34.000 . 05:52:34.000 --> 05:52:37.000 . 05:52:37.000 --> 05:52:40.000 . 05:52:40.000 --> 05:52:43.000 . 05:52:43.000 --> 05:52:46.000 . 05:52:46.000 --> 05:52:49.000 . 05:52:49.000 --> 05:52:52.000 . 05:52:52.000 --> 05:52:55.000 . 05:52:55.000 --> 05:52:58.000 . 05:52:58.000 --> 05:53:01.000 . 05:53:01.000 --> 05:53:04.000 . 05:53:04.000 --> 05:53:07.000 . 05:53:07.000 --> 05:53:10.000 . 05:53:10.000 --> 05:53:13.000 . 05:53:13.000 --> 05:53:16.000 . 05:53:16.000 --> 05:53:19.000 . 05:53:19.000 --> 05:53:22.000 . 05:53:22.000 --> 05:53:25.000 . 05:53:25.000 --> 05:53:28.000 . 05:53:28.000 --> 05:53:31.000 . 05:53:31.000 --> 05:53:34.000 . 05:53:34.000 --> 05:53:37.000 . 05:53:37.000 --> 05:53:40.000 . 05:53:40.000 --> 05:53:43.000 . 05:53:43.000 --> 05:53:46.000 . 05:53:46.000 --> 05:53:49.000 . 05:53:49.000 --> 05:53:52.000 . 05:53:52.000 --> 05:53:55.000 . 05:53:55.000 --> 05:53:58.000 . 05:53:58.000 --> 05:54:01.000 . 05:54:01.000 --> 05:54:04.000 . 05:54:04.000 --> 05:54:07.000 . 05:54:07.000 --> 05:54:10.000 . 05:54:10.000 --> 05:54:13.000 . 05:54:13.000 --> 05:54:16.000 . 05:54:16.000 --> 05:54:19.000 . 05:54:19.000 --> 05:54:22.000 . 05:54:22.000 --> 05:54:25.000 . 05:54:25.000 --> 05:54:28.000 . 05:54:28.000 --> 05:54:31.000 . 05:54:31.000 --> 05:54:34.000 . 05:54:34.000 --> 05:54:37.000 . 05:54:37.000 --> 05:54:40.000 . 05:54:40.000 --> 05:54:43.000 . 05:54:43.000 --> 05:54:46.000 . 05:54:46.000 --> 05:54:49.000 . 05:54:49.000 --> 05:54:52.000 . 05:54:52.000 --> 05:54:55.000 . 05:54:55.000 --> 05:54:58.000 . 05:54:58.000 --> 05:55:01.000 . 05:55:01.000 --> 05:55:04.000 . 05:55:04.000 --> 05:55:07.000 . 05:55:07.000 --> 05:55:10.000 . 05:55:10.000 --> 05:55:13.000 . 05:55:13.000 --> 05:55:16.000 . 05:55:16.000 --> 05:55:19.000 . 05:55:19.000 --> 05:55:22.000 . 05:55:22.000 --> 05:55:25.000 . 05:55:25.000 --> 05:55:28.000 . 05:55:28.000 --> 05:55:31.000 . 05:55:31.000 --> 05:55:34.000 . 05:55:34.000 --> 05:55:37.000 . 05:55:37.000 --> 05:55:40.000 . 05:55:40.000 --> 05:55:43.000 . 05:55:43.000 --> 05:55:46.000 . 05:55:46.000 --> 05:55:49.000 . 05:55:49.000 --> 05:55:52.000 . 05:55:52.000 --> 05:55:55.000 . 05:55:55.000 --> 05:55:58.000 . 05:55:58.000 --> 05:56:01.000 . 05:56:01.000 --> 05:56:04.000 . 05:56:04.000 --> 05:56:07.000 . 05:56:07.000 --> 05:56:10.000 . 05:56:10.000 --> 05:56:13.000 . 05:56:13.000 --> 05:56:16.000 . 05:56:16.000 --> 05:56:19.000 . 05:56:19.000 --> 05:56:22.000 . 05:56:22.000 --> 05:56:25.000 . 05:56:25.000 --> 05:56:28.000 . 05:56:28.000 --> 05:56:31.000 . 05:56:31.000 --> 05:56:34.000 . 05:56:34.000 --> 05:56:37.000 . 05:56:37.000 --> 05:56:40.000 . 05:56:40.000 --> 05:56:43.000 . 05:56:43.000 --> 05:56:46.000 . 05:56:46.000 --> 05:56:49.000 . 05:56:49.000 --> 05:56:52.000 . 05:56:52.000 --> 05:56:55.000 . 05:56:55.000 --> 05:56:58.000 . 05:56:58.000 --> 05:57:01.000 . 05:57:01.000 --> 05:57:04.000 . 05:57:04.000 --> 05:57:07.000 . 05:57:07.000 --> 05:57:10.000 . 05:57:10.000 --> 05:57:13.000 . 05:57:13.000 --> 05:57:16.000 . 05:57:16.000 --> 05:57:19.000 . 05:57:19.000 --> 05:57:22.000 . 05:57:22.000 --> 05:57:25.000 . 05:57:25.000 --> 05:57:28.000 . 05:57:28.000 --> 05:57:31.000 . 05:57:31.000 --> 05:57:34.000 . 05:57:34.000 --> 05:57:37.000 . 05:57:37.000 --> 05:57:40.000 . 05:57:40.000 --> 05:57:43.000 . 05:57:43.000 --> 05:57:46.000 . 05:57:46.000 --> 05:57:49.000 . 05:57:49.000 --> 05:57:52.000 . 05:57:52.000 --> 05:57:55.000 . 05:57:55.000 --> 05:57:58.000 . 05:57:58.000 --> 05:58:01.000 . 05:58:01.000 --> 05:58:04.000 . 05:58:04.000 --> 05:58:07.000 . 05:58:07.000 --> 05:58:10.000 . 05:58:10.000 --> 05:58:13.000 . 05:58:13.000 --> 05:58:16.000 . 05:58:16.000 --> 05:58:19.000 . 05:58:19.000 --> 05:58:22.000 . 05:58:22.000 --> 05:58:25.000 . 05:58:25.000 --> 05:58:28.000 . 05:58:28.000 --> 05:58:31.000 . 05:58:31.000 --> 05:58:34.000 . 05:58:34.000 --> 05:58:37.000 . 05:58:37.000 --> 05:58:40.000 . 05:58:40.000 --> 05:58:43.000 . 05:58:43.000 --> 05:58:46.000 . 05:58:46.000 --> 05:58:49.000 . 05:58:49.000 --> 05:58:52.000 . 05:58:52.000 --> 05:58:55.000 . 05:58:55.000 --> 05:58:58.000 . 05:58:58.000 --> 05:59:01.000 . 05:59:01.000 --> 05:59:04.000 . 05:59:04.000 --> 05:59:07.000 . 05:59:07.000 --> 05:59:10.000 . 05:59:10.000 --> 05:59:13.000 . 05:59:13.000 --> 05:59:16.000 . 05:59:16.000 --> 05:59:19.000 . 05:59:19.000 --> 05:59:22.000 . 05:59:22.000 --> 05:59:25.000 . 05:59:25.000 --> 05:59:28.000 . 05:59:28.000 --> 05:59:31.000 . 05:59:31.000 --> 05:59:34.000 . 05:59:34.000 --> 05:59:37.000 . 05:59:37.000 --> 05:59:40.000 . 05:59:42.000 --> 05:59:45.000 . 05:59:45.000 --> 05:59:48.000 . 05:59:48.000 --> 05:59:51.000 . 05:59:51.000 --> 05:59:54.000 . 05:59:54.000 --> 05:59:57.000 . 05:59:57.000 --> 06:00:00.000 . 06:00:00.000 --> 06:00:03.000 . 06:00:03.000 --> 06:00:06.000 . 06:00:06.000 --> 06:00:09.000 . 06:00:09.000 --> 06:00:12.000 . 06:00:12.000 --> 06:00:15.000 . 06:00:15.000 --> 06:00:18.000 . 06:00:18.000 --> 06:00:21.000 . 06:00:21.000 --> 06:00:24.000 . 06:00:24.000 --> 06:00:27.000 . 06:00:27.000 --> 06:00:30.000 . 06:00:30.000 --> 06:00:33.000 . 06:00:33.000 --> 06:00:36.000 . 06:00:36.000 --> 06:00:39.000 . 06:00:39.000 --> 06:00:42.000 . 06:00:42.000 --> 06:00:45.000 . 06:00:45.000 --> 06:00:48.000 . 06:00:48.000 --> 06:00:51.000 . 06:00:51.000 --> 06:00:54.000 . 06:00:54.000 --> 06:00:57.000 . 06:00:57.000 --> 06:01:00.000 . 06:01:00.000 --> 06:01:03.000 . 06:01:03.000 --> 06:01:06.000 . 06:01:06.000 --> 06:01:09.000 . 06:01:09.000 --> 06:01:12.000 . 06:01:12.000 --> 06:01:15.000 . 06:01:15.000 --> 06:01:18.000 . 06:01:18.000 --> 06:01:21.000 . 06:01:21.000 --> 06:01:24.000 . 06:01:24.000 --> 06:01:27.000 . 06:01:27.000 --> 06:01:30.000 . 06:01:30.000 --> 06:01:33.000 . 06:01:33.000 --> 06:01:36.000 . 06:01:36.000 --> 06:01:39.000 . 06:01:39.000 --> 06:01:42.000 . 06:01:42.000 --> 06:01:45.000 . 06:01:45.000 --> 06:01:48.000 . 06:01:48.000 --> 06:01:51.000 . 06:01:51.000 --> 06:01:54.000 . 06:01:54.000 --> 06:01:57.000 . 06:01:57.000 --> 06:02:00.000 . 06:02:00.000 --> 06:02:03.000 . 06:02:03.000 --> 06:02:06.000 . 06:02:06.000 --> 06:02:09.000 . 06:02:09.000 --> 06:02:12.000 . 06:02:12.000 --> 06:02:15.000 . 06:02:15.000 --> 06:02:18.000 . 06:02:18.000 --> 06:02:21.000 . 06:02:21.000 --> 06:02:24.000 . 06:02:24.000 --> 06:02:27.000 . 06:02:27.000 --> 06:02:30.000 . 06:02:30.000 --> 06:02:33.000 . 06:02:33.000 --> 06:02:36.000 . 06:02:36.000 --> 06:02:39.000 . 06:02:39.000 --> 06:02:42.000 . 06:02:42.000 --> 06:02:45.000 . 06:02:45.000 --> 06:02:48.000 . 06:02:48.000 --> 06:02:51.000 . 06:02:51.000 --> 06:02:54.000 . 06:02:54.000 --> 06:02:57.000 . 06:02:57.000 --> 06:03:00.000 . 06:03:00.000 --> 06:03:03.000 . 06:03:03.000 --> 06:03:06.000 . 06:03:06.000 --> 06:03:09.000 . 06:03:09.000 --> 06:03:12.000 . 06:03:12.000 --> 06:03:15.000 . 06:03:15.000 --> 06:03:18.000 . 06:03:18.000 --> 06:03:21.000 . 06:03:21.000 --> 06:03:24.000 . 06:03:24.000 --> 06:03:27.000 . 06:03:27.000 --> 06:03:30.000 . 06:03:30.000 --> 06:03:33.000 . 06:03:33.000 --> 06:03:36.000 . 06:03:36.000 --> 06:03:39.000 . 06:03:39.000 --> 06:03:42.000 . 06:03:42.000 --> 06:03:45.000 . 06:03:45.000 --> 06:03:48.000 . 06:03:48.000 --> 06:03:51.000 . 06:03:51.000 --> 06:03:54.000 . 06:03:54.000 --> 06:03:57.000 . 06:03:57.000 --> 06:04:00.000 . 06:04:00.000 --> 06:04:03.000 . 06:04:03.000 --> 06:04:06.000 . 06:04:06.000 --> 06:04:09.000 . 06:04:09.000 --> 06:04:12.000 . 06:04:12.000 --> 06:04:15.000 . 06:04:15.000 --> 06:04:18.000 . 06:04:18.000 --> 06:04:21.000 . 06:04:21.000 --> 06:04:24.000 . 06:04:24.000 --> 06:04:27.000 . 06:04:27.000 --> 06:04:30.000 . 06:04:30.000 --> 06:04:33.000 . 06:04:33.000 --> 06:04:36.000 . 06:04:36.000 --> 06:04:39.000 . 06:04:39.000 --> 06:04:42.000 . 06:04:42.000 --> 06:04:45.000 . 06:04:45.000 --> 06:04:48.000 . 06:04:48.000 --> 06:04:51.000 . 06:04:51.000 --> 06:04:54.000 . 06:04:54.000 --> 06:04:57.000 . 06:04:57.000 --> 06:05:00.000 . 06:05:00.000 --> 06:05:03.000 . 06:05:03.000 --> 06:05:06.000 . 06:05:06.000 --> 06:05:09.000 . 06:05:09.000 --> 06:05:12.000 . 06:05:12.000 --> 06:05:15.000 . 06:05:15.000 --> 06:05:18.000 . 06:05:18.000 --> 06:05:21.000 . 06:05:21.000 --> 06:05:24.000 . 06:05:24.000 --> 06:05:27.000 . 06:05:27.000 --> 06:05:30.000 . 06:05:30.000 --> 06:05:33.000 . 06:05:33.000 --> 06:05:36.000 . 06:05:36.000 --> 06:05:39.000 . 06:05:39.000 --> 06:05:42.000 . 06:05:42.000 --> 06:05:45.000 . 06:05:45.000 --> 06:05:48.000 . 06:05:48.000 --> 06:05:51.000 . 06:05:51.000 --> 06:05:54.000 . 06:05:54.000 --> 06:05:57.000 . 06:05:57.000 --> 06:06:00.000 . 06:06:02.000 --> 06:06:05.000 . 06:06:05.000 --> 06:06:08.000 . 06:06:08.000 --> 06:06:11.000 . 06:06:11.000 --> 06:06:14.000 . 06:06:14.000 --> 06:06:17.000 . 06:06:17.000 --> 06:06:20.000 . 06:06:20.000 --> 06:06:23.000 . 06:06:23.000 --> 06:06:26.000 . 06:06:45.000 --> 06:06:48.000 . 06:06:48.000 --> 06:06:51.000 . 06:06:51.000 --> 06:06:54.000 . 06:06:54.000 --> 06:06:57.000 . 06:06:57.000 --> 06:07:00.000 . 06:07:00.000 --> 06:07:03.000 . 06:07:03.000 --> 06:07:06.000 . 06:07:06.000 --> 06:07:09.000 . 06:07:09.000 --> 06:07:12.000 . 06:07:12.000 --> 06:07:15.000 . 06:07:15.000 --> 06:07:18.000 . 06:07:18.000 --> 06:07:21.000 . 06:07:21.000 --> 06:07:24.000 . 06:07:24.000 --> 06:07:27.000 . 06:07:27.000 --> 06:07:30.000 . 06:07:30.000 --> 06:07:33.000 . 06:07:33.000 --> 06:07:36.000 . 06:07:36.000 --> 06:07:39.000 . 06:07:39.000 --> 06:07:42.000 . 06:07:42.000 --> 06:07:45.000 . 06:07:45.000 --> 06:07:48.000 . 06:07:48.000 --> 06:07:51.000 . 06:07:51.000 --> 06:07:54.000 . 06:07:54.000 --> 06:07:57.000 . 06:07:57.000 --> 06:08:00.000 . 06:08:00.000 --> 06:08:03.000 . 06:08:03.000 --> 06:08:06.000 . 06:08:06.000 --> 06:08:09.000 . 06:08:09.000 --> 06:08:12.000 . 06:08:12.000 --> 06:08:15.000 . 06:08:15.000 --> 06:08:18.000 . 06:08:18.000 --> 06:08:21.000 . 06:08:21.000 --> 06:08:24.000 . 06:08:24.000 --> 06:08:27.000 . 06:08:27.000 --> 06:08:30.000 . 06:08:30.000 --> 06:08:33.000 . 06:08:33.000 --> 06:08:36.000 . 06:08:36.000 --> 06:08:39.000 . 06:08:39.000 --> 06:08:42.000 . 06:08:42.000 --> 06:08:45.000 . 06:08:45.000 --> 06:08:48.000 . 06:08:48.000 --> 06:08:51.000 . 06:08:51.000 --> 06:08:54.000 . 06:08:54.000 --> 06:08:57.000 . 06:08:57.000 --> 06:09:00.000 . 06:09:00.000 --> 06:09:03.000 . 06:09:03.000 --> 06:09:06.000 . 06:09:06.000 --> 06:09:09.000 . 06:09:31.000 --> 06:09:34.000 Let's see. 06:09:34.000 --> 06:09:37.000 From one of these 06:09:37.000 --> 06:09:40.000 . 06:09:40.000 --> 06:09:43.000 Where is this running? 06:09:43.000 --> 06:09:46.000 . 06:09:46.000 --> 06:09:49.000 . 06:09:49.000 --> 06:09:52.000 . 06:09:52.000 --> 06:09:55.000 . 06:09:55.000 --> 06:09:58.000 . 06:09:58.000 --> 06:10:01.000 . 06:10:01.000 --> 06:10:04.000 . 06:10:10.000 --> 06:10:13.000 . 06:10:13.000 --> 06:10:16.000 . 06:10:16.000 --> 06:10:19.000 . 06:10:19.000 --> 06:10:22.000 . 06:10:22.000 --> 06:10:25.000 . 06:10:25.000 --> 06:10:28.000 . 06:10:28.000 --> 06:10:31.000 . 06:10:31.000 --> 06:10:34.000 . 06:10:34.000 --> 06:10:37.000 . 06:10:37.000 --> 06:10:40.000 . 06:10:40.000 --> 06:10:43.000 . 06:10:43.000 --> 06:10:46.000 . 06:10:46.000 --> 06:10:49.000 . 06:10:49.000 --> 06:10:52.000 . 06:10:52.000 --> 06:10:55.000 . 06:10:55.000 --> 06:10:58.000 . 06:10:58.000 --> 06:11:01.000 . 06:11:01.000 --> 06:11:04.000 . 06:11:04.000 --> 06:11:07.000 . 06:11:07.000 --> 06:11:10.000 . 06:11:10.000 --> 06:11:13.000 . 06:11:13.000 --> 06:11:16.000 . 06:11:16.000 --> 06:11:19.000 . 06:11:19.000 --> 06:11:22.000 . 06:11:22.000 --> 06:11:25.000 . 06:11:25.000 --> 06:11:28.000 . 06:11:28.000 --> 06:11:31.000 . 06:11:31.000 --> 06:11:34.000 . 06:11:34.000 --> 06:11:37.000 . 06:11:37.000 --> 06:11:40.000 . 06:11:40.000 --> 06:11:43.000 . 06:11:43.000 --> 06:11:46.000 . 06:11:46.000 --> 06:11:49.000 . 06:11:49.000 --> 06:11:52.000 . 06:11:52.000 --> 06:11:55.000 . 06:11:55.000 --> 06:11:58.000 . 06:11:58.000 --> 06:12:01.000 . 06:12:01.000 --> 06:12:04.000 . 06:12:04.000 --> 06:12:07.000 . 06:12:07.000 --> 06:12:10.000 . 06:12:10.000 --> 06:12:13.000 . 06:12:13.000 --> 06:12:16.000 . 06:12:16.000 --> 06:12:19.000 . 06:12:19.000 --> 06:12:22.000 . 06:12:22.000 --> 06:12:25.000 . 06:12:25.000 --> 06:12:28.000 . 06:12:28.000 --> 06:12:31.000 . 06:12:31.000 --> 06:12:34.000 . 06:12:34.000 --> 06:12:37.000 . 06:12:37.000 --> 06:12:40.000 . 06:12:40.000 --> 06:12:43.000 . 06:12:43.000 --> 06:12:46.000 . 06:12:46.000 --> 06:12:49.000 . 06:12:49.000 --> 06:12:52.000 . 06:12:52.000 --> 06:12:55.000 . 06:12:55.000 --> 06:12:58.000 . 06:12:58.000 --> 06:13:01.000 . 06:13:01.000 --> 06:13:04.000 . 06:13:04.000 --> 06:13:07.000 . 06:13:07.000 --> 06:13:10.000 . 06:13:10.000 --> 06:13:13.000 . 06:13:13.000 --> 06:13:16.000 . 06:13:16.000 --> 06:13:19.000 . 06:13:19.000 --> 06:13:22.000 . 06:13:22.000 --> 06:13:25.000 . 06:13:25.000 --> 06:13:28.000 . 06:13:28.000 --> 06:13:31.000 . 06:13:31.000 --> 06:13:34.000 . 06:13:34.000 --> 06:13:37.000 . 06:13:37.000 --> 06:13:40.000 . 06:13:40.000 --> 06:13:43.000 . 06:13:43.000 --> 06:13:46.000 . 06:13:46.000 --> 06:13:49.000 . 06:13:49.000 --> 06:13:52.000 . 06:13:52.000 --> 06:13:55.000 . 06:13:55.000 --> 06:13:58.000 . 06:13:58.000 --> 06:14:01.000 . 06:14:01.000 --> 06:14:04.000 . 06:14:04.000 --> 06:14:07.000 . 06:14:07.000 --> 06:14:10.000 . 06:14:10.000 --> 06:14:13.000 . 06:14:13.000 --> 06:14:16.000 . 06:14:16.000 --> 06:14:19.000 . 06:14:19.000 --> 06:14:22.000 . 06:14:22.000 --> 06:14:25.000 . 06:14:25.000 --> 06:14:28.000 . 06:14:28.000 --> 06:14:31.000 . 06:14:31.000 --> 06:14:34.000 . 06:14:34.000 --> 06:14:37.000 . 06:14:37.000 --> 06:14:40.000 . 06:14:40.000 --> 06:14:43.000 . 06:14:43.000 --> 06:14:46.000 . 06:14:46.000 --> 06:14:49.000 . 06:14:49.000 --> 06:14:52.000 . 06:14:52.000 --> 06:14:55.000 . 06:14:55.000 --> 06:14:58.000 . 06:14:58.000 --> 06:15:01.000 . 06:15:01.000 --> 06:15:04.000 . 06:15:04.000 --> 06:15:07.000 . 06:15:07.000 --> 06:15:10.000 . 06:15:10.000 --> 06:15:13.000 . 06:15:13.000 --> 06:15:16.000 . 06:15:16.000 --> 06:15:19.000 . 06:15:19.000 --> 06:15:22.000 . 06:15:22.000 --> 06:15:25.000 . 06:15:25.000 --> 06:15:28.000 . 06:15:28.000 --> 06:15:31.000 . 06:15:31.000 --> 06:15:34.000 . 06:15:34.000 --> 06:15:37.000 . 06:15:37.000 --> 06:15:40.000 . 06:15:40.000 --> 06:15:43.000 . 06:15:43.000 --> 06:15:46.000 . 06:15:46.000 --> 06:15:49.000 . 06:15:49.000 --> 06:15:52.000 . 06:15:52.000 --> 06:15:55.000 . 06:15:55.000 --> 06:15:58.000 . 06:15:58.000 --> 06:16:01.000 . 06:16:01.000 --> 06:16:04.000 . 06:16:04.000 --> 06:16:07.000 . 06:16:07.000 --> 06:16:10.000 . 06:16:10.000 --> 06:16:13.000 . 06:16:13.000 --> 06:16:16.000 . 06:16:16.000 --> 06:16:19.000 . 06:16:19.000 --> 06:16:22.000 . 06:16:22.000 --> 06:16:25.000 . 06:16:25.000 --> 06:16:28.000 . 06:16:28.000 --> 06:16:31.000 . 06:16:31.000 --> 06:16:34.000 . 06:16:34.000 --> 06:16:37.000 . 06:16:37.000 --> 06:16:40.000 . 06:16:40.000 --> 06:16:43.000 . 06:16:43.000 --> 06:16:46.000 . 06:16:46.000 --> 06:16:49.000 . 06:16:49.000 --> 06:16:52.000 . 06:16:52.000 --> 06:16:55.000 . 06:16:55.000 --> 06:16:58.000 . 06:16:58.000 --> 06:17:01.000 . 06:17:01.000 --> 06:17:04.000 . 06:17:04.000 --> 06:17:07.000 . 06:17:07.000 --> 06:17:10.000 . 06:17:10.000 --> 06:17:13.000 . 06:17:13.000 --> 06:17:16.000 . 06:17:16.000 --> 06:17:19.000 . 06:17:19.000 --> 06:17:22.000 . 06:17:22.000 --> 06:17:25.000 . 06:17:25.000 --> 06:17:28.000 . 06:17:28.000 --> 06:17:31.000 . 06:17:31.000 --> 06:17:34.000 . 06:17:34.000 --> 06:17:37.000 . 06:17:37.000 --> 06:17:40.000 . 06:17:40.000 --> 06:17:43.000 . 06:17:43.000 --> 06:17:46.000 . 06:17:46.000 --> 06:17:49.000 . 06:17:49.000 --> 06:17:52.000 . 06:17:52.000 --> 06:17:55.000 . 06:17:55.000 --> 06:17:58.000 . 06:17:58.000 --> 06:18:01.000 . 06:18:01.000 --> 06:18:04.000 . 06:18:04.000 --> 06:18:07.000 . 06:18:07.000 --> 06:18:10.000 . 06:18:10.000 --> 06:18:13.000 . 06:18:13.000 --> 06:18:16.000 . 06:18:16.000 --> 06:18:19.000 . 06:18:19.000 --> 06:18:22.000 . 06:18:22.000 --> 06:18:25.000 . 06:18:25.000 --> 06:18:26.000 .