Again, welcome you all to this wonderful event, Kubernetes Community Days, Chennai. We are super excited to be here. My name is Yunati Meshralong with Akshath Khanna. We'll be talking about open source and Kubernetes for students. We are working as an MTS intern at VMware and final year student pursuing BTech in computer science from SRM University, Chennai. These are the important topics that we'll discuss in this session. Since we cannot cover every topic about open source and Kubernetes due to limited time, we'll still try our best to cover every important concept here. So let's begin. First of all, what is open source? Open source is a term that originally referred to open source software. Open source software is a code that is designed to be publicly accessible. That is anyone can see, modify and distribute the code as they see it. Open source software is developed in a decentralized and collaborative way. Relying on peer review and community production. Now comes the most exciting part. How to get started with open source? So these are the few simple steps by which we can get started in contributing to open source. First of all, we have to choose a programming language of your choice. And then we have to search for beginner-friendly projects from GitHub to get started. First of all, suppose I want to contribute in JavaScript. So I have to search for any project that uses JavaScript. Then I have to understand the project by looking at the docs. There is a contributing guide or you can say, read me file in which the list of all the steps to get started with that project is listed there. Then by reading that, you can try to run the project on your local machine or VM. Then you can find the issue on the GitHub from the issue tab on that project to focus on the good first issue because you are a beginner. Then you have to focus on the good first issue from the issue tab. Then suppose you find a bug or you want to make an enhancement in that project. So you can make that. And by doing that, you have to fork that repo and then implement that feature or bug. You have to fork the repo and then you have to code it in your local machine and then you have to push it to the repo. Then you have to raise a pull request or PR and then wait for the maintainers to review the PR. And if your request is valid and is accepted by the maintainers, they'll merge your pull request. And then you have made your first contribution to open source. Now we look into the open source communities and events. These all are the open source communities present worldwide where you can connect, contribute and learn a lot about open source projects. These are the communities that are super active and that events are conducted every year on a specific time. Suppose there's digital ocean. They conduct Hectober Fest every year in the month of October where you can contribute to open source. There is Google Summer of Code in which many startups are there in which you can contribute. There is Major League Hacking. They conduct a lot of hackathons every now and then. There's Outreachy, Girl's Grip Summer of Code, JNX Kernel mentorship program. So these are some open source communities and events by which you can get started and contribute to open source and meet a lot of people who are contributing in open source communities. Now that you have learned about open source communities and events, we'll see how to get involved in Kubernetes community and SIG. So what is SIG? SIG stands for Special Interest Groups. It is a group of contributors who maintain and publish the Kubernetes components and the website. Getting involved with SIG is a great way of contributing in the Kubernetes to have a large impact on Kubernetes projects. So head over to this website, kubernetes.io slash community to learn more about Kubernetes community. Now we'll see the contributor guide. First, we'll see the prerequisites. You have to create a GitHub account and then sign the CLA. Signing the CLA is an automated step done by the GitHub bot to every new contributor. Then you have to read the code of conduct because there are many important terms mentioned there. Then you have to set up your developer environment to start contributing. Now your first contribution. You have to find something to work on related to your interest. Suppose in Kubernetes, I want to contribute in container D or C&I plugins. Then you can go to that repo and then you can start looking in the good first issue label. The good first issue can be like enhancement in the documents or any small feature that you want to implement. So you have to look for good first issue label. As shown in the picture, there are good first issue label put in many of the issues. So by clicking in any issue, you can assign that to yourself. Going to that issue and then in the comments section, you can type slash assign. So the GitHub bot will assign that issue to you so that you can start working on it. Then you can contribute to special interest group that is SIG. Under SIG, there are many projects that is SIG, apps, CLI, multi clusters, storage and windows. And there are many sub projects under that. So you can contribute here also. So this was all about Kubernetes and how to get involved in Kubernetes community and SIG. Now Akshay will take you forward to know what is Kubernetes and what are Kubernetes components. Hello, everyone. This is Akshay. I hope you are enjoying the session today. So after learning about open source, now it's time to get into Kubernetes. So Kubernetes is a platform and a container orchestration tool which is used for automating deployments, scaling and the operation of your application containers. And it is also portable, extensible and is open source and have a community of great contributors around the world. So it has a rapid growing ecosystem and Kubernetes services support tools are widely available these days. So Kubernetes is a container orchestration tool as I told. So we can automate deployment, scaling and the operation of the application in the cluster. And it was open source by Google in 2014. Before that it was internally used by Google for many years and it supports various platform like vSphere, Azure, Google Cloud and AWS, et cetera. And now next thing comes is what is a pod and a node? So pod is the smallest or the most basic deployable object in a Kubernetes cluster. A pod represents a single instance of a running process in a cluster. Pod can have one or multiple containers but in regular cases it is only one Docker container. Then comes the node. So node is a worker machine in Kubernetes that may be a virtual or a physical machine depending on your cluster. Each node is managed by the control plane. A node can have multiple pods and the Kubernetes control plane automatically handles the scheduling and auto healing and these cases of the pods across the cluster. So here comes the diagram. This diagram speaks 1000 words. In this, first we have a node, this is a worker node. Inside the worker node we have two components, Kubelet and Kubroxy. So this is a diagram which is, these are the basic components in a Kubernetes cluster. So as I told in the worker node we have Kubelet and Kubroxy and also the container D which is the default runtime of the Kubernetes that is running inside a node, worker node. So here in this diagram we have three worker nodes having the respective Kubelet and Kubroxy and all the requests are handled in a control plane that is depicted here. All the requests that are coming from the nodes are received by API server. So this here is the API server which receives all the requests and controls and sends back the request to the nodes. So we have the API server which interacts with all of the nodes in the Kubernetes cluster. Then we have a scheduler. So scheduler is used for scheduling of the nodes and keeping a track of the nodes that are running. And also we have ETCD that is a key value pair store which stores the current state of the Kubernetes cluster or the nodes that are running. So in ETCD it is a key value store where we usually store the state of the cluster. And then we have a controller manager which controls all the things inside the Kubernetes cluster. We also have a cloud controller manager which receives the request from the cloud provider API through cloud provider APIs and it controls the Kubernetes cluster. So we have two components. First is the control plane and the worker nodes. Now it's time for a quick demo. So let's get started. As we learned about Kubernetes and Kubernetes concepts along with the Kubernetes components how these components interact with each other. So now it's time to get our hands dirty with Kubernetes cluster. So I'll walk you through a step-by-step guide how you can create your own Kubernetes cluster on your local machine and also deploy a simple application in that cluster. So like setting up local Kubernetes clusters is incredibly simple these days. All thanks to tools like Minikube, kind cluster and even Docker provides Kubernetes nowadays. So but in this tutorial we'll be following kind because like it is the fastest and with minimal dependencies we can set up Kubernetes cluster on a local system. We don't require any kind of clouds like GCP as your AWS. We just need a operating system and we can have our Kubernetes cluster up and running in our local machine. So before moving forward we need to have some install or prerequisites that should be installed on our system. So let's go ahead and see that. So initially you need Docker desktop so you can go ahead and download Docker desktop from their official website. So if you are using a Darwin based operating system then you can download Docker desktop for Mac and similarly followed by Docker desktop for Windows or and if you are a Linux user then go ahead and download Docker for Linux. You can download the Docker from their official website and the next tool that we require is Qubectl. So this is the command line tool that we use to send commands to our Kubernetes cluster and run commands on our Kubernetes cluster. So you can simply search install Qubectl on Google and then you can follow the steps that are shown in this documentation of Kubernetes. So again, based on your operating system you can go ahead and download these and install Qubectl command line on your system. And the third dependency or prerequisite that we need to have is the kind. So in all these three, if you are using Mac you can directly go ahead and install these three of them using Brue. You can simply like Brue install Docker Brue install Qubectl and also like Brue install kind simply and if you are a Windows user you can install kind using Chocolaty package manager just write Choco install kind. So these are three prerequisites that we require before starting with creating our own cluster Kubernetes cluster in our local system. So please ensure that Docker desktop is running in your system. So let's check that out. Docker stop. To check that Docker is running or not we need to run the command Docker PS and we get a empty list that means no Docker container is currently running. So once all these components are installed we are ready for local deployment of local Kubernetes cluster. So ensure we have also ensured that Docker is running in our system. After this we need a simple configuration file that is kind.config.ml file. So this is a configuration file in which we'll specify few of the small things to create our Kubernetes cluster. So this is the configuration file here. In this we are specifying the kind as cluster. So this is a cluster configuration and the API version that we have to follow. So it is like kind.kx.io slash v1 alpha 4. So this is the version of the kind cluster that we are following. And inside the nodes we have to specify the role as control plane and these are few of the extra port mappings that we have done. So we are using container port 3080 and the host port as 80. So this is a port. So this is optional. I have provided the listening address. You can also provide this or this is an optional step. So you can omit this. By default it will take <IP_ADDRESS>. And the protocol that we are following is TCP. So you can save this file, your configuration file as kind.config.ml. Then to start your kind cluster you have to run the command kind create cluster. Then followed by a name. The name will be KCD cluster. Then we have to give the configuration. So the flag config followed by the name of the file that is kind.configure.ml. I'll hit enter to run this command. And we can see that kind is creating a node here, preparing nodes and writing the configuration, starting control plane. We can see the status, right? So we are getting the output that cluster is being created. We need to wait for some time. Okay. Now we got the response that your cluster has been created successfully. And after this we have finally fired up our cluster, Kubernetes cluster. Now we have a Kubernetes cluster running in our system. And you can check that by using QCTL get all. So we can see a default service Kubernetes that is running here. And this means that we have successfully created our Kubernetes cluster. Now that the cluster is up and running, now we can run the process or deploy applications on the Kubernetes cluster. So we'll be deploying some simple web server over our Kubernetes cluster. So Kubernetes describe all the workloads through a simple ml file. So ml called a manifest. So in that manifest or the ml file we have all the configuration to run a deployment in a Kubernetes cluster. So yeah, so we'll quickly create that file. So that file is known as application underscore deploy dot ml. And here's the file. So in this we have defined the API version as F slash V1 according to the version of our app that we are deploying. And the kind is the deployment. And we can also give the name. So the name will be KCD app. And in the spec, we have to specify a few things like replicas, how many replicas do we want? Like it can be one to as many as you want. And also the selectors, like we have brought the match table here. And also we can provide a template, all the metadata and all those things. So and the important part here is the spec. So here we have to define the container that we want to deploy. So we are deploying a engine X image inside our Kubernetes cluster. So we need, we can save this configuration and now let's go to our terminal back and we'll write Qubectl apply dash F application deploy dot ml. Okay, so our deployment is created. It gives me the output that the deployment is created. So this deploy, this is a engine X Docker container that is running the process on the cluster. And we can confirm it by running Qubectl get pods. So this is the port that is running. So this is our KCD app and our container. So we can check the status. Okay, it is still not ready. And we can see the status that container creating. Let's run Qubectl get pods again and check. Yeah, now you can check the status. It is ready now and the status is running. So what actually happened? So when you create a deployment in Kubernetes, and you also specify number of replicas that we saw in the configuration file. Yeah, so this is the number of replicas that we want to create. And you want to set, you have already, we have already set the manifest file, which is this one. So each replica copies the container that are in the spec. So we have already defined the container and engine X and this running instance is called a pod. Okay, a pod can have one or more containers running in a logical group. And also once we init the containers, so it runs a process on each part. So in this instance, if we are running an engine X of our own inside the Kubernetes cluster. So one is enough so we don't need more of them. So you can write Qubectl logs. And you can paste this name here to check the logs. So here we got the logs from our node. So these are a few of the logs. The process is running now. So the next question comes to our mind is how a user can visit the page, how we can see the deployment of the server that is running. So Qubectl offers a powerful service which will route your connections to the containers which are running your server. So to do that, we have to make a service in that we can directly pass the request to the pods. Inside the container where it is running. So to do that, we have to make some changes in the configuration file. So this is called Exposing Expose the service. So the service will be export and that can be accessible through a port in the local system. So we need to make some changes here. So we'll specify ports, container port as 80. And the name as engine X. So let's save it and run it again. Qubectl apply F and followed by the file name. So the deployment is configured. Let's check the pods, Qubectl get pods. And we can see the pod is running. Once we have done this, we can see the pod is running and it is updated. Now you can see the age here. So this means that the deployment is updated here with the new configuration. Once we have made the changes in the configuration of our app, now we have to create a service through which are, which will be running in the givenities cluster through which we can expose our port and a user can interact with the application of the web server. So for doing that, we have to create a service. In order to create a service, we have to create again a configuration file that is application service.eml file. So this is the service.eml file in which we have given the ABI version as V1 and the kind is the service. So here we have given service. The name that can be KCD service because our app is KCD app. So we have given the name convention, followed the name convention as KCD service. And then in the spec, we have to give node port and also specify a few of the protocols here like app here should be KCD app. Yeah, so the app should be KCD app and also we have to give here also it should be KCD app and yeah. So this is fine. And here we have given the selector as KCD app and the protocol that should be followed is TCP and the target port is 8080 because we have already exposed that in the app configuration file and also the port or the Docker port that is running which is this one. We can save this configuration file and let's apply this again. So kubectl apply dash f and the application deployment dot eml. Sorry, not deploy, it's service dot eml. And when I run this, the KCD service is created. So we can check that by running kubectl get services. Yeah, so this is the KCD service that we have created now which is of the type node port and this is the default Kubernetes service that is running. So this is the KCD service that we have created just now. Now let's check in our browser. We'll go to the browser and check local host and we can see welcome to NGNX. So our NGNX server is running. Now at the local host, we can see that we have a NGNX deployment up and running. But now what? Now we want a custom page of our own design. So for doing that, we are creating a resource. So these resources are useful for passing config files to process running inside the port. So for our instance, we have to transfer our index dot HTML file inside our NGNX. So in NGNX, the static files are inside slash user slash NGNX slash HTML. So all the HTML files are there. So let's check that. So here we have an index dot HTML file. And this is our sample HTML file that we'll be displaying there in our web server. So now I'll be running kubectl create config map index dot HTML dash from file index dot HTML. And we can see the config map is created here. We got the response. Now let's check that kubectl get config maps. I got my HTML file listed here. So index dot HTML. Now once we have created the config map, after creating the config map, we have to make some changes in the application underscore deploy dot ml here. So in previous step, we wrote it here. We have specified the containers. So after specifying the containers, we have to write volume mounts. In volume mounts, we have to give the name as, we can give the name like I have given here HTML content and the mount path. So this mount path is the path inside our pod or the container where exactly our static files will be. So that is, this is the path which Nginx uses to read file from. So the read only is true. And we also have to provide the volume. So the volume, we can give the name as HTML content and the config map that we created in the previous step. So config map we have provided here is index dot HTML. We can save this configuration, go back to our terminal and I'll run the command kubectl apply dash f and followed by the configuration file. Let's wait for some time. And we saw the output as deployment is configured. Now let's check kubectl get pods. And we can see the status running and 13 seconds. This means that our application is updated. Now let's go back here and run the local host. So now we got our awesome output that on our page. This is a beautiful looking HTML page, communities, communities, Chennai. Thank you. I hope you learned something new today. So thank you for attending the session. Thank you, bye-bye.


Can I teach English abroad without a work visa? The rules and regulations for living and working overseas vary hugely from one country to the next. Securing a work visa that allows you to teach English as a foreign language legally can be relatively straightforward in some countries, while in others it can be almost impossible. That said, in many countries where work visas are hard to come by, it can often be common practice for teachers to simply work on a basic tourist visa or with no visa at all. In some countries there is a clear process for foreigners to obtain a work visa that provides full legal status to live and work. In others, the process can be expensive and time-consuming or simply non-existent. However, as the demand for English language teachers is so high in many parts of the world, the necessity of a work visa is sometimes ignored. The fact is, many thousands of people work as English language teachers in countries all over the world without a work visa. Europe. In countries such as Spain and Italy, both extremely popular destinations, it is common for Americans and other nationalities to enter the country on a tourist visa and immediately start working as an English language teacher. A tourist visa in these countries is typically valid for 90 days and cannot be renewed, so after three months, many teachers simply overstated visa and continue working. Elsewhere in Europe, countries such as Germany, Czech Republic, Turkey and Russia all have a clear process for foreign teachers to obtain a work visa. Those who apply for government-run placement programs in countries such as France or Spain will also receive full legal status via a work permit. Latin America. As schools in this region generally have a high demand for English language teachers, but limited finances, it is very common for teachers to be employed without a work visa. The exceptions are Chile and Mexico, where work visas are issued in a majority of cases. In Argentina and Costa Rica, it is normal to work on a tourist visa that can be renewed by leaving and then re-entering the country before the original expires. The Middle East. In the large and lucrative markets of Saudi Arabia, the United Arab Emirates and Qatar, it is standard practice for employers to provide their teachers with work visas. In smaller markets such as Jordan in Egypt, a small percentage of teachers may find jobs without a permit. Asia. The vast majority of jobs across the region's teaching hotspots such as China, Japan, Taiwan, Thailand and South Korea will come with the necessary work permit. Elsewhere, teaching without a work permit is not uncommon. Pros and Cons. For the employer, hiring a teacher without a work permit means they do not have to pay taxes or social security contributions, making it more affordable to hire the staff they need. For the teacher, it also means no tax payments. However, you will consequently have no access to benefits such as national medical insurance or the safety of a legally binding contract. Although working illegally is not risk-free, very few people ever have a problem with the local authorities. If for any reason you are caught without a visa, the usual outcome is to be put on a flight back home while the employer generally receives a small fine.


Sajjan, Shushant and Subrata Naik for giving an AVU demo. My name is Sushant. I handle the AVU part. Till now you have been using AVU as a student. For the FTP and all, how you can use AVU as a teacher. So the login and everything is the same. What you need to do is, you need to decide date and time when you are going to interact, when you are going to keep that interaction session. At that date and time, you will have to tell us.  So we will create that classroom inside AVU on that date and time. So it will be accessible only on that date and time and it will be accessible to the students that you want to interact. So once you give that details, we will create the classroom. After that, the login part is the same. But this time, you will be the teacher. You will have the controls of a teacher. AVU has just now been updated to the latest version. So many of you who might have opened AVU, it might have automatically updated it to the version 5.0. But those who have not done that, once you click on that AVU classroom 3.7, it will automatically update it and it will give you a different icon because first, when you used to use 3.7, it used to give you an AVU classroom kind of icon here. But when it gets updated, so just tell you that you don't get confused. So when it gets updated, it will give you this icon, only AVU kind of thing. Because that icon doesn't go when it gets updated. When you update it, it will be like this. It will be the same that you will have to select IIT Bombay T10 KT server. After that, your username, password that we give you, we will give you and you will have the teacher controls. Then after login, you will see your session name there. There will be a lot of sessions. So you will have to carefully select which session you want to join. So right now there is only one, but there will be a lot of sessions. So you will have to select your own session and click join now. The overall interface has been changed a little bit, but a lot of things are the same. Like you first, you will have to start your video. So first you can click on start. Then the same options that you get to select your camera, your microphone. When you select the camera option, first there used to be a camera type option there. That was like USB converter, HDMI and webcam. So now that option is in this advance button now. So you don't see it here right now. When you click on the advance button, you will see that option. And please, if you are connecting your handy cam through an HDMI cable, please select USB converter. Do not select HDMI because HDMI is giving a lot of blur video. Please select USB converter. That will give you a better video. Then there is this check audio and video. So you can test it at your end, if your audio is being transmitted, if the student side audio is being transmitted to you. So there is a check audio video option. It will automatically check if your audio is being transmitted and if everything is okay and if it is not okay, you can just change the settings and you can start again. Once you do that, you click on start. Then there is now as students, you were not able to control the document and the whiteboard part. So as a teacher, you will be able to control the document and whiteboard part. The documents, whatever PPT you have, you have PDFs that you can upload by clicking on the document button here. And in the library, you can upload all the documents, all the PDFs into that document. So it's like you can't open your PPT in your PC and then display it. You will have to upload your PPT into Avue. So once you upload it, it will show up in this library, Avue library. And if you double click it and it will display it to you and to the students. And then there is the whiteboard part also. You can jump to whiteboard and come back to documents whenever you need. So this will be like you will, PPT will be visible to you and the students will be visible here. So while interaction, so you know when you have a question, you press the hand raise button. And the question mark appears at the student side. So like that, you can tell the students that they have a hand raise button at the bottom, at the left hand side bottom corner. They have a hand raise button. If they have a question, they can press it and a question mark will appear at your end. And when you know that there's a question, what you'll need to do is you, whichever student you want to select, you right click on that student and start, press start interaction. When you right click on that student, you will see an option of start interaction. Once you click start interaction, it will get you to a video wall where you and the student is, both are visible at the same time. So after, once that is visible, you can start your interaction. Then there is a polling option. The polling option is like, you have used it, a teacher from ITB posts a question. And then there are four options to select. So whichever option you select and you post it. So from here, what you can do is you can create your own questions. You can create your own options. And once you post that question, it will be visible to all the students and they can post it. You will get an instant feedback about the graph chart, about what the answers are. So that is a very good option to get feedback. So this is a basic, you know, interface of AVU. You, I've been using it as a student and when you start using it as a teacher, you will have many problems. I know that we will give you all the student login and the teacher logins. All of them, we will give it to you. You will have that login and you can send them the login details. Like we send you the login details, you can also send the login details. So while you use this, you will have many questions. And for that, we are going to keep a demo sessions in the month of May or June. So what you can do is you can log in, you can create, create demo classes in the AVU. And whenever you have time, you can log in and you can just, you know, move around the AVU software and check if you are able to do it. And we also will be available at that time online to guide you. So don't worry about, you know, what, how can I use it? Once we start the demo sessions, you give us the date and times you can log in and then we will also be online and we'll solve the, if you have any queries. That's about the AVU session today. So this session is related to the teachers you are. When you will be assigned the role of the teachers and you make a group for the FTP. And when you will be the teacher and you want to interact with your students or your colleague or in your group, then we will give some role to you. Then you can conduct your own classes. You can discuss, you can interact with them.  You can use this server as a teacher. So this session is only for that purpose.  Server is at RN. You are just an active teacher. But for your good, we will give you a login credentials to you. Thank you very much, sir. Yes. Sir, I request you to mail this important PPT to all the remote centers. We can do that. Thank you, sir. Any more quick questions? Any additional infrastructure is required for... No additional infrastructure is required. Regarding the bandwidth? No, not for that. No additional... Local... No, no, bandwidth is... Bandwidth the same. So the server is here. So bandwidth part, if you have a 10 node, then you need 10 Mbps line. But in the local group, we will create a facility using another method. So you can interact in the group on the local LAN. That you will... Just only one request will be sending to the server. Hello, sir. Sir, it will be good if you arrange a training section for AV coordinators. Yeah, so the demo sessions that we are going to conduct, that will be available from May. And at that time, you can just... Whoever is going to conduct that session. So they can just log in and we will be available here to tell them online how you can interact with them. Do we need to send the details of the students who are going to participate? Yeah, later. But first you will go through the demo sessions. Right now it is not possible to say... This is not the right time. When you just conduct the FTP program and when you form a group, then you have to provide the time slot to us. Within that time, we will provide you. Because otherwise, there are so many groups and we can't afford that load on our server. So for a specific time purpose, we will allow that to you. Okay, thank you. Sir, you have a studio setup here. Yes. At our place, we'll have our normal mic there. Yeah, yeah, that is for sufficient. You will just need to adjust your camera. Because right now your camera is facing the audience.  Fees the camera to the teacher. There is a confusion here. So as you are belonging from the remote center side, you have a classroom there and many participants. But for your group, it could be two people, three people. So there is no need that kind of facilities. You just use your webcam and that... Laptop also. You can use your laptop also. So it is... You can just... Indusually you can interact. Yes, yes, from anywhere. Okay, thank you. If any other questions, we can take it offline.