<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vladimir Mukhin</title>
    <description>The latest articles on DEV Community by Vladimir Mukhin (@vladimirmukhin).</description>
    <link>https://dev.to/vladimirmukhin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F237929%2Fa57f865b-f3ec-46c5-b717-538f3b3b3d32.jpeg</url>
      <title>DEV Community: Vladimir Mukhin</title>
      <link>https://dev.to/vladimirmukhin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vladimirmukhin"/>
    <language>en</language>
    <item>
      <title>Ghosted by a Recruiter? Here is What to Do</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Sat, 22 Oct 2022 18:50:06 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/ghosted-by-a-recruiter-here-is-what-to-do-2mm1</link>
      <guid>https://dev.to/vladimirmukhin/ghosted-by-a-recruiter-here-is-what-to-do-2mm1</guid>
      <description>&lt;p&gt;Anyone actively pursuing a new job knows what it feels like when recruiters go silent. You put a lot of time and effort into locating a job listing, strengthening your resume, drafting a position-specific cover letter, filling out an application, and going through the interview process, only to be ghosted by a recruiter.&lt;/p&gt;

&lt;p&gt;Employers and recruiters are ghosting candidates by not replying to interview requests, not replying to emails, and not responding to phone calls. This behavior leaves the candidate feeling frustrated and disappointed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G3PYhhvI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_1167874243.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G3PYhhvI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_1167874243.png" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While being ghosted by a recruiter is an unpleasant experience (and ultimately not a good business model), there are four easy rules that you can follow to avoid being ghosted: &lt;strong&gt;&lt;em&gt;Be Nice, Be The Best, Set Expectations and Follow Up.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before diving into the rules, it is important to understand why recruiters ghost candidates and why you were ghosted after your interview. In order to gain this understanding, I went directly to the source: the recruiters themselves.&lt;/p&gt;

&lt;p&gt;After I created a survey and sent it to fellow HR employees and recruiters, the data revealed that almost two-thirds of respondents admitted to ghosting candidates after an interview.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--74Yw2stR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--74Yw2stR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/image.png" alt="Image description" width="880" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Being ghosted after an interview is so common within our work culture that even the recruiters themselves have experienced it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;It happened to me multiple times and I understand that it can be a significant concern for a candidate.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ines R.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But if recruiters are being ghosted too, why would they also do it?&lt;/p&gt;

&lt;h1&gt;
  
  
  Too Many Applications
&lt;/h1&gt;

&lt;p&gt;25% of recruiters stated that the number of applications that they have to process prevents them from giving relevant feedback to each applicant.&lt;/p&gt;

&lt;p&gt;In other words, there are simply too busy and not able to respond to everyone in a timely manner.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The main reason why there are some candidates who are ghosted by the recruiters is because of the massive volume of candidates being processed at the same time. I actually experience this sometimes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Francis N.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To be fair to the recruiters, in some instances they would respond if they could, but ghosting is their only option due to the high application volume.&lt;/p&gt;

&lt;h1&gt;
  
  
  Bias and Discriminatory Requirements
&lt;/h1&gt;

&lt;p&gt;While it would be easier to assume that all recruiter ghosting is due to application volume, that would not paint the entire picture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uWgUySm9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_1302600061.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uWgUySm9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_1302600061.png" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bias in the workplace, such as gender, race, age, and disability discrimination, can take many forms and can be present even at the beginning stages of the application process. However unethical and disdainful these biases are, their existence cannot be ignored when examining recruiter ghosting.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Clients may have a special request like: “This position must be filled by a woman or a man”, or “Must be good looking (sometimes)”, or “Must be of the same race”, like a “Chinese person who can speak mandarin”.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Anonymous Recruiter&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Clearly, these practices are discriminatory and unfair to all applicants because they are not based on a candidate’s abilities or competencies, but rather on superficial characteristics that are irrelevant to performance.&lt;/p&gt;

&lt;p&gt;Recruiters who agree to work with such requirements are obviously not able to provide honest feedback to the applicant unless they want the second follow-up to be in court.&lt;/p&gt;

&lt;p&gt;Luckily, only a fraction of recruiters has mentioned this as a reason for ghosting candidates.&lt;/p&gt;

&lt;h1&gt;
  
  
  Recruiter Avoiding Bad News
&lt;/h1&gt;

&lt;p&gt;When a candidate is going through the application process, the recruiter may encounter negative information about the applicant that they do not feel comfortable sharing.&lt;/p&gt;

&lt;p&gt;For some job applications, candidates are asked to provide references from previous employers. However, there are some cases in which past employers give negative feedback when they are used as a reference, and recruiters are put in an uncomfortable position.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Negative feedback was received from a reference check, which my colleague didn’t feel comfortable discussing with the candidate. Therefore, she avoided the situation since the company would not have been interested in pursuing the candidate based on the reference check.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Faeith B.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this instance, the recruiter did not feel comfortable discussing this negative feedback with the candidate. If recruiters are put in uncomfortable situations where they may have to deliver negative feedback, some may avoid the situation by ghosting the candidate.&lt;/p&gt;

&lt;p&gt;In addition to reference checks, this avoidance can apply to other aspects of the interview process, like the results of a technical interview or something else that may disappoint the applicant if they are made aware.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Candidate is Rude
&lt;/h1&gt;

&lt;p&gt;In some instances, recruiters may be justified in ghosting a candidate. If a candidate does not treat the recruiter with respect, exhibits troubling or erratic behavior, or is rude in their communication.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lR62Hxew--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_512346517.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lR62Hxew--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_512346517.png" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If a recruiter is feeling insulted or not treated well by a candidate he or she may simply decide that the candidate should not be contacted at all and “accidentally” miss an email from the corky job seeker.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The candidate is rude. Some candidates can be very rude and want the job so bad even if they are not qualified. They end up harassing us and that is when we decide to ghost them. Instead of considering them for another role, we end up flagging them to never be contacted in the future.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Versa G.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The candidate had a perfect resume that was a 100% fit. However, he kept changing the times of an interview last minute or had multiple no shows.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ed D.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Recruiters are people too and deserve to be treated with respect, especially if they are trying to figure out if you are worth hiring.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Consequences of Recruiters Ghosting Candidates
&lt;/h1&gt;

&lt;p&gt;While some of this data is not all that surprising, it is important to note that there are consequences of recruiter ghosting for both the job applicant and the employer. Examining the data further reveals that recruiters ghosting candidates is a sign of poor company culture and threatens long-term relations between future candidates and employers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Poor Company Culture
&lt;/h2&gt;

&lt;p&gt;The majority of recruiters, including the ones who admitted to ghosting candidates, agree that not giving feedback after an interview is a bad practice that should be avoided.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If a recruiter is completely unresponsive it might be a good indicator of the company culture and the candidates should continue the search for a company that pays more attention to a wholesome employee experience.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Kenneth M.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words, if the company does not have a culture based on effective communication, mutual respect, and positive self-representation, then its brand will be negatively affected. Yes, being ghosted after an interview can hurt a candidate, but it can also hurt the company by revealing its poor company culture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C_fKKKK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_264679046.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C_fKKKK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_264679046.jpg" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This poor company culture, in turn, can damage the long-term relations between candidates and the recruiter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Damaging Relations Between Candidates and Recruiters
&lt;/h2&gt;

&lt;p&gt;The role of a recruiter is not simply to turn candidates into hired employees. One of their main objectives is to build a strong network of qualified individuals who may fit future opportunities.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I, personally, have never ghosted someone. People that ghost candidates are selfish and only care to rapid-hire and not actually build connections.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Evelin&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If recruiters continue to demonstrate this selfish, rapid-hire behavior, soon there will be no more qualified candidates interested in applying. Therefore, by eliminating recruiter ghosting, employers can actually salvage their reputation and candidate network without damaging relations between the applicant pool and their overall brand.&lt;/p&gt;

&lt;h1&gt;
  
  
  4 Ways to Avoid Being Ghosted by Recruiter
&lt;/h1&gt;

&lt;p&gt;Now that we have a better understanding of how and why some recruiters ghost applicants after an interview, let’s examine 4 rules that you should always follow to decrease your chances of being ghosted after an interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be Nice
&lt;/h2&gt;

&lt;p&gt;Being nice to people is a good rule in general, but is especially valuable when engaging with a recruiter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cf0qlRgU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_1361250608.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cf0qlRgU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_1361250608.png" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recruiters have a job to do, and while they may not always be able to do it perfectly, a positive attitude and pleasant behavior from candidates can go a long way.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Be kind to recruiters. We get a feel for the candidates and will help them to the best of our abilities to get them a role. Even when they do not get this one position, we will look for other roles that they may be interested in instead.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Versa G.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another way of being nice and showing interest in the position is by demonstrating enthusiasm. You should not only express your desire for the position, but let the recruiter know that you are actually excited by the prospect of getting to work in that unique environment.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Candidates should maintain their integrity and enthusiasm while showcasing their great attitude in looking for a job. Most of the time, employers or recruiters are not just looking for intelligence, we are taking a holistic view of the job that would also fit your needs.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mary R.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By maintaining a positive attitude and showing enthusiasm, a recruiter will think twice about ghosting you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be the Best
&lt;/h2&gt;

&lt;p&gt;A way to ensure that you are the best candidate for the job is to apply for jobs where your experience, training, and education intersect with the position you are applying for.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X4gmAn_k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_566888734.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X4gmAn_k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://yourdevopsmentor.com/wp-content/uploads/2022/10/Shutterstock_566888734.png" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set yourself up for success by applying to jobs that you are right for and recruiters will be quicker to get back to you and possibly recommend you for the position.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The best candidate is the one that is suitable for the job itself. They must have the relevant work experience, training, education and skills to qualify for the position.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Apple J.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It may seem obvious, but if you are not qualified for a position, you will probably be ghosted by a recruiter.&lt;/p&gt;

&lt;p&gt;Consider becoming a DevOps expert. This role is in extreme demand now. Then, you’ll never be ghosted by recruiters. Instead, they will chase you themself with numerous high-paying opportunities. You can read more about how to become a rock-start DevOps engineer in our other materials 👇👇👇 &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://yourdevopsmentor.com/blog/how-to-become-a-devops-engineer/"&gt;How to Become a DevOps Engineer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yourdevopsmentor.com/blog/how-to-become-a-devops-expert/"&gt;How to Become a DevOps Expert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Becoming a Kubernetes expert is another option. If you’re interested in this direction, you might consider the materials from the list below 👇👇👇&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://yourdevopsmentor.com/blog/5-ways-to-install-a-kubernetes-cluster/"&gt;5 Fastest Ways to Build Your First Kubernetes Cluster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yourdevopsmentor.com/blog/kubernetes-interview-questions/"&gt;100 Kubernetes Interview Questions That Will Land You Any Kubernetes Job&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yourdevopsmentor.com/blog/cka-vs-ckad/"&gt;CKA vs CKAD - Which Exam Should You Take?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yourdevopsmentor.com/blog/dockerize-in-3-minutes/"&gt;Dockerize an application in less than 3 minutes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yourdevopsmentor.com/blog/how-to-stop-all-kubernetes-deployments/"&gt;How to Stop All Kubernetes Deployments&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Set Expectations
&lt;/h2&gt;

&lt;p&gt;As mentioned earlier, sometimes recruiters are unable to get in contact with every applicant, but that does not mean that you as a candidate shouldn’t discuss what your expectations are of your recruiter.&lt;/p&gt;

&lt;p&gt;While being nice and respectful, clarify what your expectations are in terms of receiving feedback or an additional interview.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;During the interview phase, the candidate can proactively ask for a timeline from the recruiter as to when he/she can expect feedback. The candidate can also ask the recruiter for contact details to ask about the application status.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Maria C.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Being proactive during the interview phase demonstrates your enthusiasm for the position while also clarifying your expectations for further communication.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Ask the recruiter when you will receive any updates from the company about the status of your application.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Kazzelyn S.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Don’t be afraid to ask questions and set expectations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow Up
&lt;/h2&gt;

&lt;p&gt;Now, you may think that following up with a recruiter may be misinterpreted as harassment or a lack of patience on your part. These are good instincts to have as they show that you are trying to maintain a respectful relationship with your recruiter.&lt;/p&gt;

&lt;p&gt;However, following up with recruiters in a nice and respectful way can also give you access to valuable information about your application status.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Keep following up with your recruiter! You may feel frustrated after not getting a response on your follow-ups, but still, don’t be disrespectful in your communication because this will affect your personal brand.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sajid S.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As mentioned earlier, ghosting leads to consequences for both the applicant and the employer. Both parties should be aware of their communication and attitude because these can negatively affect their individual and collective brands.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Communication is the key. Reach out to the recruiter a week after your initial interview for the status of the application.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Lea D.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Following up with a recruiter is a crucial component in avoiding recruiter ghosting.&lt;/p&gt;

&lt;h1&gt;
  
  
  What To Do If the Recruiter is Still Not Responding
&lt;/h1&gt;

&lt;p&gt;If you have followed these steps and are still getting ghosted, you may want to move on.&lt;/p&gt;

&lt;p&gt;Sometimes hard work and effective communication can only get you so far, but don’t be discouraged! There is a job out there for you, you just need to keep looking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look For Other Opportunities
&lt;/h2&gt;

&lt;p&gt;The data shows that not all recruiters are able to properly address each application, while others may not be acting in your best interest (as well as their own brand).&lt;/p&gt;

&lt;p&gt;If you have followed the above steps and got no response, try applying to job postings at companies with a proven track record of positive network relations and responsiveness. Your hard work deserves to be acknowledged by companies that understand your value and how you can help.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Look for another job. There’s a lot of job opportunities out there.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Pauline M.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Never settle for one or two applications only. You must seek for other opportunities and continue to be persistent and driven. Never put eggs in one basket – the best option is to have more options&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Apple J.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;Being ghosted after an interview by a recruiter is not a good feeling.&lt;/p&gt;

&lt;p&gt;Understanding why recruiters ghost candidates can give you valuable insight into how the recruiting process works, and also how to avoid being ghosted in the first place.&lt;/p&gt;

&lt;p&gt;Some recruiters are hit with too many applications and do not have enough time to get back to every applicant. Some recruiters are operating based on their own biases or the discriminatory policies of their employers. And sometimes, the applicant was simply rude and not worth following up with.&lt;/p&gt;

&lt;p&gt;Regardless of the reasoning, ghosting job applicants can have negative consequences on the applicant, but also on the overall brand of the employer, making the employer seem selfish and uninterested in employee growth.&lt;/p&gt;

&lt;p&gt;By following the 4 rules: &lt;strong&gt;&lt;em&gt;Be Nice, Be the Best, Set Expectations and Follow Up&lt;/em&gt;&lt;/strong&gt;, applicants can avoid this ghosting behavior and show their recruiter that they are worth the time and the respect.&lt;/p&gt;

&lt;p&gt;It’s important to note that there will always be another opportunity out there if the recruiter’s ghosting doesn’t stop, but you should always do everything in your power to make sure the recruiter thinks twice before ghosting you.&lt;/p&gt;




&lt;p&gt;You can find other interesting articles on our blog: &lt;a href="https://yourdevopsmentor.com/blog/"&gt;https://yourdevopsmentor.com/blog/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apply for individual mentorship here: &lt;a href="https://yourdevopsmentor.com/apply/"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with me on LinkedIn: &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-devops/"&gt;https://www.linkedin.com/in/vladimir-mukhin-devops/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on Twitter: &lt;a href="https://twitter.com/vmukhindevops"&gt;https://twitter.com/vmukhindevops&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>100 Kubernetes Interview Questions That Will Land You Any Kubernetes Job</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Thu, 29 Sep 2022 19:49:26 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/100-kubernetes-interview-questions-that-will-land-you-any-kubernetes-job-jnj</link>
      <guid>https://dev.to/vladimirmukhin/100-kubernetes-interview-questions-that-will-land-you-any-kubernetes-job-jnj</guid>
      <description>&lt;p&gt;This blog post is a collection of Kubernetes interview questions that will help you get the job of your dream. Make sure you memorize a short answer and can provide a detailed explanation in your own words.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2Fillustration-1changed.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2Fillustration-1changed.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our goal was to make this guide as technical and detailed as possible. We assume you already know what Kubernetes is, are familiar with general ideas of containerization, and understand the benefits of these technologies. Therefore, we omit generic questions and dive right into detailed, practical, and low-level questions, which are more likely to be asked during a Kubernetes interview.&lt;/p&gt;

&lt;p&gt;You can use this as a roadmap for your interview preparation or as a last-minute knowledge check.&lt;/p&gt;

&lt;p&gt;Expand to reveal the answer and further related questions 👇👇👇&lt;/p&gt;

&lt;h1&gt;
  
  
  Part 1 — Kubernetes Architecture
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FArchitecture.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FArchitecture.jpeg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the latest version of Kubernetes that is generally available?
&lt;/h2&gt;

&lt;p&gt;As of September 2022, the latest version of Kubernetes is 1.25, also called “Combiner”.&lt;br&gt;
However, it is crucial to understand that Kubernetes is still in active development, and new versions are released every several months.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Kubernetes control plane?
&lt;/h2&gt;

&lt;p&gt;The control plane components work together to coordinate the activities of a Kubernetes cluster. The control plane is responsible for managing the cluster’s state, ensuring that its desired configuration is always maintained.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Kubernetes data plane?
&lt;/h2&gt;

&lt;p&gt;The Kubernetes data plane is the part of a cluster responsible for running the workloads. In other words, all nodes in a cluster belong to a data plane.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the main Kubernets components?
&lt;/h2&gt;

&lt;p&gt;For a complete and working Kubernetes cluster, you will need the following components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Server;&lt;/li&gt;
&lt;li&gt;etcd;&lt;/li&gt;
&lt;li&gt;kubelet;&lt;/li&gt;
&lt;li&gt;kube-proxy;&lt;/li&gt;
&lt;li&gt;Scheduler;&lt;/li&gt;
&lt;li&gt;Controller Manager;&lt;/li&gt;
&lt;li&gt;Cloud Controller Manager;&lt;/li&gt;
&lt;li&gt;Container Runtime.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is the API Server?
&lt;/h2&gt;

&lt;p&gt;The API Server is the heart and soul of the Kubernetes control plane. It exposes the Kubernetes API and acts as a gateway, providing the API for all other components and external clients.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is etcd?
&lt;/h2&gt;

&lt;p&gt;Etcd is a key-value store that is being used for holding configuration data, state data, and metadata. Kubernetes uses etcd to save information such as the list of nodes in the cluster, the desired state of all workloads that are running in the cluster, and cluster events.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is kubelet?
&lt;/h2&gt;

&lt;p&gt;Kubelet is a Kubernetes agent that runs on each node in a Kubernetes cluster. Its role is to ensure that all pods scheduled on the node are running and healthy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is kube-proxy?
&lt;/h2&gt;

&lt;p&gt;Kube-proxy is a networking service that runs on each node in a Kubernetes cluster. It is responsible for maintaining network rules on the node and provides services such as port forwarding and load balancing for Kubernetes services.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is scheduler?
&lt;/h2&gt;

&lt;p&gt;The scheduler is a Kubernetes control plane component that assigns newly created pods to nodes in a cluster. It tracks various parameters such as resource requirements, hardware constraints, and affinity rules, taking them into account during scheduling decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Controller Manager?
&lt;/h2&gt;

&lt;p&gt;The Controller Manager is a Kubernetes component that manages controllers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Controller?
&lt;/h2&gt;

&lt;p&gt;The Kubernetes controller is an infinite loop that watches the state of the API object and makes required changes ensuring that its observed state matches the desired state.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Cloud Controller Manager?
&lt;/h2&gt;

&lt;p&gt;Cloud Controller Manager is a dedicated Kubernetes component that manages cloud-specific controllers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Container Runtime?
&lt;/h2&gt;

&lt;p&gt;A container runtime provides the low-level components needed to launch and run containers. It sets up the underlying kernel primitives, such as namespaces and control groups, and provides a high-level API for container management.&lt;/p&gt;

&lt;h2&gt;
  
  
  What container runtimes are supported by Kubernetes?
&lt;/h2&gt;

&lt;p&gt;The following Container runtimes are supported by Kubernetes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;containerd;&lt;/li&gt;
&lt;li&gt;CRI-O;&lt;/li&gt;
&lt;li&gt;Docker Engine;&lt;/li&gt;
&lt;li&gt;Mirantis Container Runtime;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Which Kubernetes components are considered Control Plane components?
&lt;/h2&gt;

&lt;p&gt;The Kubernetes Control plane components are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Server;&lt;/li&gt;
&lt;li&gt;etcd;&lt;/li&gt;
&lt;li&gt;Scheduler;&lt;/li&gt;
&lt;li&gt;Controller Manager;&lt;/li&gt;
&lt;li&gt;Cloud Controller Manager;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Which Kubernetes components are considered Data Plane components?
&lt;/h2&gt;

&lt;p&gt;The Kubernetes Data Plane components are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kubelet;&lt;/li&gt;
&lt;li&gt;kube-proxy;&lt;/li&gt;
&lt;li&gt;Container Runtime;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Draw a diagram of Kubernetes components and interactions between them.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FScreen-Shot-2022-09-03-at-1.09.55-PM-2048x969.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FScreen-Shot-2022-09-03-at-1.09.55-PM-2048x969.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Part 2 — Kubernetes API
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Which Kubernetes component is responsible for providing access to Kubernetes API?
&lt;/h2&gt;

&lt;p&gt;The component responsible for providing access to Kubernetes API is called API Server.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the different ways we can interact with the API server?
&lt;/h2&gt;

&lt;p&gt;We can interact with Kubernetes API through the following tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kubectl;&lt;/li&gt;
&lt;li&gt;rest API using kubectl proxy;
rest API by passing an authentication token directly;&lt;/li&gt;
&lt;li&gt;official client libraries.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What will happen with a cluster if the API server is down?
&lt;/h2&gt;

&lt;p&gt;The current workloads will continue to run. However, neither clients nor internal Kubernetes components would be able to interact with the Kubernetes API and record any changes in the state of a cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the main Kubernetes API objects?
&lt;/h2&gt;

&lt;p&gt;The main Kubernetes API objects are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pod&lt;/li&gt;
&lt;li&gt;ReplicaSet&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;li&gt;StatefulSet&lt;/li&gt;
&lt;li&gt;DaemonSet&lt;/li&gt;
&lt;li&gt;Service&lt;/li&gt;
&lt;li&gt;Ingress&lt;/li&gt;
&lt;li&gt;ConfigMap&lt;/li&gt;
&lt;li&gt;Secret&lt;/li&gt;
&lt;li&gt;PersistentVolume&lt;/li&gt;
&lt;li&gt;PersistentVolumeClaim&lt;/li&gt;
&lt;li&gt;StorageClass&lt;/li&gt;
&lt;li&gt;Namespace&lt;/li&gt;
&lt;li&gt;ServiceAccount&lt;/li&gt;
&lt;li&gt;Role&lt;/li&gt;
&lt;li&gt;RoleBinding&lt;/li&gt;
&lt;li&gt;ClusterRole&lt;/li&gt;
&lt;li&gt;ClusterRoleBinding
##What is Kubernetes Pod?
A Pod is the thinnest Kubernetes abstraction. It consists of one or more containers that share storage and network settings with each other. Containers within a pod always run together on the same node with a shared context.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Kubernetes ReplicaSet?
&lt;/h2&gt;

&lt;p&gt;A ReplicaSet is a group of identical pods with the same label selector. A ReplicaSet ensures that a specified number of pod replicas are running at any given time. If a pod dies, the ReplicaSet automatically replaces it with a new one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes Deployment?
&lt;/h2&gt;

&lt;p&gt;A deployment is a Kubernetes object that encapsulates a ReplicaSet and provides declarative updates (i.e. desired state management) for Pods.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the difference between a ReplicaSet and Deployment?
&lt;/h2&gt;

&lt;p&gt;The main difference between a Deployment and a ReplicaSet is that a Deployment manages a ReplicaSet, and a ReplicaSet only manages Pods.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes StatefulSet?
&lt;/h2&gt;

&lt;p&gt;A StatefulSet is a special type of Deployment that manages a set of identical Pods that are scaled together. Pods in a StatefulSet have a fixed identity(pod name) that is maintained across restarts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes DaemonSet?
&lt;/h2&gt;

&lt;p&gt;A DaemonSet runs a copy of a Pod on each node of a cluster. When a node is added to the cluster, the DaemonSet schedules a Pod there. When a node is removed, those Pods are deleted.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes Namespace?
&lt;/h2&gt;

&lt;p&gt;A namespace is a logical entity used to segregate resources within a Kubernetes cluster. Each namespace is isolated from other namespaces and provides a unique scope for resources within the cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Provide examples of Kubernetes resources that are Namespaced and Kubernetes resources that are not Namespaced
&lt;/h2&gt;

&lt;p&gt;Kubernetes resources that are namespaced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pods;&lt;/li&gt;
&lt;li&gt;ReplicationControllers;&lt;/li&gt;
&lt;li&gt;Deployments;&lt;/li&gt;
&lt;li&gt;Services;&lt;/li&gt;
&lt;li&gt;Secrets;&lt;/li&gt;
&lt;li&gt;ConfigMaps;&lt;/li&gt;
&lt;li&gt;Roles;&lt;/li&gt;
&lt;li&gt;RoleBindings;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PersistentVolumeClaims;&lt;br&gt;
Kubernetes resources that are not namespaced:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nodes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Events&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PersistentVolumes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ClusterRoles&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ClusterRoleBindings&lt;/p&gt;
&lt;h2&gt;
  
  
  What are the top-level properties of a Kubernetes API object?
&lt;/h2&gt;

&lt;p&gt;The top-level properties of a Kubernetes API object are:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;apiVersion;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kind;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;metadata;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;spec;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;status;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is the apiVersion field?
&lt;/h2&gt;

&lt;p&gt;Kubernetes apiVersion is a string that specifies the API version to use&lt;/p&gt;

&lt;h2&gt;
  
  
  Provide examples of apiVersions that you are aware of.
&lt;/h2&gt;

&lt;p&gt;The examples of apiVersions are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;apps/v1&lt;/li&gt;
&lt;li&gt;batch/v1&lt;/li&gt;
&lt;li&gt;v1&lt;/li&gt;
&lt;li&gt;alpha&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is the kind field?
&lt;/h2&gt;

&lt;p&gt;Kubernetes API kind represents an object in the Kubernetes system; for example, Deployment is a kind. Each object kind has a different set of attributes and behaviors.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the metadata field?
&lt;/h2&gt;

&lt;p&gt;Kubernetes metadata is data that describes Kubernetes objects. Metadata often store information that is not part of the object’s core properties.&lt;/p&gt;

&lt;h2&gt;
  
  
  What metadata fields do you know?
&lt;/h2&gt;

&lt;p&gt;The examples of the metadata fields are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name;&lt;/li&gt;
&lt;li&gt;namespace;&lt;/li&gt;
&lt;li&gt;UID;&lt;/li&gt;
&lt;li&gt;resourceVersion;&lt;/li&gt;
&lt;li&gt;generation;&lt;/li&gt;
&lt;li&gt;creationTimestamp and deletionTimestamp;&lt;/li&gt;
&lt;li&gt;labels;&lt;/li&gt;
&lt;li&gt;annotations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is the UID field?
&lt;/h2&gt;

&lt;p&gt;The UID is an identifier that is used to distinguish between objects with the same name that have been deleted and recreated.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the resourceVersion field?
&lt;/h2&gt;

&lt;p&gt;The resourceVersion field is used by clients to find out when objects have changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the creatonTimestamp and the deletionTimestamp fields?
&lt;/h2&gt;

&lt;p&gt;The creationTimestamp and deletionTimestamp are fields representing the date when the object was created or deleted.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the labels field?
&lt;/h2&gt;

&lt;p&gt;Labels are key-value pairs that are used to organize and categorize objects.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the annotations field?
&lt;/h2&gt;

&lt;p&gt;Annotations are the key-value fields that are used by external tooling to store and retrieve arbitrary metadata about the object.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the spec field?
&lt;/h2&gt;

&lt;p&gt;The spec is an API field containing information about a Kubernetes object’s desired state.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the status field?
&lt;/h2&gt;

&lt;p&gt;The status field indicates the current status of the resource. For example, a pod’s status might include information about its current phase, what containers are running in the pod, and the pod’s IP address.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Kubernetes API verb?
&lt;/h2&gt;

&lt;p&gt;The Kubernetes API verb is a set of operations that can be performed on a Kubernetes resource.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Kubernetes API verbs exist?
&lt;/h2&gt;

&lt;p&gt;Kubernetes supports the following API verbs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;get;&lt;/li&gt;
&lt;li&gt;create;&lt;/li&gt;
&lt;li&gt;apply;&lt;/li&gt;
&lt;li&gt;update;&lt;/li&gt;
&lt;li&gt;patch;&lt;/li&gt;
&lt;li&gt;delete;&lt;/li&gt;
&lt;li&gt;proxy;&lt;/li&gt;
&lt;li&gt;list;&lt;/li&gt;
&lt;li&gt;watch;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Part 3 — RBAC and Security
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FIMG-20220908-WA0001.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FIMG-20220908-WA0001.jpeg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What does Kubernetes RBAC mean?
&lt;/h2&gt;

&lt;p&gt;The RBAC stands for Role-Based Access Control. This mechanism allows you to manage permissions for users and groups within a Kubernetes cluster. With RBAC, you can define who has access to what and under which conditions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RBAC components exist in Kubernetes?
&lt;/h2&gt;

&lt;p&gt;There are the following components of Kubernetes RBAC:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Role;&lt;/li&gt;
&lt;li&gt;RoleBidning;&lt;/li&gt;
&lt;li&gt;ClusterRole;&lt;/li&gt;
&lt;li&gt;ClusterRoleBinding.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is the Kubernetes Role?
&lt;/h2&gt;

&lt;p&gt;A role is a definition of a set of permissions that can be applied to one or more users or service accounts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Kubernetes RoleBinding?
&lt;/h2&gt;

&lt;p&gt;A RoleBinding is an object that allows you to bind a role or a cluster role to a user or a service account.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Kubernetes ClusterRole?
&lt;/h2&gt;

&lt;p&gt;A ClusterRole is the same as a role but cluster-wide. Permissions assigned via cluster role are not limited by any namespace.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Kubernetes ClusterRoleBinding?
&lt;/h2&gt;

&lt;p&gt;A ClusterRoleBinding is the same as a role, but cluster-wide and used with cluster roles.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is AAA in Kubernetes?
&lt;/h2&gt;

&lt;p&gt;The AAA in Kubernetes stands for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication;&lt;/li&gt;
&lt;li&gt;Authorization;&lt;/li&gt;
&lt;li&gt;Admission.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Authentication?
&lt;/h2&gt;

&lt;p&gt;Authentication is the procedure of verifying that someone is who they say they are.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Authorization?
&lt;/h2&gt;

&lt;p&gt;Authorization is verifying that someone has the right to perform an action or access a resource.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Admission?
&lt;/h2&gt;

&lt;p&gt;In Kubernetes, Admission is a process of validating and admitting a resource into the cluster. Admission controllers are Kubernetes components that intercept requests to the Kubernetes API before the persistence of the object in etcd.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which kubectl command can determine if the current user can perform a given action without invoking the API action itself?
&lt;/h2&gt;

&lt;p&gt;“kubectl auth can-i” is a command that will check if the user has permission to perform an action on a resource.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ServiceAccount?
&lt;/h2&gt;

&lt;p&gt;A ServiceAccount is an account used by a workload to interact with the Kubernetes API. Service accounts give processes the ability to perform a certain set of actions within a cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is SecurityContext?
&lt;/h2&gt;

&lt;p&gt;A SecurityContext is a setting that defines security settings, privilege, and access control settings for a Pod.&lt;/p&gt;

&lt;h2&gt;
  
  
  What settings can you specify via SecurityContext?
&lt;/h2&gt;

&lt;p&gt;Security context settings include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User Id and Group Id;&lt;/li&gt;
&lt;li&gt;SELinux settings;&lt;/li&gt;
&lt;li&gt;Container privileges;&lt;/li&gt;
&lt;li&gt;Linux capabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Part 4 — Kubernetes Networking
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FNetworking.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FNetworking.jpeg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes Service?
&lt;/h2&gt;

&lt;p&gt;Kubernetes Services are a way to expose an application running on a set of Pods via a network. A service defines a collection of pods and a collection of networking rules for accessing them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What types of Services exist in Kubernetes?
&lt;/h2&gt;

&lt;p&gt;The following types of Services exist in Kubernetes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ClusterIP;&lt;/li&gt;
&lt;li&gt;NodePort;&lt;/li&gt;
&lt;li&gt;LoadBalancer;&lt;/li&gt;
&lt;li&gt;ExternalName.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is the ClusterIP service?
&lt;/h2&gt;

&lt;p&gt;The ClusterIP service is a service that exposes an application running on a set of Pods to other applications within the same cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the NodePort service?
&lt;/h2&gt;

&lt;p&gt;The NodePort service is a ClusterIP service with a manually specified port (the NodePort) that is opened on every node in the cluster. When a client requests a NodePort service, the request is automatically routed to one of the nodes in the cluster, and that node proxies the request to the Service.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the LoadBalacner service?
&lt;/h2&gt;

&lt;p&gt;The LoadBalancer service makes a service accessible to external clients. When created, Kubernetes creates an external load balancer (if the cloud provider supports it) and maps the service to the load balancer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the ExternalName Service?
&lt;/h2&gt;

&lt;p&gt;The ExternalName service maps a service to an external DNS name. This can be used to access services such as an external database or an API.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes Ingress?
&lt;/h2&gt;

&lt;p&gt;An Ingress is an API object responsible for routing external traffic to services within a Kubernetes cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an Ingress controller?
&lt;/h2&gt;

&lt;p&gt;An ingress controller is a set of resources running inside a Kubernetes cluster and implementing a backend for ingress functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  What popular Kubernetes Ingress controllers do you know?
&lt;/h2&gt;

&lt;p&gt;Some examples of popular ingress controllers are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contour;&lt;/li&gt;
&lt;li&gt;Nginx Ingress controller;&lt;/li&gt;
&lt;li&gt;Ambassador;&lt;/li&gt;
&lt;li&gt;AWS Load Balancer controller;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is CNI?
&lt;/h2&gt;

&lt;p&gt;The CNI, or a Container Network Interface, is a set of plugins used for configuring network interfaces in Kubernetes pods. CNI is the operating system component that routes the actual network request to a container.&lt;/p&gt;

&lt;h2&gt;
  
  
  What CNI do you know?
&lt;/h2&gt;

&lt;p&gt;The most popular CNI are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flannel;&lt;/li&gt;
&lt;li&gt;Calico;&lt;/li&gt;
&lt;li&gt;Cillium;&lt;/li&gt;
&lt;li&gt;Weave Net;&lt;/li&gt;
&lt;li&gt;Canal;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is NetworkPolicy?
&lt;/h2&gt;

&lt;p&gt;The network policy is an API object that defines how Pods and Services are allowed to communicate with each other and other the network.&lt;/p&gt;

&lt;h2&gt;
  
  
  What CNI drivers support NetworkPolicy?
&lt;/h2&gt;

&lt;p&gt;The following CNI drivers support network policy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calico;&lt;/li&gt;
&lt;li&gt;Cillium;&lt;/li&gt;
&lt;li&gt;Weave Net;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Canal;&lt;br&gt;
The following CNI driver does not support network policy:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flannel;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is the “pause” container and what’s its purpose?
&lt;/h2&gt;

&lt;p&gt;The “pause” container is a special container that is not visible via Kubernetes API. It holds the network namespace for the pod. Kubernetes creates pause containers to acquire the respective pod’s IP address and set up the network namespace for all other containers that join that pod. Due to the pause container, crashed and restored containers within a Pod maintain the same IP address.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a sidecar proxy?
&lt;/h2&gt;

&lt;p&gt;A sidecar proxy is a container that is deployed alongside a primary container providing it with additional networking functionality. It intercepts all the network requests sent by the primary container and provides features such as encryption, request routing, and observability. A sidecar proxy is one of the main building blocks for a service mesh.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a service mesh?
&lt;/h2&gt;

&lt;p&gt;A service mesh is an infrastructure layer that allows you to manage communication between microservices. It handles things like routing, load balancing, and service discovery, and can provide features like observability, security, and resiliency.&lt;/p&gt;

&lt;h2&gt;
  
  
  What popular service meshes do you know?
&lt;/h2&gt;

&lt;p&gt;The most popular service meshes are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Istio;&lt;/li&gt;
&lt;li&gt;Linkerd;&lt;/li&gt;
&lt;li&gt;Consul.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Part 5 — Configuration, Deployment, and Resource Management
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What are the main options for passing configuration information into a Kubernetes Pod?
&lt;/h2&gt;

&lt;p&gt;The main options for passing configuration information into a Kubernetes Pod are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ConfigMap;&lt;/li&gt;
&lt;li&gt;Secret.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is ConfigMap?
&lt;/h2&gt;

&lt;p&gt;A ConfigMap is an API object that acts as a dictionary of key-value pairs that store configuration data for your application.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Secret?
&lt;/h2&gt;

&lt;p&gt;A Secret is an API object similar to ConfigMap but designed for storing sensitive data.&lt;/p&gt;

&lt;h2&gt;
  
  
  What encryption method is used in Secret by default?
&lt;/h2&gt;

&lt;p&gt;By default, Secrets are not encrypted. Instead, they are just base64-encoded.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can a container inside a Kubernetes Pod find out in which namespace it is running without interacting with Kubernetes API?
&lt;/h2&gt;

&lt;p&gt;You can use downward API to inject any information about a Pod into a container within this pod. This includes things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name;&lt;/li&gt;
&lt;li&gt;namespace;&lt;/li&gt;
&lt;li&gt;labels;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;any other metadata or spec field.&lt;/p&gt;
&lt;h1&gt;
  
  
  What are the main ways of managing resources assigned to a container?
&lt;/h1&gt;

&lt;p&gt;The main ways of managing resources assigned to a container are:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Requests and limits&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Limit ranges&lt;/p&gt;
&lt;h1&gt;
  
  
  What parameters can we control via requests and limits?
&lt;/h1&gt;

&lt;p&gt;We can use requests and limits to control:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CPU;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Memory;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hugepages;&lt;/p&gt;
&lt;h1&gt;
  
  
  What are resource requests?
&lt;/h1&gt;

&lt;p&gt;Resources specified in the requests field must be reserved for a container. The kube-scheduler uses this information to decide which node to place the Pod on. The Pod will be scheduled only if a Node has enough resources to accommodate the request.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What are resource limits?
&lt;/h1&gt;

&lt;p&gt;When limits are specified, a container is not allowed to use more resources than what is set in the limit.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is the QoS class in Kubernetes?
&lt;/h1&gt;

&lt;p&gt;Kubernetes evaluates requests and limits settings and assigns a so-called Quality of Service class or QoS.&lt;/p&gt;

&lt;h1&gt;
  
  
  What QoS classes exist in Kubernetes?
&lt;/h1&gt;

&lt;p&gt;The following QoS classes exist in Kubernetes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Guaranteed;&lt;/li&gt;
&lt;li&gt;Burstable;&lt;/li&gt;
&lt;li&gt;BestEffort; &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What is the Guaranteed QoS class?
&lt;/h1&gt;

&lt;p&gt;The Guaranteed QoS class will be assigned if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every Container in the Pod has memory limits and memory requests.&lt;/li&gt;
&lt;li&gt;Every Container in the Pod has memory limits equal to memory requests.&lt;/li&gt;
&lt;li&gt;Every Container in the Pod has CPU limits and CPU requests.&lt;/li&gt;
&lt;li&gt;Every Container in the Pod has CPU limits equal to CPU requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What is the Burstable QoS class?
&lt;/h1&gt;

&lt;p&gt;The Burstable QoS class will be assigned if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Pod does not fall under the criteria for QoS class Guaranteed.&lt;/li&gt;
&lt;li&gt;At least one Container in the Pod has a memory or CPU request or limit.&lt;/li&gt;
&lt;li&gt;What is the BestEffort QoS class?&lt;/li&gt;
&lt;li&gt;The BestEffort QoS class is assigned if Containers in the Pod don’t have any memory, CPU limits, or requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What are Limit ranges?
&lt;/h1&gt;

&lt;p&gt;A limit range is a setting that is applied on a namespace level and enforces additional resource usage constraints.&lt;/p&gt;

&lt;h1&gt;
  
  
  What parameters can we control via limit ranges?
&lt;/h1&gt;

&lt;p&gt;The LimitRange allows to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Constrain on a minimum and maximum resource usage per Pod or Container in a namespace.&lt;/li&gt;
&lt;li&gt;Constrain on a minimum and maximum storage request per PersistentVolumeClaim in a namespace.&lt;/li&gt;
&lt;li&gt;Enforce a ratio between request and limit for a resource in a namespace.&lt;/li&gt;
&lt;li&gt;Set default request and limit for resources in a namespace and automatically inject them to Containers.&lt;/li&gt;
&lt;li&gt;What happens if a container is trying to request more CPU or memory than is available on a cluster?&lt;/li&gt;
&lt;li&gt;A pod will hang in a pending state unless the requested resources become available.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What happens if a container is trying to use more CPU than the limit assigned to it?
&lt;/h1&gt;

&lt;p&gt;A container will be throttled if it tries to use more CPU than the limit assigned to it.&lt;/p&gt;

&lt;h1&gt;
  
  
  What happens if a container is trying to use more memory than the limit assigned to it?
&lt;/h1&gt;

&lt;p&gt;Currently, there is no way to throttle memory usage. This means a container will be killed with the OOMKilled status and restarted.&lt;/p&gt;

&lt;h1&gt;
  
  
  What are the most popular solutions for managing Kubernetes manifests?
&lt;/h1&gt;

&lt;p&gt;The most popular solutions for managing Kubernetes manifests are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;helm;&lt;/li&gt;
&lt;li&gt;kustomize;&lt;/li&gt;
&lt;li&gt;jsonnet;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What is helm?
&lt;/h1&gt;

&lt;p&gt;Helm is a Kubernetes package manager that allows configuring and managing Kubernetes applications more easily.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is kustomize?
&lt;/h1&gt;

&lt;p&gt;kustomize is a tool for customizing Kubernetes resources. It can be used to create, edit, and delete resources and to apply patches.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is jsonnet?
&lt;/h1&gt;

&lt;p&gt;jsonnet is a tool for generating JSON files, including Kubernetes manifests.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is GitOps?
&lt;/h1&gt;

&lt;p&gt;GitOps is a practice for managing software deployments and infrastructure changes using git repositories. GitOps involves using a git repository as the source of truth for both your application code and your infrastructure code. This approach allows you to use the same tools and workflows for managing both codebases and makes it easy to track changes and rollbacks.&lt;/p&gt;

&lt;h1&gt;
  
  
  What are the most popular Kubernetes GitOps tools?
&lt;/h1&gt;

&lt;p&gt;The most popular GitOps tools are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ArgoCD;&lt;/li&gt;
&lt;li&gt;FluxCD.
#Part 6 — Scheduling
##What does the term scheduling mean in Kubernetes?
Kubernetes scheduling refers to the process of allocating Pods to nodes in a Kubernetes cluster. This process is responsible for ensuring that all Pods in a are scheduled to run on available nodes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What component is responsible for scheduling workloads on a Kubernetes cluster?
&lt;/h2&gt;

&lt;p&gt;The Kubernetes component responsible for scheduling Pods is the Scheduler.&lt;/p&gt;

&lt;h2&gt;
  
  
  Please explain how does Scheduler work
&lt;/h2&gt;

&lt;p&gt;After a Pod is created, the scheduler determines which Node has enough resources to run the Pod. After that, the scheduler modifies the nodeName field of a Pod specification. After that, kubelet on a selected Node picks up a manifest and creates all the containers specified in a Pod.&lt;/p&gt;

&lt;h2&gt;
  
  
  What will happen if the Scheduler fails?
&lt;/h2&gt;

&lt;p&gt;Existing workloads will continue to run, while new Pods will remain unscheduled.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can you instruct a Pod to run on a particular Node?
&lt;/h2&gt;

&lt;p&gt;You can instruct a Pod to run on a particular Node by using any of these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;node selector with node labels;&lt;/li&gt;
&lt;li&gt;node affinity;&lt;/li&gt;
&lt;li&gt;the nodeName field;&lt;/li&gt;
&lt;li&gt;Pod topology spread constraints;
##How does node selector work?
You can add the nodeSelector field to the definition of your Pod and provide the labels you want the target to have. Kubernetes only schedules the Pod to nodes that have each of the labels you specify.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How does node affinity work?
&lt;/h2&gt;

&lt;p&gt;Node affinity is very similar to nodeSelector. It also allows you to constrain nodes your Pod can be scheduled on based on node labels, but a little more flexible.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does nodeName work?
&lt;/h2&gt;

&lt;p&gt;The nodeName field is a more direct way of node selection. If the nodeName field is not empty, the scheduler ignores the Pod, and the kubelet on the named node tries to place the Pod on that node. Using nodeName overrides using nodeSelector or affinity and anti-affinity rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to prevent a Pod from running on a particular Node?
&lt;/h2&gt;

&lt;p&gt;You can use taints to prevent certain Pods from being scheduled on a Node&lt;/p&gt;

&lt;h2&gt;
  
  
  How can you instruct a Pod to ignore taints?
&lt;/h2&gt;

&lt;p&gt;You can use tolerations to instruct a Pod to ignore taints.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can you instruct two certain Pods to run on the same Node or, opposite, to never land on the same Node?
&lt;/h2&gt;

&lt;p&gt;To prevent two pods from running on the same Node, you can use podAntiAffinity.&lt;br&gt;
To instruct two Pods to run on the same Node, you can use podAffinity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What types of affinity rules exist in Kubernetes?
&lt;/h2&gt;

&lt;p&gt;For both nodeAffinity and podAffinity, there are two types of affinity rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;requiredDuringSchedulingIgnoredDuringExecution;&lt;/li&gt;
&lt;li&gt;preferredDuringSchedulingIgnoredDuringExecution
##What does requiredDuringSchedulingIgnoredDuringExecution mean?
The hard rule. The scheduler can’t schedule the Pod unless it is satisfied.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What does preferredDuringSchedulingIgnoredDuringExecution?
&lt;/h2&gt;

&lt;p&gt;The soft rule. The scheduler will attempt to find a node that meets the criteria. If no matching nodes are available, the scheduler still schedules the Pod.&lt;/p&gt;

&lt;h1&gt;
  
  
  Kubernetes Interview Questions — Part 7 — Storage
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FStorage-2048x1252.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FStorage-2048x1252.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What storage options exist in Kubernetes?
&lt;/h2&gt;

&lt;p&gt;The storage abstractions of Kubernetes are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Volume;&lt;/li&gt;
&lt;li&gt;PersistentVolume;&lt;/li&gt;
&lt;li&gt;PersistentVolumeClaim;&lt;/li&gt;
&lt;li&gt;StorageClass.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Kubernetes Volume?
&lt;/h2&gt;

&lt;p&gt;A volume is a directory that stores data used by a pod. Volumes are attached to pods and exist as long as the pod does. A single Kubernetes volume can be shared by multiple containers within a single Pod.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes PersistentVolume?
&lt;/h2&gt;

&lt;p&gt;A PersistentVolume is an API object that represents a piece of storage in the cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes PersistentVolumeClaim?
&lt;/h2&gt;

&lt;p&gt;A PersistentVolumeClaim is a request for storage created by a user. It is similar to a Pod — Pods consume node resources, and PVCs consume PV resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the two ways for provisioning a Persistent Volume?
&lt;/h2&gt;

&lt;p&gt;There are two ways PVs may be provisioned: static provisioning and dynamic provisioning.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is static provisioning?
&lt;/h2&gt;

&lt;p&gt;A cluster administrator creates persistent volumes manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is dynamic provisioning?
&lt;/h2&gt;

&lt;p&gt;The cluster will dynamically provision a volume exclusively for the persistent volume claim using a storage class if none of the static persistent volumes match a PersistentVolumeClaim.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes StorageClass?
&lt;/h2&gt;

&lt;p&gt;A StorageClass provides a way to define the “class” of storage they want for their applications. Which is later can be used for dynamic provisioning — creating a PersistentVolumeClaim without having to manually create a PersistentVolume.&lt;/p&gt;

&lt;h2&gt;
  
  
  What types of Persistent Volumes do you know?
&lt;/h2&gt;

&lt;p&gt;PersistentVolume types are implemented as plugins. Kubernetes currently supports the following plugins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;local — local storage devices mounted on nodes;&lt;/li&gt;
&lt;li&gt;nfs — Network File System (NFS) storage;&lt;/li&gt;
&lt;li&gt;cephfs — CephFS volume;&lt;/li&gt;
&lt;li&gt;fc — Fibre Channel (FC) storage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Part 8 — Troubleshooting Kubernetes
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FStorage-2048x1252.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fyourdevopsmentor.com%2Fwp-content%2Fuploads%2F2022%2F09%2FStorage-2048x1252.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How can you debug a Pod which is failing?
&lt;/h2&gt;

&lt;p&gt;To debug a Pod, you can do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use kubectl describe pod to fetch details of the pod;&lt;/li&gt;
&lt;li&gt;Use kubectl logs to obtain logs from the failed pod;&lt;/li&gt;
&lt;li&gt;Exec into a container using the “kubectl exec” command;&lt;/li&gt;
&lt;li&gt;Connect an ephemeral container using the “kubectl debug” command.
##How to obtain logs from a Kubernetes Pod?
To obtain logs from a Kubernetes Pod, you can use the “kubectl logs” command.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to troubleshoot a Pod which hangs in a Pending state?
&lt;/h2&gt;

&lt;p&gt;There are no logs yet since the Pending container is not scheduled and hasn’t started yet. This means we can’t use “kubectl logs”. Instead, “kubectl describe” should be used.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does CrashLoopBackOff mean?
&lt;/h2&gt;

&lt;p&gt;The CrashLoopBackOff is an error state in Kubernetes where a container continuously restarts but never succeeds in staying up for more than a few seconds. This can be caused by a number of factors, such as a misconfigured container or a bug in the application code.&lt;/p&gt;

&lt;h2&gt;
  
  
  You have successfully created a Deployment. However, no Pods were created. What could be the issue?
&lt;/h2&gt;

&lt;p&gt;That happens when a ReplicaSet is unable to create a Pod. You need to run “kubectl describe replicaset” to get more details about the reason for that issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is debug container?
&lt;/h2&gt;

&lt;p&gt;The debug container is an ephemeral container that can be attached alongside the failed container you wish to debug. This is useful when your primary container does not have utilities that are required for debugging installed in it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Part 9 — Kubernetes Operators
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is Kubernetes Operator?
&lt;/h2&gt;

&lt;p&gt;A Kubernetes Operator is a way of packaging, deploying, and managing a Kubernetes application. An Operator is essentially a human operator but embodied in a piece of software. It makes use of the Kubernetes API to automate the management of an application.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the main building blocks of an operator?
&lt;/h2&gt;

&lt;p&gt;The main building blocks of an operator are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom Resource Definition and Custom Resource;&lt;/li&gt;
&lt;li&gt;Controller.
##What is Custom Resource?
A custom resource is a primary option to extend the Kubernetes API. It allows adding new resource types that are not available by default in a Kubernetes cluster.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Custom Resource Definition?
&lt;/h2&gt;

&lt;p&gt;A Custom Resource Definition (CRD) is a manifest that defines a custom resource.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Controller?
&lt;/h2&gt;

&lt;p&gt;A Kubernetes controller is a loop that watches the state of the API object or the Custom Resource and makes necessary changes ensuring that the observed state of the API object matches the desired one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Kubernetes Operator Framework?
&lt;/h2&gt;

&lt;p&gt;The Kubernetes Operator Framework is a set of tools and practices for simplifying the development and distribution of Kubernetes Operators.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the main components of the Kubernetes Operator Framework?
&lt;/h2&gt;

&lt;p&gt;The main components of the Kubernetes Operator Framework are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operator SDK;&lt;/li&gt;
&lt;li&gt;Operator Lifecycle Manager;&lt;/li&gt;
&lt;li&gt;OperatorHUB.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Operator SDK?
&lt;/h2&gt;

&lt;p&gt;A set of tools that helps to start developing an Operator project from scratch is called Operator SDK. It includes predefined APIs, some standard functions, and code generators.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Operator Lifecycle Manager?
&lt;/h2&gt;

&lt;p&gt;Operator Lifecycle Manager is a tool that runs inside a Kubernetes cluster and provides functionality for interacting with Kubernetes Operators. It is mainly used for the installation and upgrading of Operators.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is OperatorHub?
&lt;/h2&gt;

&lt;p&gt;OperatorHub is an open catalog of publicly available operators.&lt;/p&gt;

&lt;h1&gt;
  
  
  Before We Finish
&lt;/h1&gt;

&lt;p&gt;Memorizing questions without having a proper understanding isn’t usually effective. Make sure you can explain each and every concept mentioned in this article in your own words.&lt;/p&gt;

&lt;p&gt;Also, you should never forget about practice. Focusing on learning theory and implementing it in a real environment will produce the best result.&lt;/p&gt;

&lt;p&gt;If this list of Kubernetes interview questions helped you, please support our effort by sharing the article with your friends and colleagues. Our mission is to help as many people as possible to get a better life by landing high-paying jobs in Kubernetes, Cloud-Native, and DevOps.&lt;/p&gt;

&lt;p&gt;You can find other interesting articles on our blog: &lt;a href="https://yourdevopsmentor.com/blog/" rel="noopener noreferrer"&gt;https://yourdevopsmentor.com/blog/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apply for individual mentorship here: &lt;a href="https://yourdevopsmentor.com/apply/" rel="noopener noreferrer"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Originally published at &lt;a href="https://yourdevopsmentor.com" rel="noopener noreferrer"&gt;https://yourdevopsmentor.com&lt;/a&gt; on September 13, 2022.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>cloud</category>
      <category>career</category>
      <category>devops</category>
    </item>
    <item>
      <title>What cloud to learn in 2022?</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Thu, 08 Sep 2022 00:39:55 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/what-cloud-to-learn-in-2022-34fi</link>
      <guid>https://dev.to/vladimirmukhin/what-cloud-to-learn-in-2022-34fi</guid>
      <description>&lt;p&gt;If you’re interested in shifting your career into DevOps, you probably know by now how important the cloud is. But there are so many options out there. What cloud should you learn in 2022?&lt;/p&gt;

&lt;p&gt;The short answer – learn AWS. The long answer – scroll down and let me explain why 👇👇👇&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MfamPP8D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bjuo2w20ns3lgubqisqp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MfamPP8D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bjuo2w20ns3lgubqisqp.png" alt="Image description" width="368" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everything in the world has a purpose, especially decisions to try new things. Learning cloud (or anything for that matter) is not an exception. It is important that you know not only what you want to learn, but why you want to learn it. How will this serve your personal purpose?&lt;/p&gt;

&lt;h1&gt;
  
  
  The ultimate question of life, the universe and everything
&lt;/h1&gt;

&lt;p&gt;So, before you proceed with this article, ask yourself a question: &lt;strong&gt;“Why do I want to learn cloud?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most likely, your reason to learn cloud (or any other technology) is that you want to get new skills that will make you more attractive to employers and finally give you a better high-paying job. These are all valid reasons, but they don’t help you narrow down how you’ll achieve these goals and what cloud to learn. I encourage you to dig deeper.&lt;/p&gt;

&lt;p&gt;Try this approach to the question, in a slightly different form: &lt;strong&gt;“What cloud should I learn to maximize my success on a job market?”&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What cloud will maximize success on a job market?
&lt;/h1&gt;

&lt;p&gt;I wanted to answer this question precisely, based on real data.  I analyzed several dozens of job postings to see what cloud technologies they list in their job description. As a baseline keyword for my search, I focused on the title of “DevOps engineer” (and before you come for me, yes, I recognize this isn’t the most precise term because DevOps is a methodology). I limited my search to the New York City area. And here is what I found.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c3WD-E2v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwd20xgfzut2h09invnj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c3WD-E2v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwd20xgfzut2h09invnj.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More than 50% percent of job postings require AWS. This means that if you know AWS, your chances of being a fit for a job are two times greater than if you know GCP or Azure.&lt;/p&gt;

&lt;h1&gt;
  
  
  This does not end with cloud though
&lt;/h1&gt;

&lt;p&gt;This analysis clearly shows that AWS is the cloud to go with if you’re looking to maximize your potential for success on the DevOps job market. It doesn’t end with the cloud though; we can use this analytical approach to make informed decisions about any tool, technology, or framework.&lt;/p&gt;

&lt;p&gt;For example, we can decide which operating system is better to learn.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OyKD0AUA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ya8mpq9mblauvorzs1me.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OyKD0AUA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ya8mpq9mblauvorzs1me.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;67% of hiring managers have Linux as a requirement in their job postings – it’s more than two times more popular than Windows. This means Linux should be your first choice of the operating system for matching requirements for the maximum possible job opportunities on the market.&lt;/p&gt;

&lt;h1&gt;
  
  
  Kubernetes again?!
&lt;/h1&gt;

&lt;p&gt;How about Kubernetes? You’ve probably heard of it growing in popularity. Is Kubernetes really that hot? 🔥🔥🔥&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fEqO_R4D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wzp5q69t4t2jwae9bgfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fEqO_R4D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wzp5q69t4t2jwae9bgfl.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The data tells us that Kubernetes is a requirement in more than one out of every two job postings. With a 50/50 chance of Kubernetes being expected in a DevOps job, you certainly gain an edge if you decide to add it to your resume.&lt;/p&gt;

&lt;p&gt;What about Docker? Docker was the first container runtime that was supported by Kubernetes. Even though Kubernetes has recently deprecated Docker as a container runtime, they still come hand-in-hand with each other in job postings, so it’s helpful to know both. 🐳🐳🐳&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SMLsV4_k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sad732agj0z5tc8vupkr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SMLsV4_k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sad732agj0z5tc8vupkr.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Should a DevOps engineer know how to code?
&lt;/h1&gt;

&lt;p&gt;Does a DevOps engineer need to know programming? A typical hiring manager will likely say yes. Some programming language is mentioned as a requirement in 67% of jobs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sIw1aecc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1u102vbatr2jv8v6btxa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sIw1aecc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1u102vbatr2jv8v6btxa.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That can sound overwhelming because learning programming from scratch is challenging and time-consuming. When it comes down to it though, according to this data, you don’t have to worry too much. &lt;strong&gt;In most cases, programming is not a primary requirement, but rather nice-to-have.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ok, we have identified that we need to know programming as well, but which language to choose? Among programming languages, Python is the absolute leader and Bash is on the second place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EpNqCne5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ez1rci18crl91hzyja6b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EpNqCne5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ez1rci18crl91hzyja6b.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What automation tools to learn?
&lt;/h1&gt;

&lt;p&gt;Jenkins has crashed everybody on a CiCd front, along with GitHub as a heavily preferred version control tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8nwUyHcT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vhw60jh4vnxdkbspwv1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8nwUyHcT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vhw60jh4vnxdkbspwv1i.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When it comes to Infrastructure as Code, Terraform (which is my favorite IaC tool) is an absolute winner in the industry as a whole, with a small fraction of postings that cite CloudFormation and Azure ARM. Even though Pulumi had a good start when it was first released, it hasn’t reached global popularity—it was only a requirement in one position.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0xIMoyW3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g5cnoutkpb18504oaicz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0xIMoyW3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g5cnoutkpb18504oaicz.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the Configuration Management field, the biggest player is Ansible. It’s required in almost 50% of cases. The second place is shared by Chef and Puppet with a small pinch of SaltStack. 🧂🧂🧂&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FC_3FvIl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i7rbnr6pns570kj9dfvb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FC_3FvIl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i7rbnr6pns570kj9dfvb.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What about degrees and certifications?
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WvHGq2h7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hfzjulku47lokooudwxx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WvHGq2h7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hfzjulku47lokooudwxx.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lot of people who are pursuing DevOps as a new career don’t always have a higher degree. 🎓🎓Often, this can cause anxiety and make people feel disadvantaged for a job in the field. But when we ask “is a degree a requirement?” in this data, the answer is – not really.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---FqK3TVC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/unjqbh9nq8v4y4pfz3o4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---FqK3TVC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/unjqbh9nq8v4y4pfz3o4.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Only 23% of jobs require a degree, with an additional 9% that would like to see a candidate with a degree but are also ready to accept experienced candidates that don’t have one. The remaining majority—66% of jobs—don’t mention anything about a degree requirement at all. This is an industry you can truly enter into at any point in your professional life even without “traditional” education or degrees.&lt;/p&gt;

&lt;p&gt;Finally, when it comes to judging how qualified a candidate is for a job, are companies more partial to certifications or experience? How valuable are certifications from a hiring manager’s point of view? Unfortunately, only 4% of jobs mentioned something about Certifications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rIN6BEBe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vuhs742xhmnxikz7gcdl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rIN6BEBe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vuhs742xhmnxikz7gcdl.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Where certification was mentioned, it was only seen as a nice-to-have supplemental feature, but not a requirement by any means. That said, there’s certainly no downside to being certified. Even if not a job requirement, it can help you stand out from the pack.&lt;/p&gt;

&lt;h1&gt;
  
  
  Let’s summarize
&lt;/h1&gt;

&lt;p&gt;Certainly, data can show us so much about trends and job requirements in the DevOps field. One of the reasons I love this exercise is because it objectively analyzes job postings to give you a visual breakdown of whatever you’re studying. Even more, it’s replicable—you can conduct a similar study yourself, focused specifically on your location and keywords.&lt;/p&gt;

&lt;p&gt;As a guide, here’s a general process for conducting similar research on your own:  &lt;/p&gt;

&lt;p&gt;Define your target job position and location. For example, in this study it was “DevOps engineer” in New York City.&lt;br&gt;
Search a job database using your keyword and count how many times a technology (e.g., cloud, Kubernetes, Windows, certificate, etc.) is mentioned in the dataset of job postings&lt;br&gt;
Compare your results. It can be helpful to create graphs and visuals to quantify the comparisons.&lt;br&gt;
Make an informed decision about next steps. Use this data to guide you as you move forward in your DevOps career. Figure out what to prioritize and focus on. And then…start learning!&lt;br&gt;
And of course, any career journey is faster and more engaging with an experienced friend who can help out and give personalized advice. Luckily, we offer that here at Your DevOps Mentor—where our recommendations are always research-based just like this one.&lt;/p&gt;




&lt;p&gt;Apply for a mentorship here: &lt;a href="https://yourdevopsmentor.com/apply/"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with me on LinkedIn: &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-devops/"&gt;https://www.linkedin.com/in/vladimir-mukhin-devops/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The success story of my client: &lt;a href="https://yourdevopsmentor.com/blog/from-biologist-to-devops-engineer/"&gt;https://yourdevopsmentor.com/blog/from-biologist-to-devops-engineer/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Originally published on &lt;a href="https://yourdevopsmentor.com/"&gt;https://yourdevopsmentor.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>career</category>
      <category>certifications</category>
    </item>
    <item>
      <title>Dockerize an application in less than 3 minutes</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Thu, 08 Sep 2022 00:18:44 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/dockerize-an-application-in-less-than-3-minutes-2edf</link>
      <guid>https://dev.to/vladimirmukhin/dockerize-an-application-in-less-than-3-minutes-2edf</guid>
      <description>&lt;p&gt;Everyone knows Docker. Docker is a set of tools that use OS-level virtualization to deliver software in packages called containers. If you have never tried Docker before, this guide is a perfect place to start. Follow these instructions and it will take less than 3 minutes to Dockerize your first application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---OjEYIAd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/taudnz2ahh464pfbipwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---OjEYIAd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/taudnz2ahh464pfbipwz.png" alt="Image description" width="880" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1. Install Docker.&lt;/strong&gt; Follow the instructions for your platform:&lt;br&gt;
Windows: &lt;a href="https://docs.docker.com/desktop/windows/install/"&gt;https://docs.docker.com/desktop/windows/install/&lt;/a&gt;&lt;br&gt;
Linux: &lt;a href="https://docs.docker.com/engine/install/ubuntu/"&gt;https://docs.docker.com/engine/install/ubuntu/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2. Install Node.js.&lt;/strong&gt; The application we will containerize is written on Node.js. Therefore, we need tooling that will allow us to test the application locally without a container first. However, of course, we can use an application that is written in any other language.&lt;br&gt;
Linux: &lt;a href="https://www.geeksforgeeks.org/installation-of-node-js-on-linux"&gt;https://www.geeksforgeeks.org/installation-of-node-js-on-linux&lt;/a&gt;&lt;br&gt;
Windows: &lt;a href="https://www.geeksforgeeks.org/installation-of-node-js-on-windows"&gt;https://www.geeksforgeeks.org/installation-of-node-js-on-windows&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3. Download the sample app.&lt;/strong&gt; Open your terminal and run these commands:&lt;/p&gt;

&lt;p&gt;Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://raw.githubusercontent.com/vladimirmukhin/nodejs-hello/main/app.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;powershell "Invoke-WebRequest -Outfile app.js -Uri https://raw.githubusercontent.com/vladimirmukhin/nodejs-hello/main/app.js"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4. Launch the application locally&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node app.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5. Make sure the application responds on port 3000&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl http://127.0.0.1:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or open this address in your browser&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6. Create a Docker file.&lt;/strong&gt; Create a file that is called Dockerfile(without extension) and add the following lines inside&lt;/p&gt;

&lt;p&gt;Use node as your base image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;copy app.js into your container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;COPY ./app.js .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On a container startup run the application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CMD node app.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To summarize, your Dockerfile should look like this:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IT7YC1g7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofn80ymc4j9xy9iba2yf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IT7YC1g7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofn80ymc4j9xy9iba2yf.png" alt="Image description" width="880" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7. Build your image.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t nodejs-hello:latest .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 8. Run your container.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -d -p 3000:3000 nodejs-hello:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 9. Validate your container.&lt;/strong&gt; Make sure the application responds on port 3000. But this time, it is actually being served from the container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl http://127.0.0.1:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or open this address in your browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iQ5LEbtP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5jf1elz9l4z66ys90yuv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iQ5LEbtP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5jf1elz9l4z66ys90yuv.png" alt="Image description" width="880" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! You have created your first docker image and launched your first container. Let me know in the comments how much time did it take for you.&lt;/p&gt;




&lt;p&gt;Apply for individual mentorship here: &lt;a href="https://yourdevopsmentor.com/apply/"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with me on LinkedIn: &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-devops/"&gt;https://www.linkedin.com/in/vladimir-mukhin-devops/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The success story of my client: &lt;a href="https://yourdevopsmentor.com/blog/from-biologist-to-devops-engineer/"&gt;https://yourdevopsmentor.com/blog/from-biologist-to-devops-engineer/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Originally published on &lt;a href="https://yourdevopsmnetor.com"&gt;https://yourdevopsmnetor.com&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Fastest Way to Pass Any Cloud Exam</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Wed, 07 Sep 2022 22:01:48 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/the-fastest-way-to-pass-any-cloud-exam-o3i</link>
      <guid>https://dev.to/vladimirmukhin/the-fastest-way-to-pass-any-cloud-exam-o3i</guid>
      <description>&lt;p&gt;The DevOps and Cloud Computing job market is extremely hot nowadays, and developer jobs are in high demand.&lt;/p&gt;

&lt;p&gt;While demand for DevOps is certainly here to stay, it’s a competitive, constantly changing field. To remain relevant, you need to move quickly and you need to be able to prove your expertise. It’s no longer enough to hold one certificate to be considered an expert.&lt;/p&gt;

&lt;p&gt;There are university graduates applying for junior roles with tens of certificates in their pockets. Even though many employers don’t require a degree for their DevOps jobs, the sheer number of certificates that graduates have can give them a leg up. And even though certificates—no matter how many you have—make no difference unless you combine them with real practice and experience, they can still advance your job search and help you stay relevant.&lt;/p&gt;

&lt;p&gt;“Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!”&lt;/p&gt;

&lt;p&gt;If you’re using certifications to demonstrate expertise, you need to have many of them, ideally expert-level ones.&lt;/p&gt;

&lt;p&gt;To achieve this, it’s becoming critical to develop the skill of passing the certification exam fast. Below, I have described a 3-step approach that allows you to pass any theoretical cloud exam, and most importantly, pass it quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LMPY59Wm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dmbyvqi7mfl52ukkqg27.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LMPY59Wm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dmbyvqi7mfl52ukkqg27.png" alt="Image description" width="880" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 1 – Learn theory
&lt;/h1&gt;

&lt;p&gt;You can’t get certified in something you haven’t learned yet, so your first step towards passing a certification exam is to know what you’re being tested on. You’ve got to learn the theory.&lt;/p&gt;

&lt;p&gt;There are many resources available to help you learn the basics of any DevOps program or skill. Ultimately, it doesn’t really matter what resource you are using. Use the ones that work for your learning style, budget, and level of expertise. Almost all modern courses are good enough, from Udemy to Pluralsight to ACloudGuru.&lt;/p&gt;

&lt;p&gt;For example, AcloudGuru offers a decent AWS Certified Solutions Architect Associate course that will help you quickly learn the theory needed to get an AWS certificate:  &lt;a href="https://learn.acloud.guru/course/aws-certified-solutions-architect-associate"&gt;https://learn.acloud.guru/course/aws-certified-solutions-architect-associate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember, your goal is to successfully grasp the basics as fast as possible. Many courses include labs—skip these.  If you are comfortable, you can even increase playback speed.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 2 - Practice tests
&lt;/h1&gt;

&lt;p&gt;Once you feel like you’ve learned the theory, it’s time to dive into actually practicing. The key here—my secret sauce, let’s say—is in how you practice. Read this carefully and apply it exactly as described. One important thing to know before you start: don’t think about these practice exams as a knowledge check. Instead, consider them an additional learning exercise. Framing your practice in this way helps you build true skills.&lt;/p&gt;

&lt;p&gt;First, buy and download any practice test bundle. All of them are equally good. Sticking with the example above, let’s consider the AWS Solutions Architect Associate exam. In this case, let’s consider this practice test bundle from Udemy: &lt;a href="https://www.udemy.com/course/aws-certified-solutions-architect-associate-amazon-practice-exams-saa-c03/"&gt;https://www.udemy.com/course/aws-certified-solutions-architect-associate-amazon-practice-exams-saa-c03/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The practice tests usually come in different modes: “Timed mode,” which mimics the actual exam, and “Review Mode,” where you can view answers and explanations after each question.&lt;/p&gt;

&lt;p&gt;Pick the “Review Mode” and follow the algorithm described below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read the question several times carefully, paying attention to each word.&lt;/li&gt;
&lt;li&gt;Read the options several times carefully, paying attention to each option.&lt;/li&gt;
&lt;li&gt;Select the option you think is the correct answer. Don’t press the submit button yet!&lt;/li&gt;
&lt;li&gt;Explain to yourself out loud why you think the option you have chosen is correct.&lt;/li&gt;
&lt;li&gt;Go through the rest of the options. Explain to yourself why they aren’t correct.&lt;/li&gt;
&lt;li&gt;Press the submit button and verify your assumption.&lt;/li&gt;
&lt;li&gt;Regardless of whether you were right or wrong, go to the AWS documentation and search for the learning page that confirms your answer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At this stage, slow down. Rushing will not help you learn. The goal is quality over quantity.&lt;/p&gt;

&lt;p&gt;Don’t complete this process on all 60 questions at once. You’ll tire yourself out and have less space to internalize the information. Start with just several questions per day and slowly increase your speed. Don’t skip any questions and don’t scan through the pages, even if you’re tempted.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 3 – Be ready for a second attempt.
&lt;/h1&gt;

&lt;p&gt;At this point, you’ve learned the concepts and practiced using the technique described. Do a gut check. How ready do you feel to take the exam? Perhaps contrary to belief, you shouldn’t feel 100% sure about every topic. It would take months if not a year or more to take an exam where you are 100% confident about everything.  This is not feasible or realistic in today’s job market and the everyday demands of life. Instead, it’s better to take the exam when you feel about 70% sure about the material.&lt;/p&gt;

&lt;p&gt;Take the exam! Simple, right? Of course, it’s simple if you pass the exam on this first attempt. In that case, your goal is completed. Congratulations! You can move on to getting the next certificate.&lt;/p&gt;

&lt;p&gt;While it’s more than possible to pass the exam on your first attempt, that’s not the case for many people—and that’s okay! Expect to take the exam a second time. In fact, it could be a benefit to you to do so.&lt;/p&gt;

&lt;p&gt;From my experience, people who fail the exam the first time still do so with a score of around 60%. See that as a learning opportunity. You can now use the questions from the real exam as feedback on how to improve.&lt;/p&gt;

&lt;p&gt;Think about this possibility while you take the test for the first time. You are not allowed to make any notes during the test, so before you press the submit button, take several minutes to review all your questions and try to remember as much about them as possible. Make mental notes about which topics you felt less confident on and any gaps in your knowledge. Then press the submit button. The moment you see anything other than “pass”, write down all those mental notes immediately. That will become your study plan for the next 14 days.&lt;/p&gt;

&lt;p&gt;And then, take the exam again. Be confident!&lt;/p&gt;

&lt;p&gt;The great thing about this system is that it can be universally applied across any Cloud certification exam in a fast and efficient way. This is how I teach my clients, and they have been successful in getting certifications using this method.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rvuJ1aff--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ufne494ewlst3bwn17b.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rvuJ1aff--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ufne494ewlst3bwn17b.jpeg" alt="Image description" width="880" height="680"&gt;&lt;/a&gt;&lt;br&gt;
To prove that I not only talk the talk but can also walk the walk, here is the recent certificate of my mentee who prepared using this system. He spent less than a month studying and passed the exam on the first attempt.&lt;/p&gt;

&lt;p&gt;Remember, certificates under your belt—and a lot of them—are tangible evidence for potential employers. Recruiters look for them, so run “twice as fast” and beat the competition.&lt;/p&gt;




&lt;p&gt;Apply for individual mentorship here: &lt;a href="https://yourdevopsmentor.com/apply/"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with me here: &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-devops/"&gt;https://www.linkedin.com/in/vladimir-mukhin-devops/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Originally published on &lt;a href="https://yourdevopsmentor.com/"&gt;https://yourdevopsmentor.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>certification</category>
      <category>aws</category>
      <category>devops</category>
    </item>
    <item>
      <title>Launch Your First Jenkins Server in a Single Command</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Wed, 07 Sep 2022 20:02:54 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/launch-your-first-jenkins-server-in-a-single-command-3j36</link>
      <guid>https://dev.to/vladimirmukhin/launch-your-first-jenkins-server-in-a-single-command-3j36</guid>
      <description>&lt;p&gt;Jenkins is one of the oldest and most popular CI/CD tools. It dominates the market and is a requirement for more than 50% of job positions. However, Jenkins is a complicated solution, installing it requires a lot of heavy lifting and can become a pain. In this article, I will uncover the fastest way to deploy Jenkins using only one command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h8WTxRAt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ozto4pmgqquj0g53i27w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h8WTxRAt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ozto4pmgqquj0g53i27w.png" alt="Image description" width="880" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 1. Install Docker
&lt;/h1&gt;

&lt;p&gt;We will need to meet a prerequisite which is having Docker on our system. If you already have docker installed, move straight to Step 2.&lt;/p&gt;

&lt;p&gt;Older versions of Docker were called docker, docker.io, or docker-engine. If these are installed, uninstall them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get remove docker docker-engine docker.io containerd runc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update the apt package index and install packages to allow apt to use a repository over HTTPS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add Docker’s official GPG key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the following command to set up the stable repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update the apt package index, and install the latest version of Docker Engine and containerd, or go to the next step to install a specific version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More detailed instructions for all supported platforms can be found on a website: &lt;a href="https://docs.docker.com/engine/install/ubuntu/"&gt;https://docs.docker.com/engine/install/ubuntu/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 2. The command
&lt;/h1&gt;

&lt;p&gt;I’ll just leave it here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -d -p 8080:8080 jenkins/jenkins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in this command:&lt;br&gt;
-d starts the container in a daemon mode&lt;br&gt;
-p 8080:8080 exposes the required port to outside&lt;/p&gt;

&lt;p&gt;If you want to have persistent storage, you can also bind your local volume inside the container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -d -p 8080:8080 jenkins/jenkins -v /your/home:/var/jenkins_home
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Step 3. Some extra clicks in the UI
&lt;/h1&gt;

&lt;p&gt;Open &lt;a href="http://127.0.0.1:8080"&gt;http://127.0.0.1:8080&lt;/a&gt; in your browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7uh7QVt1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ec9ybf4uosq4c5w6xu4o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7uh7QVt1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ec9ybf4uosq4c5w6xu4o.png" alt="Image description" width="880" height="715"&gt;&lt;/a&gt;&lt;br&gt;
Jenkins will ask for an initial password, you can obtain it from docker logs using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker logs $(docker ps | grep jenkins | awk '{print $1 }')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Click through the setup wizard, wait until basic plugins are installed, and enjoy your fresh Jenkins installation!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q9RDbJL5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s3v70gmv2tl9vlsgoz1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q9RDbJL5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s3v70gmv2tl9vlsgoz1u.png" alt="Image description" width="880" height="714"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Apply for individual mentorship here: &lt;a href="https://yourdevopsmentor.com/apply/"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;br&gt;
Connect with me on Linkedin: &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-devops/"&gt;https://www.linkedin.com/in/vladimir-mukhin-devops/&lt;/a&gt;&lt;br&gt;
If you enjoyed the article, check out other blogs as well: &lt;a href="https://yourdevopsmentor.com/blog/"&gt;https://yourdevopsmentor.com/blog/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Originally published on &lt;a href="https://yourdevopsmentor.com/"&gt;https://yourdevopsmentor.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jenkins</category>
      <category>devops</category>
      <category>cloud</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Free Books that will Boost Your DevOps Game to the Next Level</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Wed, 07 Sep 2022 19:22:56 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/free-books-that-will-boost-your-devops-game-to-the-next-level-54ec</link>
      <guid>https://dev.to/vladimirmukhin/free-books-that-will-boost-your-devops-game-to-the-next-level-54ec</guid>
      <description>&lt;p&gt;In order to stay relevant in the constantly changing world of Cloud and DevOps you must acquire new insights. Therefore, you have to read as much as you can. This article is a compilation of the best books that can help in your learning path. Most importantly all the books from this list are available for free. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you are a leader, if you want to be one, you have to read. You cannot grow in your leadership without learning from others and that requires reading.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Kubernetes Up &amp;amp; Running – Dive into the Future of Infrastructure
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ifhgsdSU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/60eyqi8rnyyx2ooz20ad.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ifhgsdSU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/60eyqi8rnyyx2ooz20ad.jpeg" alt="Image description" width="305" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Description: Kubernetes radically changes the way applications are built and deployed in the cloud. Since its introduction in 2014, this container orchestrator has become one of the largest and most popular open-source projects in the world. The updated edition of this practical book shows developers and ops personnel how Kubernetes and container technology can help them achieve new levels of velocity, agility, reliability, and efficiency.&lt;/p&gt;

&lt;p&gt;Author: Brendon Burns, Joe Beda, Kelsey Hightower&lt;/p&gt;

&lt;p&gt;Download for Free: &lt;a href="https://tanzu.vmware.com/content/ebooks/kubernetes-up-running-dive-into-the-future-of-infrastructure"&gt;Kubernetes Up &amp;amp; Running – Dive into Future of Infrastructure&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Automate The Boring Stuff with Python – Practical Programming For Total Beginners
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TajlS2Tj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp31e692vfp8osqw6cb2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TajlS2Tj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp31e692vfp8osqw6cb2.jpg" alt="Image description" width="378" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Description: In Automate the Boring Stuff with Python, you’ll learn how to use Python to write programs that do in minutes what would take you hours to do by hand – no prior programming experience required. Once you’ve mastered the basics of programming, you’ll create Python programs that effortlessly perform useful and impressive feats of automation.&lt;/p&gt;

&lt;p&gt;Author: Al Sweigart&lt;/p&gt;

&lt;p&gt;Read online: &lt;a href="https://automatetheboringstuff.com/"&gt;Automate The Boring Stuff with Python – Practical Programming For Total Beginners&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Designing Distributed Systems – Patterns and Paradigms for Scalable, Reliable Services
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u2OX35xE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3bf4cdwegpg11i1kjdz7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u2OX35xE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3bf4cdwegpg11i1kjdz7.png" alt="Image description" width="734" height="823"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Description: Distributed systems enable different areas of a business to build specific applications to support their needs and drive insight and innovation. While great for the business, this new normal can result in development inefficiencies when the same systems are reimplemented multiple times. This free e-book provides repeatable, generic patterns, and reusable components to make developing reliable systems easier and more efficient—so you can free your time to focus on core development of your app&lt;/p&gt;

&lt;p&gt;Author: Brendan Burns&lt;/p&gt;

&lt;p&gt;Download for Free: &lt;a href="https://azure.microsoft.com/en-us/resources/designing-distributed-systems/"&gt;Designing Distributed Systems – Patterns and Paradigms for Scalable, Reliable Services&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  97 Things Every Cloud Engineer Should Know – Collective Wisdom from the Experts
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OJ-3VRDO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p5a1gwo7tvjlruo81y1s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OJ-3VRDO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p5a1gwo7tvjlruo81y1s.png" alt="Image description" width="768" height="1154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Description: If you create, manage, operate, or configure systems running in the cloud, you’re a cloud engineer–even if you work as a system administrator, software developer, data scientist, or site reliability engineer. With this book, professionals from around the world provide valuable insight into today’s cloud engineering role.&lt;/p&gt;

&lt;p&gt;Author: Emily Freeman and Nathen Harvey&lt;/p&gt;

&lt;p&gt;Download for Free: &lt;a href="https://www.redhat.com/rhdc/managed-files/cl-97-things-cloud-engineers-know-e-book-oreilly-f28602-202105-en.pdf"&gt;97 Things Every Cloud Engineer Should Know – Collective Wisdom from the Experts&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux – Notes for Professionals
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3FIg_7QO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nm45f7f4jqm01cd30m50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3FIg_7QO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nm45f7f4jqm01cd30m50.png" alt="Image description" width="880" height="991"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Description: This Linux® Notes for Professionals book is compiled from Stack Overflow Documentation, the content is written by the beautiful people at Stack Overflow. Text content is released under Creative Commons BY-SA, see credits at the end of this book whom contributed to the various chapters.&lt;/p&gt;

&lt;p&gt;Download for Free: &lt;a href="https://books.goalkicker.com/LinuxBook/"&gt;Linux – Notes for Professionals&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Production Kubernetes – Building Successful Application Platforms
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DylBeZkh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/81kh6kivlyloetk0yqdz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DylBeZkh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/81kh6kivlyloetk0yqdz.jpg" alt="Image description" width="381" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Description: While many organizations have an existing Kubernetes footprint, far fewer are using Kubernetes in production, and even less are operating at scale.  Building an application platform on top of Kubernetes requires more engineering effort from a platform perspective but takes advantage of Kubernetes extensibility, allowing you to create something that aligns with the needs of developers, infrastructure teams, and the business.&lt;/p&gt;

&lt;p&gt;Author: Josh Rosso, Rich Lander, Alexander Brand, John Harris&lt;/p&gt;

&lt;p&gt;Download for Free: &lt;a href="https://tanzu.vmware.com/content/ebooks/production-kubernetes"&gt;Production Kubernetes – Building Successful Application Platforms&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Git – Notes for Professionals
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ifV9XOaB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16ei69p6i4hzoiuqea4k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ifV9XOaB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16ei69p6i4hzoiuqea4k.png" alt="Image description" width="880" height="973"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Description: This Git Notes for Professionals book is compiled from Stack Overflow&lt;br&gt;
Documentation, the content is written by the beautiful people at Stack Overflow.&lt;br&gt;
Text content is released under Creative Commons BY-SA, see credits at the end&lt;br&gt;
of this book whom contributed to the various chapters.&lt;/p&gt;

&lt;p&gt;Download for Free: &lt;a href="https://books.goalkicker.com/GitBook/"&gt;Git – Notes for Professionals&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Apply for individual mentorship here:&lt;br&gt;
&lt;a href="https://yourdevopsmentor.com/apply/"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with me on Linkedin:&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/vladimir-mukhin-devops/"&gt;https://www.linkedin.com/in/vladimir-mukhin-devops/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on Twitter: &lt;a href="https://twitter.com/vmukhindevops"&gt;https://twitter.com/vmukhindevops&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you enjoyed the article, check out other blogs as well: &lt;a href="https://yourdevopsmentor.com/blog/"&gt;https://yourdevopsmentor.com/blog/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Originally published on &lt;a href="https://yourdevopsmentor.com"&gt;https://yourdevopsmentor.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>career</category>
      <category>technology</category>
    </item>
    <item>
      <title>Networking for DevOps – a Complete Guide</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Wed, 07 Sep 2022 15:50:31 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/networking-for-devops-a-complete-guide-3oj9</link>
      <guid>https://dev.to/vladimirmukhin/networking-for-devops-a-complete-guide-3oj9</guid>
      <description>&lt;p&gt;Are you starting out a career in DevOps and not sure if networking knowledge is necessary? Or perhaps you’re a veteran DevOps practitioner looking to get more knowledge about computer networks? Regardless of your background or current expertise, the information in this article will help you learn the basics of networking for a successful career in DevOps—because yes, DevOps engineers should be familiar with the core elements of networking.&lt;/p&gt;

&lt;p&gt;Consider this article a resource of essential knowledge that breaks down everything you need to know about networking as a DevOps engineer.&lt;/p&gt;

&lt;p&gt;This includes topics like the OSI model and the main protocols of TCP/IP. DevOps engineers must know how to calculate subnet sizes and understand the basics of routing. In addition, it is essential for a DevOps engineer to know how to debug using network tools like Ping, Traceroute, and Telnet.&lt;/p&gt;

&lt;p&gt;Read along as I break down these skills for you, and return to this article when you need a refresher—this is your one-stop shop for everything DevOps Networking.&lt;/p&gt;

&lt;h1&gt;
  
  
  OSI Model
&lt;/h1&gt;

&lt;p&gt;The Open Systems Interconnection (OSI) model is a set of standards that defines how computers communicate over a network. In the OSI model, data flow gets broken down into seven layers that build upon each other. Each layer uses data from the layer before it and serves a specific purpose in the broader network communication.&lt;/p&gt;

&lt;p&gt;The OSI model works from the bottom up, beginning from layer 1 (Physical) and ending with the top layer 7 (Application). The top layer is the most direct point of user interaction with the OSI model—if you’re reading this article on a device, you’re working on the 7th layer at this very moment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F_mkDAd6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5d8mzl8nurmgnonox0iv.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F_mkDAd6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5d8mzl8nurmgnonox0iv.jpeg" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I break down each layer below:&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Physical
&lt;/h2&gt;

&lt;p&gt;The Physical layer handles raw data within physical media. That raw data is made up of bit of information and the Physical layer converts those into electrical signals that define certain aspects of a piece of physical media. For example, Physical layer specifications may define aspects like voltage levels, transmission distances, and cable standards. You find Physical-layer specifications in technologies like Bluetooth and Ethernet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Data Link
&lt;/h2&gt;

&lt;p&gt;The Data Link layer takes data in the form of electrical signals (frames) and delivers them across members (nodes) of a single network. Data Link frames only operate on a local network and do not cross the boundaries into other networks.&lt;/p&gt;

&lt;p&gt;The Data Link layer can also detect and recover transmission errors by attaching extra information containing an error detection code to a given frame. When that frame is sent across the network, its receiver checks the received frame by matching the extracted data with the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Network
&lt;/h2&gt;

&lt;p&gt;A Network describes the entire ecosystem of subnetworks and other networks that are all connected to each other via special hosts called gateways or routers. The Network layer works with routes (paths from one network to another). The Layer determines the most effective route to convey information. Sometimes, the message you’re trying to send is particularly large. In this case, the network may split it into several fragments at one node, send them separately, and reassemble them at the destination node.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: Transport
&lt;/h2&gt;

&lt;p&gt;The Transport layer protocols provide host-to-host communication services for applications. It is responsible for connection-oriented communication, reliability, and flow control. Connection-oriented communication uses a pre-established connection between hosts as a pathway for communicating between applications. Some protocols of the Transport layer are connection-oriented, but some protocols of this layer are not connection-oriented and instead transfer data end-to-end without the need for connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 5: Session
&lt;/h2&gt;

&lt;p&gt;The Session layer controls connections, whether that’s keeping an eye on possible connection losses or temporarily closing or re-opening connections depending on their frequency of use. The protocols of the Session layer try to recover any connection losses when they happen. It also optimizes connections: if a connection is not used for a long period, Session-layer protocols may close it and re-open it later. These protocols also provide synchronization points in the stream of exchanged messages, or in other words, spots for large messages to momentarily regather and make sure they’re all on the same page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 6: Presentation
&lt;/h2&gt;

&lt;p&gt;The Presentation layer also called a Syntax layer, ensures that the recipient of the information can read and understand what it receives from another system; the information is presented in a legible way. Processes such as data encoding, compression, and encryption happen on this layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 7: Application
&lt;/h2&gt;

&lt;p&gt;The OSI model’s top and final layer is the Application layer. The Application layer displays the data in the correct format to the end-user—you! This includes technologies such as HTTP, DNS, FTP, SSH, and much more. Almost everyone interacts with the protocols of the Application layer on a day-to-day basis (not just you DevOps engineers).&lt;/p&gt;

&lt;h1&gt;
  
  
  TCP/IP
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is TCP/IP, and how is it different from OSI?
&lt;/h2&gt;

&lt;p&gt;The OSI model explained above is great for developing a theoretical understanding of a networking stack, but it’s a challenging model to use in practice. Instead, nowadays we use the Transmission Control Protocol/Internet Protocol (TCP/IP) Model. This model has a similar layered structure, but it’s less complicated.&lt;/p&gt;

&lt;p&gt;TCP/IP combines the three top levels of OSI (Application, Presentation, and Session) into a single Application layer in TCP. The two bottommost layers of OSI (Data Link and Physical) become the Network Interface layer in TCP.&lt;/p&gt;

&lt;p&gt;The final result of these mergers is a 4-layer TCP/IP model. From the bottom up, those are Network Interface, Network, Transport, and Application.&lt;/p&gt;

&lt;p&gt;It is important to keep this difference in mind as you encounter networking scenarios&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GpUOFfMy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lwyjauvfwzub1l2s6jna.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GpUOFfMy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lwyjauvfwzub1l2s6jna.png" alt="Image description" width="880" height="712"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the most important layers to understand in the TCP/IP model is the Application layer. This layer is responsible for process-to-process communication over an IP network. Each application in this layer is defined using a numerical specification called a Request for Comment (RFC). For example, HTTP, which is a protocol on the Application layer, is defined by RFC number 7231.&lt;/p&gt;

&lt;p&gt;The other layer of the TCP/IP model that requires particular special attention is the Transport layer because it introduces several important networking concepts.&lt;/p&gt;

&lt;h2&gt;
  
  
  TCP vs UDP
&lt;/h2&gt;

&lt;p&gt;The Transport layer of the TCP/IP model uses two major protocols: TCP and UDP. You should understand the differences between them.&lt;/p&gt;

&lt;p&gt;TCP is a connection-oriented protocol. This means that it first establishes a link between the source and destination before it sends data. Once the connection has been made, then TCP breaks down large data sets into smaller packets, sends them along the connection, and ensures data integrity throughout the entire process. TCP is a preferred protocol when data integrity is critical, such as in any transactional system.&lt;/p&gt;

&lt;p&gt;UDP in turn is not connection-oriented. UDP starts transmitting data immediately, without waiting for connection confirmation from the receiving side. Even though some data loss can happen, UDP is most often used in cases where speed is more important than perfect transmission, such as in voice or video streaming.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ports and Protocols
&lt;/h2&gt;

&lt;p&gt;The Transport layer of TCP/IP also introduces the concept of ports. TCP ports are labeled with specific port numbers, digital identifiers match the information received from the network with the proper process needed to process that data.&lt;/p&gt;

&lt;p&gt;Here are some examples of the most used ports:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Port Number&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Process&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;What it’s used for&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;SSH&lt;/td&gt;
&lt;td&gt;Secure shell, remote access, and file transfer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;DNS&lt;/td&gt;
&lt;td&gt;Resolving domain names into IP addresses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;HTTP&lt;/td&gt;
&lt;td&gt;Serving web pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;443&lt;/td&gt;
&lt;td&gt;HHTPs&lt;/td&gt;
&lt;td&gt;Serving web pages in a secure manner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3306&lt;/td&gt;
&lt;td&gt;MySQL&lt;/td&gt;
&lt;td&gt;Database connections&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;While many ports are non-privileged,—anyone can use them without special permission—some require root permissions. Ports 1-1023 are called “well-known ports” and require root permissions before a server can listen to them. It’s a good practice to avoid running web servers as root, assign minimal permissions to services, and use nonprivileged ports when possible. That’s why sometimes we can see ports 8080 for HTTP and ports 6433 for HTTPS—they’re non-privileged.&lt;/p&gt;

&lt;h1&gt;
  
  
  IP Subnetting, CIDR
&lt;/h1&gt;

&lt;p&gt;The most critical component of networking is the IP address. Every time you surf the internet, your browser is connected to its remote server using an IP address. You cannot use the internet or network without one.&lt;/p&gt;

&lt;p&gt;An IP address is a 32-bit number divided into four 8-bit sections called octets. It can be represented in both decimal and binary formats. An IP address may contain a subnetwork that’s different from the host. The address comes with a subnet mask that distinguishes the part of the IP address that is the network and the part that is the host address.&lt;/p&gt;

&lt;p&gt;For example, given an IP address of 192.168.12.20 with the subnet mask of 255.255.255.0, 192.168.12 represents a network address and .20 represents a host address. The concept of a netmask leads us to the idea of classful addressing, which divides the 32-bit IP address into 5 sub-classes.&lt;/p&gt;

&lt;p&gt;In classful addressing, all IP addresses have an 8-bit, 16-bit. or 24-bit network prefix. Class A has an 8-bit long network ID and a 24-bit host ID. There are over 16 million class A addresses. Class B has network and host IDs of 16 bits each—there are 65,535 class B addresses. Class C holds the smallest networks—254 addresses. Each Class C network ID is 24 bits long with an 8-bit long host.&lt;/p&gt;

&lt;p&gt;When ordering IP addresses, you want to keep in mind the size of your network and order a class that fits your needs. It’s conceptually easy to do this when you have very large or small networks. But problems arise in the middle when you’re in between Class B and C: you need more than 254 addresses but less than 65,535.&lt;/p&gt;

&lt;p&gt;Let’s use an example. Let’s assume that you need 1000 addresses in your network. It’s more than 254, so you have to go with the next largest class—Class B. But now you’re only occupying 1,000 addresses and left with 65,000 unused ones. It doesn’t make sense. One solution to this could be to use multiple class C ranges. But having a huge number of small networks makes routing overly complicated! In our search for a new solution to this IP trolley problem, we’ve started to break networks using Classless Inter-Domain Routing.&lt;/p&gt;

&lt;p&gt;Instead of having network classes with fixed sizes, network administrators are allowed to move the subnet boundary to anywhere inside the parent network. In other words, we are no longer limited by 8-bit, 16-bit, or 24-bit netmasks.&lt;/p&gt;

&lt;p&gt;Let’s go back to our example. Imagine that we have an address that gives us 254 hosts..but we want 300 hosts. Using the old solution, you could get two Class C ranges (making your life more complicated). Now with Classless Interdomain Routing, instead of getting an additional Class C network, we can simply decrease our netmask bits by one and get a network that has 510 hosts. That’s much more reasonable!&lt;/p&gt;

&lt;p&gt;The table below outlines the most common combination of addresses and netmasks and important details about them.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Prefix&lt;/th&gt;
&lt;th&gt;Netmask&lt;/th&gt;
&lt;th&gt;Number of addresses&lt;/th&gt;
&lt;th&gt;Relation to class&lt;/th&gt;
&lt;th&gt;Comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/32&lt;/td&gt;
&lt;td&gt;255.255.255.255&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Class C/256&lt;/td&gt;
&lt;td&gt;Single host in a network&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/25&lt;/td&gt;
&lt;td&gt;255.255.255.128&lt;/td&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;td&gt;Class C/2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/24&lt;/td&gt;
&lt;td&gt;255.255.255.0&lt;/td&gt;
&lt;td&gt;256&lt;/td&gt;
&lt;td&gt;Class C&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/23&lt;/td&gt;
&lt;td&gt;255.255.254.0&lt;/td&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;Class C*2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/16&lt;/td&gt;
&lt;td&gt;255.255.0.0&lt;/td&gt;
&lt;td&gt;65,536&lt;/td&gt;
&lt;td&gt;Class C*256 = Class B&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/15&lt;/td&gt;
&lt;td&gt;255.254.0.0&lt;/td&gt;
&lt;td&gt;131,072&lt;/td&gt;
&lt;td&gt;Class B*2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/8&lt;/td&gt;
&lt;td&gt;255.0.0.0&lt;/td&gt;
&lt;td&gt;16,777,216&lt;/td&gt;
&lt;td&gt;Class B*256 = Class A&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/0&lt;/td&gt;
&lt;td&gt;0.0.0.0&lt;/td&gt;
&lt;td&gt;4,294,967,296&lt;/td&gt;
&lt;td&gt;Class A*256&lt;/td&gt;
&lt;td&gt;0.0.0.0/0 means entire internet. Often used in public firewall rules&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Routing
&lt;/h1&gt;

&lt;p&gt;So how do we get a packet of information from a host on one network to a host in another? In one word: Routing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cI5oulyY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hup8vtwjoa189xasm2tt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cI5oulyY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hup8vtwjoa189xasm2tt.jpeg" alt="Image description" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Think about a route as a path. Different routes lead to different destinations and are used when trying to reach certain targets. It’s like driving. If your destination is a residence in a quiet neighborhood, you’ll take a local road. If you want to go the mall a few towns over, you may take a state highway. But if you want to road trip across the country, you’ll hop onto the interstate.&lt;/p&gt;

&lt;p&gt;We use tables to help us determine the routes we want to take. This screenshot demonstrates a typical route table in AWS:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xR0eGEkz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/syetvwrdm20poduv019d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xR0eGEkz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/syetvwrdm20poduv019d.png" alt="Image description" width="880" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When making a routing decision, more narrow rules are evaluated first:&lt;/p&gt;

&lt;p&gt;If a packet destination is in a range of 10.21.0.0/16 – it will remain in a local network (your neighborhood).&lt;br&gt;
If a packet destination is in a range of 10.0.0.0/8 – it will be sent to the transit gateway (TGW) interface (your state highways).&lt;br&gt;
If a packet destination does not fall in any of these ranges, the widest one is evaluated which is 0.0.0.0/0 which means it is internet traffic. And the packet will be redirected to the Network Address Translation (NAT) interface (hello, I-95!).&lt;/p&gt;
&lt;h1&gt;
  
  
  Domain Name System (DNS)
&lt;/h1&gt;
&lt;h2&gt;
  
  
  DNS Overview
&lt;/h2&gt;

&lt;p&gt;As discussed previously, computers tell each other apart using IP addresses. Humans, on the other hand, identify things with names. Humans and computers have to interact, but it would be really hard for humans to interpret IP addresses and impossible for computers to communicate with names. This is where the Domain Name System (DNS) comes it. The DNS merges the needs of both parties, converting human-readable domain names into computer-friendly IP addresses and vice versa.&lt;/p&gt;

&lt;p&gt;To better understand how this system works, let’s walk through the process of retrieving an IP address from a web browser request using the DNS lookup process.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Client initiates a query to a Recursive Resolver.&lt;/li&gt;
&lt;li&gt;The Recursive Resolver connects to a Root Server.&lt;/li&gt;
&lt;li&gt;The Root Nameserver then responds to the resolver with the address of a Top Level Domain (TLD) Server (such as .com or .net)&lt;/li&gt;
&lt;li&gt;The Root Resolver makes a request to the TLD Server.&lt;/li&gt;
&lt;li&gt;The TLD Server returns the IP address of the Domain Nameserver, which stores the information about the requested domain.&lt;/li&gt;
&lt;li&gt;The Recursive Resolver sends a query to the Domain Nameserver.&lt;/li&gt;
&lt;li&gt;The IP address for the requested domain is returned to the Recursive Resolver from the Domain Nameserver.&lt;/li&gt;
&lt;li&gt;The Recursive Resolver provides the client with the IP address of the requested domain.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The visual below also explains how this works. It’s a lot like a game of telephone that translates information back and forth from computer to human language until it reaches its final desired form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aUgrm1SY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r4w45uspg5ltdttikl8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aUgrm1SY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r4w45uspg5ltdttikl8i.png" alt="Image description" width="880" height="761"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Domains, Zones, and Delegation
&lt;/h2&gt;

&lt;p&gt;A domain is a self-contained network on the internet. There are many domains and each can have subdomains and more below them.&lt;/p&gt;

&lt;p&gt;The easiest way to visualize domains is as a tree with nodes. The top-level namespace (the DNS root zone) is the highest hierarchical level of the DNS and is divided into top-level domains such as .com .gov and .io. Each TLD of that tree represents a domain and all subdomains below it. For example, example.com is a subdomain of the .com domain. You can keep breaking these domains and subdomains down, like folders and subfolders within a file system.&lt;/p&gt;

&lt;p&gt;Different organizations on different domains. For example, the root domain is owned by the organization called ICANN, while Verisign controls the .com domain. But ownership is not a simple split. The root domain includes all domains on the internet, including the .com domain. It’s like ICANN owns the entire tree while Verisign owns one branch of it…but the branch is still part of the larger tree.&lt;/p&gt;

&lt;p&gt;So how can Verisign own that branch? The answer is delegation. The delegation process allows an organization that owns a domain to give control over a subdomain to another organization.&lt;/p&gt;

&lt;p&gt;Delegation is done via Nameserver (NS) records. When a domain owner delegates a subdomain to another organization, they create an NS record. The NS record indicates the new owner of the subdomain and directs all communications related to that domain to the servers of that organization. The organization controlling these servers is technically a domain owner. It continues as more nameservers are built and subdomains delegated.&lt;/p&gt;

&lt;p&gt;To make things clearer, let’s consider a simplified example.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ICANN manages a root nameserver (in fact there are multiple root nameservers across the globe).&lt;/li&gt;
&lt;li&gt;Verisign builds their own nameserver and asks ICANN to delegate control over the .com zone to them.&lt;/li&gt;
&lt;li&gt;ICANN creates an NS record that points to the nameserver owned by Verisign. Now, any time a client contacts them for the .com domain, they are redirected to Verisign’s server.&lt;/li&gt;
&lt;li&gt;You start a company called “Example Ltd” and you want to register your own domain, example.com, in a .com zone.&lt;/li&gt;
&lt;li&gt;You build your own nameserver and ask Verisign to delegate control over example.com to you.&lt;/li&gt;
&lt;li&gt;Verisign creates similar NS records on their nameserver which delegates control over the example.com domain to “Example Ltd.” Now, you control that domain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WNQPl5qV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjl5k5xdrm96jaisppbx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WNQPl5qV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjl5k5xdrm96jaisppbx.png" alt="Image description" width="880" height="392"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  DNS record types
&lt;/h2&gt;

&lt;p&gt;DNS records, also known as zone files, provide information about a domain. This includes the IP address that is associated with this domain and how to handle queries for it. Each DNS record has a time-to-live setting (TTL) which indicates how often a DNS server will refresh it. &lt;/p&gt;

&lt;p&gt;Below are the most commonly used types of DNS records and their meaning.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Host address&lt;/td&gt;
&lt;td&gt;The most basic and the most commonly used DNS record. It translates human-friendly domain names into computer-friendly IP addresses.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AAAA&lt;/td&gt;
&lt;td&gt;IPv6 host address&lt;/td&gt;
&lt;td&gt;Same as A but for IPv6 (a host address that can have more than one IP address).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CNAME&lt;/td&gt;
&lt;td&gt;Canonical name for an alias&lt;/td&gt;
&lt;td&gt;Maps a name to another name. It should only be used when there are no other records on that name.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ALIAS&lt;/td&gt;
&lt;td&gt;Auto resolved alias&lt;/td&gt;
&lt;td&gt;Maps a name to another name, but can coexist with other records on that name.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MX&lt;/td&gt;
&lt;td&gt;Mail eXchange&lt;/td&gt;
&lt;td&gt;Specifies the e-mail server(s) responsible for a domain name.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NS&lt;/td&gt;
&lt;td&gt;Name Server&lt;/td&gt;
&lt;td&gt;Identifies the DNS servers responsible for a zone. One NS record for each DNS server in a zone.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TXT&lt;/td&gt;
&lt;td&gt;Descriptive Text&lt;/td&gt;
&lt;td&gt;Holds general information about a domain name such as who is hosting it, contact person, phone numbers, etc. Widely used for domain ownership verification.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h1&gt;
  
  
  HTTP
&lt;/h1&gt;
&lt;h2&gt;
  
  
  HTTP Methods
&lt;/h2&gt;

&lt;p&gt;You’ve probably heard about Hypertext Transfer Protocol, also known as HTTP. HTTP allows you to interact with Web pages, HTML documents, and APIs. It is the foundation of any data exchange on the Internet. A typical DevOps engineer works with HTTP every day and should have a solid knowledge of this protocol.&lt;/p&gt;

&lt;p&gt;As a DevOps engineer, you should know what an HTTP request is, the various HTTP request methods that exist, and how they are different from each other.&lt;/p&gt;

&lt;p&gt;An HTTP request is a request message from a client to a server asking for access to a resource.&lt;/p&gt;

&lt;p&gt;There are 7 main HTTP request methods:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Desription&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;Requests the data of an object. The data entity is returned in a response body.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HEAD&lt;/td&gt;
&lt;td&gt;Identical to GET, but without a response body. More for meta information or testing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;Submits a change to an object.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PUT&lt;/td&gt;
&lt;td&gt;Replaces an object.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PATCH&lt;/td&gt;
&lt;td&gt;Updates an object.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OPTIONS&lt;/td&gt;
&lt;td&gt;Describes the communication options for an object.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DELETE&lt;/td&gt;
&lt;td&gt;Deletes an object.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Response codes indicate whether a request was completed successfully or failed. You’ve probably seen them floating around in pop culture references or been on the receiving end of a hyperlink that goes nowhere.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8D9LA5EO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32kbcr0szqmf5t60nfgx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8D9LA5EO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32kbcr0szqmf5t60nfgx.png" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are 4 categories of HTTP responses:&lt;/p&gt;

&lt;p&gt;200s: Successful responses&lt;br&gt;
300s: Redirects&lt;br&gt;
400s: Client errors&lt;br&gt;
500s: Server errors&lt;br&gt;
Take a look at some of the most common response codes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Code&lt;/th&gt;
&lt;th&gt;What It’s Telling&lt;/th&gt;
&lt;th&gt;What it Means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;OK&lt;/td&gt;
&lt;td&gt;Request succeeded.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;302, 307&lt;/td&gt;
&lt;td&gt;Found, Temporary Redirect&lt;/td&gt;
&lt;td&gt;The URI of the requested resource has been changed temporarily.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;301, 308&lt;/td&gt;
&lt;td&gt;Moved Permanently, Permanent Redirect&lt;/td&gt;
&lt;td&gt;The URI of the requested resource has been changed permanently.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;Bad Request&lt;/td&gt;
&lt;td&gt;The server can’t understand the request being sent.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;401&lt;/td&gt;
&lt;td&gt;Unauthorized&lt;/td&gt;
&lt;td&gt;The client must authenticate itself before sending the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;403&lt;/td&gt;
&lt;td&gt;Forbidden&lt;/td&gt;
&lt;td&gt;The client does not have enough permission to access the content.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;404&lt;/td&gt;
&lt;td&gt;Not Found&lt;/td&gt;
&lt;td&gt;The server can’t find the requested resource.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;408&lt;/td&gt;
&lt;td&gt;Request Timeout&lt;/td&gt;
&lt;td&gt;The response was sent to an idle connection and the server wants to terminate it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;418&lt;/td&gt;
&lt;td&gt;I am a Teapot&lt;/td&gt;
&lt;td&gt;The server refuses to brew coffee because it is, permanently, a teapot.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;Internal Server Error&lt;/td&gt;
&lt;td&gt;The server does not know how to handle a request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;502&lt;/td&gt;
&lt;td&gt;Bad Gateway&lt;/td&gt;
&lt;td&gt;The server you are trying to access is a gateway or a reverse proxy (it sits between the client and an actual server that serves the page). You get this error when the gateway gets an incorrect response from a source server.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;503&lt;/td&gt;
&lt;td&gt;Service Unavailable&lt;/td&gt;
&lt;td&gt;The server can’t process the request. This usually happens when a server is down or overloaded.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;504&lt;/td&gt;
&lt;td&gt;Gateway timeout&lt;/td&gt;
&lt;td&gt;Similar to 502, the gateway can’t get a response in time.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  HTTP Headers
&lt;/h2&gt;

&lt;p&gt;HTTP headers allow the client to add additional information to a request for purposes such as authentication, caching, and specifying the type of client device sending the request. Headers are widely used to control traffic and implement features such as canary releases, blue-green deployments, and a/b testing.&lt;/p&gt;

&lt;p&gt;Headers fall into 4 general contexts:&lt;/p&gt;

&lt;p&gt;General Header: A header that works for both response and requests messages.&lt;br&gt;
Request Header: A header that only applies to request messages from a client.&lt;br&gt;
Response Header: A header that only applies to responses from a server.&lt;br&gt;
Entity Header: A header that gives information about the entity itself or the resource requested.&lt;br&gt;
Headers are case-insensitive in the structure Name: Value.&lt;/p&gt;
&lt;h1&gt;
  
  
  Network Troubleshooting Tools
&lt;/h1&gt;
&lt;h2&gt;
  
  
  ping
&lt;/h2&gt;

&lt;p&gt;The easiest tool to test internet network connections is ping. It uses the ICMP protocol’s ECHO_REQUEST datagram to obtain an ICMP ECHO_RESPONSE from a remote host. The Ping command is integrated into all versions of Windows, so all you need to do to start using it is open up your command prompt or application.&lt;/p&gt;

&lt;p&gt;To troubleshoot using ping, first, run it on your own network (the local host) to ensure that your internet network interface works. This is as easy as opening up the command prompt and typing “ping &lt;a href="http://www.google.com%E2%80%9D"&gt;www.google.com”&lt;/a&gt;. Then, as you troubleshoot, you can ping hosts and gateways further and further in the network to try and diagnose the location of connectivity problems.&lt;/p&gt;

&lt;p&gt;When you ping, you get information back, including the percentage of lost packets and average round-trip latency.&lt;/p&gt;
&lt;h2&gt;
  
  
  traceroute
&lt;/h2&gt;

&lt;p&gt;Sometimes a network is particularly slow, and you want to track the routes of your packets or identify which gateway is causing delays. It can be challenging to do this manually, which is where the traceroute command comes in handy.&lt;/p&gt;

&lt;p&gt;“traceroute” is a diagnostic command (also sometimes written as “tracert”) that can show you possible routes across an IP network and calculate any transit delays in that route. Whereas the ping command only shows a final round trip time for packets to go from host to destination and back, traceroute calculates the total time spent establishing a connection by adding up the mean respective round trip times for each subsequent node along a given route.&lt;/p&gt;

&lt;p&gt;The overarching goal of traceroute for troubleshooting is to launch User Datagram Protocol (UDP) probes of increasing time to live (TTL) until the Internet Control Message Protocol (ICMP) sends a “time exceeded” message back. The “time exceeded” message is an indicator that the packet has reached a router along the root. The process increases TTL by one each time until the “port unavailable” message bounces back—indicating either the end of the destination or that the maximum TTL is reached.&lt;/p&gt;

&lt;p&gt;The probes always start by sending a packet with TTL=1. Every time a packet hits a router, it lowers the TTL by 1, so we know that when we get a time exceeded message it is because TTL is at 0; we have reached another stop along the route. Thus, the probe increases TTL by one setting every time, slowly adding hops along the route until the destination is found or the maximum number of hops is hit. At the end of it all, you receive information about the specific path a packet follows and each route along the way.&lt;/p&gt;

&lt;p&gt;The report you receive shares the following information:&lt;/p&gt;

&lt;p&gt;The Time to Live&lt;br&gt;
The IP addresses of each stop in the route—each gateway that has responded to the probe&lt;br&gt;
The round trip time for each router along the route&lt;br&gt;
This is valuable information for knowing an exact route and troubleshooting any speed and network issues. But one of the most valuable tools in traceroute is that the report specifically marks with an asterisk (*) for any router on the route that does not send a response within the time limit. Now, you know exactly where to look to troubleshoot.&lt;/p&gt;

&lt;p&gt;Here’s an example of a report output from a traceroute command. Take a close look at it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZIVwztzt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yle9915u7es53kqks9u3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZIVwztzt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yle9915u7es53kqks9u3.png" alt="Image description" width="880" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You may notice that lines 2 and 3 are identical. This is an example of a buggy kernel in the second hop that forwards packets with zero TTL – lbl.csam.arpa .&lt;/p&gt;

&lt;p&gt;As you can see, traceroute can give you a lot of really helpful diagnostic information quickly and simply. However, it does have limitations. Some networks don’t provide address-to-name translations. When those appear on your report, you have to guess the path that packets take cross-country. This happens in the report sample above at hop number 6 with IP address 128.32.197.4, a router along the NSFNet, which doesn’t give you the named translation.&lt;/p&gt;

&lt;p&gt;Overall, though, traceroute is a commonly used diagnostic tool and one that you will use often in your DevOps career.&lt;/p&gt;
&lt;h2&gt;
  
  
  telnet
&lt;/h2&gt;

&lt;p&gt;One important caveat to tools like ping and traceroute? A server responding to traceroute or ping does not necessarily mean that it is operational.&lt;/p&gt;

&lt;p&gt;Imagine that we have a virtual machine with an Apache HTTP server on it. This means that in order to load web pages, the machine needs to have the Apache daemon up and running. If it’s not running, although the virtual machine may be responsive to ping requests, we will not be able to load anything.&lt;/p&gt;

&lt;p&gt;On the flip side, if a server does not respond to ping, – it’s not necessarily down. Some system administrators configure their firewalls to drop all ping requests, so you’d get no response from the server. But the server behind this firewall can still be reachable via other protocols.&lt;/p&gt;

&lt;p&gt;Because of these limitations to traceroute and ping, you want to be able to test whether or not the protocol you’re using will allow you to establish a network connection. Telnet is a command that can help with this.&lt;/p&gt;

&lt;p&gt;Historically, telnet was used as a command-line interface for accessing remote servers. However, because telnet does not encrypt the data, it is not secure to use it for remote access and has since been replaced by SSH.&lt;/p&gt;

&lt;p&gt;But telnet is still helpful. Nowadays, we can use telnet to test if one host can establish a network connection using a certain protocol. &lt;/p&gt;

&lt;p&gt;A telnet command testing the connection to google.com at port 443, for example, looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E0OSmRzm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b14ydrhftw9gxx1h6b9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E0OSmRzm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b14ydrhftw9gxx1h6b9o.png" alt="Image description" width="584" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see above, the command succeeded, which means that a connection is allowed between our local machine and a remote system on a given port.&lt;/p&gt;
&lt;h2&gt;
  
  
  curl
&lt;/h2&gt;

&lt;p&gt;As a DevOps engineer, you’re frequently going to have to transfer data, and that means you should know how to use curl. curl is an open-source data transfer tool that supports multiple Application-layer protocols. It’s most commonly used for sending HTTP requests, which are requests for access to a resource on a server. curl is freely available and may already be on your system. If it isn’t, you can easily install it.&lt;/p&gt;

&lt;p&gt;The most basic way to use curl is to perform an HTTP GET request (remember from our table earlier in this article that this is a request for a resource (HTTP) that returns the entire entity in the response (GET).&lt;/p&gt;

&lt;p&gt;The basic syntax is: .&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl http://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will send an HTTP GET request to the example.com host.&lt;/p&gt;

&lt;p&gt;If you’re checking an exact response code and only want to see response headers, you can use curl -I. The syntax looks like this in our example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -I http://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By default, curl uses the HTTP GET method. If you wanted to use another method to return a certain type of response, you can use the -X flag in your curl command followed by the type of request that you want. For example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -X POST http://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;sends a curl HTTP POST (not GET) request (submitting a change to an object—in this case, a change to &lt;a href="http://example.com"&gt;http://example.com&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;curl is the master of data transfer, and we can even download files/store a file’s response with curl by using the -o flag. Syntax for this may look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl http://example.com/faile -o output.file.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are other curl commands, too. Explore curl more deeply on the site for the curl project, where you’ll find a plethora of helpful (and totally free) resources. Once you’re familiar with the tool, you’ll be able to use it to accomplish a number of programming tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  dig
&lt;/h2&gt;

&lt;p&gt;The next tool to learn is “dig”, not “how to dig”, but just “dig” – which stands for Domain Information Groper.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6_4yfUHD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vb99op6gdphlvpfr94ke.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6_4yfUHD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vb99op6gdphlvpfr94ke.jpeg" alt="Image description" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is used for troubleshooting Domain Name System (DNS) problems and verifying DNS records. dig performs DNS Lookups and then shows you the answers returned from the name server(s).&lt;/p&gt;

&lt;p&gt;The basic syntax of dig for a DNS record lookup is [dig] [domain name]. This will make an NS query and return the “A record”—Address record—for a given domain name.&lt;/p&gt;

&lt;p&gt;Let’s break down this example by looking up the DNS record for the domain google.com. At the top, you can see the request: dig google.com. In the ANSWER section of the response, you get a number of pieces of information:&lt;/p&gt;

&lt;p&gt;The queried server (google.com)&lt;br&gt;
TTL ( in this case 93)&lt;br&gt;
Query class (IN= internet)&lt;br&gt;
Query type (A= address)&lt;br&gt;
The IP address for the queried domain (172.217.0.46)&lt;br&gt;
So there you have it—the google.com DNS record is associated with the IP address 172.217.0.46.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6kYCjbNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/488bgqk3n5irm9poc9f4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6kYCjbNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/488bgqk3n5irm9poc9f4.png" alt="Image description" width="880" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Like with curl, the dig has a default method. By default, dig will attempt to query each server specified using the /etc/resolv.conf file, the automatic file type for configuring DNS name servers. But in some cases, you may want to send queries to a specific DNS server. You can do this with the @ flag.&lt;/p&gt;

&lt;p&gt;This example checks the DNS record for google.com on specifically the 8.8.8.8 server. As you can see, it returns a different ANSWER from the /etc/resolv.conf file used in the default above.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ek3GpRiN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8v4vucivkhawwl2ko7p9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ek3GpRiN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8v4vucivkhawwl2ko7p9.png" alt="Image description" width="880" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By default, dig also returns an ANSWER of a A record (address). But you can also check different types of DNS records using the -t option. The syntax for this would look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dig -t [record type] [domain name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The example below specifics the TXT record for the google domain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iXLFtDUl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s2trzn8f46shemuuhomb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iXLFtDUl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s2trzn8f46shemuuhomb.png" alt="Image description" width="880" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Other dig record types you may want to specifically query:&lt;/p&gt;

&lt;p&gt;MX record- mail exchanger, tells you what mail server accepts email messages for a given domain name&lt;br&gt;
NS record- all authoritative servers for a domain name&lt;br&gt;
ALL- all DNS records for a domain name&lt;br&gt;
Dig is a great tool for DevOps engineers to have in their toolbox because it helps you troubleshoot for your name servers, double-check records, and trace IP addresses and their domain names, among other things.&lt;/p&gt;
&lt;h2&gt;
  
  
  netstat
&lt;/h2&gt;

&lt;p&gt;netstat is a command that shows you specific information about the communications between your local machine and other machines/devices on the network. Netstat shows active TCP connections as well as ports on which the server is listening. It is useful when you need to see which network services are running on a local machine.&lt;/p&gt;

&lt;p&gt;In the example below, we can discover that there is an apache web server listening on the default HTTP port.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K1KyRFXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/an7m97eie17p2j94v07c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K1KyRFXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/an7m97eie17p2j94v07c.png" alt="Image description" width="880" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, the command netstat -lp shows only listening servers (-l flag)and their program name (-p flag). Other netstat flag commands include:&lt;/p&gt;

&lt;p&gt;-a: all active ports&lt;br&gt;
-n: only numerical IP addresses and ports&lt;br&gt;
-f: whenever possible, provide all names of foreign connections&lt;br&gt;
-o: show process ID&lt;br&gt;
-r: routing table&lt;/p&gt;
&lt;h2&gt;
  
  
  nmap
&lt;/h2&gt;

&lt;p&gt;The next tool to become familiar with as a DevOps engineer is nmap. nmap, or “network mapper”, is also a free, open-source tool like netstat. A use case for nmap is almost identical to that for netstat, with one minor difference. When you’re using netstat, you have to log into a server. But nmap scans all servers in a network.&lt;/p&gt;

&lt;p&gt;nmap sends raw IP packets to determine the hosts available on a given network, what services are offered by these hosts, and what operating systems they are running. System administrators use nmap for tasks such as network inventory and security audits—sometimes known as “white hat” hacking because it identifies vulnerabilities in order to secure and resolve them. However, this tool is also widely used by “black hat” hackers, who use the information provided to exploit vulnerabilities in the network. Because of this potential, some cloud providers do not allow nmap to run on their networks.&lt;/p&gt;

&lt;p&gt;In many ways, DevOps engineers are white hat hackers—troubleshooters, security protectors, and network experts. To demonstrate how nmap can be useful for us, let’s go through a simple scenario.&lt;/p&gt;

&lt;p&gt;Assume we gained SSH (Secure Shell Protocol) access to an unknown server. Our goal is to find out what else is running on the network.&lt;/p&gt;

&lt;p&gt;First, let’s find out the IP of our server and the IP range of our network using our address.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oQyemX3w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lafmc8gk9wjfdrmeypsb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oQyemX3w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lafmc8gk9wjfdrmeypsb.png" alt="Image description" width="842" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our IP address is 172.31.44.35 and 255.255.240.0 netmask corresponds to /20&lt;br&gt;
Now that we know this information, we can initiate a nmap ping scan using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nmap -sn 172.31.44.35/20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6mtGzNdr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vvmd10dsrfmfhm1zswqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6mtGzNdr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vvmd10dsrfmfhm1zswqm.png" alt="Image description" width="617" height="647"&gt;&lt;/a&gt;&lt;br&gt;
We can see now that there are 15 hosts in the specified subnet.&lt;/p&gt;

&lt;p&gt;Let’s test one of these hosts and find out which ports it is listening to. You can do this using the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nmap -A 172.31.36.237
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oDm-gYzU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mxoegw628cmfv9ub4ogm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oDm-gYzU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mxoegw628cmfv9ub4ogm.png" alt="Image description" width="865" height="420"&gt;&lt;/a&gt;&lt;br&gt;
The nmap command helps us see that the there is an SSH and HTTP processes listening to ports on this server.&lt;/p&gt;

&lt;p&gt;Since we know that a curl is a great tool for HTTP, we can then try obtaining the webpage using curl.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vcN1WLv9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/whb49uzp8pd3ciklqbu8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vcN1WLv9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/whb49uzp8pd3ciklqbu8.png" alt="Image description" width="722" height="51"&gt;&lt;/a&gt;&lt;br&gt;
Or we can establish an ssh connection, another portocol which is used multiple times throught a typical day in life of a DevOps engineer.&lt;/p&gt;
&lt;h2&gt;
  
  
  ssh
&lt;/h2&gt;

&lt;p&gt;SSH stands for Secure Socket Shell, or just Secure Shell. It’s a network protocol that allows you to log into remote machines and execute commands on them. When you’re logging into remote machines, you can’t always trust the network that you’re using to do so. SSH makes this process safer by encrypting all data, allowing secure communications via an untrusted network. This us hekoful when you’re working with sensitive information (yours or a client’s) or need to troubleshoot an unfamiliar network.&lt;/p&gt;

&lt;p&gt;The basic syntax to launch SSH is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ssh] [user_name@hostname] or [ssh] [user_name@ipaddress]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See how I’ve used it below.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pSdf7wg7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2rnv61pao0njm8arlnfe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pSdf7wg7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2rnv61pao0njm8arlnfe.png" alt="Image description" width="880" height="832"&gt;&lt;/a&gt;&lt;br&gt;
After you run the command, the remote server will ask you to provide a password. This is a basic authentication option. However, the more secure best practice is to use a passwordless option whenever possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  scp
&lt;/h2&gt;

&lt;p&gt;The final command that you’ll find helpful is SCP (Secure Copy Protocol). SCP is a similarly secure way to execute actions between a local and remote host, but instead of connecting to a server and executing commands, it transfers files.&lt;/p&gt;

&lt;p&gt;See below the syntax for SCP:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JupF5zi7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1kmq1emrboqacyytj54z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JupF5zi7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1kmq1emrboqacyytj54z.png" alt="Image description" width="880" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Putting the Toolbox Together
&lt;/h1&gt;

&lt;p&gt;So you’ve arrived at the end of this article—now what? You just took in a lot of information on a lot of different networking topics. What to do with this new knowledge?&lt;/p&gt;

&lt;p&gt;Think of each section of this article as a different tool in your DevOps toolbox. Each one has a unique design, function, and use case. As a DevOps engineer, you will find yourself needing to execute certain tasks that may require networking. Knowing what each of these tools does, and the basics of what networking is in the first place will help you assess what must be done to accomplish a task.&lt;/p&gt;

&lt;p&gt;Let’s do a quick overview of what you learned today.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DevOps engineers do need to know some networking skills!&lt;/li&gt;
&lt;li&gt;There are 7 layers to the OSI model of a network that build upon each other.&lt;/li&gt;
&lt;li&gt;Knowing OSI is helpful for understanding exactly what networking is, but OSI is complicated—the TCP/IP model helps by condensing some layers, and it’s what we primarily use.&lt;/li&gt;
&lt;li&gt;TCP is a connection-oriented protocol on the transfer layer (use for security); UDP is also on the transfer layer but it’s connectionless (use for speed)&lt;/li&gt;
&lt;li&gt;TCP ports use digital identifiers to identify the right type of process for a command.&lt;/li&gt;
&lt;li&gt;IP addresses are necessary to use the internet. Some IP addresses are a combination of host and network; the subnet mask breaks apart which is which.&lt;/li&gt;
&lt;li&gt;There are 5 classes of IP addresses, each with different lengths for prefixes and a predetermined amount of addresses under that class.&lt;/li&gt;
&lt;li&gt;Classless Interdomain Routing is a solution to the problem of non-ideal numbers of IP addresses—by removing classes, it removes the need for specific caps on totals.&lt;/li&gt;
&lt;li&gt;Routing is the process of sending information over a network.&lt;/li&gt;
&lt;li&gt;The DNS network translates computer language to human language and gives names to domains across the network. You can do lookups to find the IP address associated with a certain DN.&lt;/li&gt;
&lt;li&gt;Domains are owned, but an owner can delegate certain parts to new owners.
HTTP allows you to interact with web pages, files, etc. on a network. It works by sending out a certain type of command/request. In return, you can get a response code that tells you the status of your request.&lt;/li&gt;
&lt;li&gt;There are a number of helpful tools to troubleshoot networks (Ping, traceroute, telnet, curl, dig, netstat, nmap, and SSH are the ones shared in this article). They are all commands with a certain syntax that accomplish a troubleshooting task.
Now you’ve got your tools, you know what they do, and the next step is practicing. Play around with what you’ve learned in this article. If you’re excited about these concepts and want to learn more, consider seeking the advice of an expert mentor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Put your tools in your toolbox and carry them with you to your next DevOps job.&lt;/p&gt;




&lt;p&gt;Apply for individual mentorship 👉 &lt;a href="https://yourdevopsmentor.com/apply/"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with me on LinkedIn 👉 &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-devops/"&gt;https://www.linkedin.com/in/vladimir-mukhin-devops/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on Twitter 👉 &lt;a href="https://twitter.com/vmukhindevops/"&gt;https://twitter.com/vmukhindevops/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DevOps career blog 👉 &lt;a href="https://yourdevopsmentor.com/blog/"&gt;https://yourdevopsmentor.com/blog/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Originally published on &lt;a href="https://yourdevopsmentor.com/"&gt;https://yourdevopsmentor.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>5 Fastest Ways to Build Your First Kubernetes Cluster</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Wed, 07 Sep 2022 02:19:12 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/5-fastest-ways-to-build-your-first-kubernetes-cluster-11k2</link>
      <guid>https://dev.to/vladimirmukhin/5-fastest-ways-to-build-your-first-kubernetes-cluster-11k2</guid>
      <description>&lt;p&gt;Kubernetes is our present. However, it still scares away by its complexity. Where do I even start? How to install Kubernetes? What is minikube? Which type of Kubernetes cluster should I choose? &lt;/p&gt;

&lt;p&gt;If any of these questions relate to you, you’ve come to the right place. Stay tuned and follow along for the best options for creating your first cluster in this Kubernetes tutorial.&lt;/p&gt;

&lt;h1&gt;
  
  
  Option 1 – Kubernetes playground
&lt;/h1&gt;

&lt;p&gt;Kubernetes playground is the easiest way to install a Kubernetes cluster. In fact, you are not even installing anything. Instead, you run your Kubernetes cluster directly in a browser tab.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Easy to start.&lt;/strong&gt; No complex configuration is required. The Kubernetes cluster is available with a click of a button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Runs in a browser.&lt;/strong&gt; Does not consume the resources of your laptop and can be launched from any location and any operating system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free.&lt;/strong&gt; You can use it without any obligations. You don’t even have to provide your email! That’s as simple as that –  a free Kubernetes cluster for you to play with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Limited functionality.&lt;/strong&gt; Obviously, that’s just a sandbox which is acceptable only when you are getting started with Kubernetes You can’t customize the environment, scale the cluster, or deploy any meaningful workload to this platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployments are not persisted.&lt;/strong&gt; Every time you close or restart your browser, the progress will be lost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to deploy
&lt;/h2&gt;

&lt;p&gt;Just open &lt;a href="https://training.play-with-kubernetes.com/kubernetes-workshop/"&gt;https://training.play-with-kubernetes.com/kubernetes-workshop/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Option 2 – Install Kubernetes using Minikube
&lt;/h1&gt;

&lt;p&gt;Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a Virtual Machine on your laptop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Easy to start.&lt;/strong&gt; Even though it requires extra configuration, it is still relatively easy to install minikube.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free.&lt;/strong&gt; Minikube is an open-source tool. That means you can download, use, and even modify it as you see fit without restrictions or limitations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Limited functionality.&lt;/strong&gt; It’s much better than a browser-based Kubernetes platform. However, there are still features that are not supported or do not work well in minikube.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consumes resources.&lt;/strong&gt; It runs on your laptop and in some cases requires a fair amount of resources, such as CPU and memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not a production-ready solution.&lt;/strong&gt; Minikube is a perfect option for local development. However, you can’t send your laptop to your client. For production-level use cases, you’ll need something else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to deploy
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Here is how to install minikube on ubuntu (or any similar Linux system):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minkube start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Here is how to install minikube on mac:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
minikube start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Here is how to install minikube on windows:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Install Windows Package Manager: &lt;a href="https://docs.microsoft.com/en-us/windows/package-manager/"&gt;https://docs.microsoft.com/en-us/windows/package-manager/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Run the commands:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;winget install minikube
minikube start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The best way to check if Kubernetes is installed is to attempt to connect to your cluster and run some kubectl commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Option 3 – Install Kubernetes using Kubeadm
&lt;/h1&gt;

&lt;p&gt;Kubeadm is a tool designed to bootstrap a full-scale Kubernetes cluster. It takes care of all heavy lifting related to cluster provisioning and automates the process completely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Supports all features of Kubernetes.&lt;/strong&gt; Clusters created with kubeadm are fully functional and conform with all the best practices of Kubernetes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Production-grade solution.&lt;/strong&gt; It is absolutely safe to use kubeadm-created clusters not just in sandboxes and pet projects, but in real-world, production use cases as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Require additional resources.&lt;/strong&gt; Even though you can create a single-node cluster on your laptop – kubeadm is usually run on multiple nodes. The most obvious choice is to rent servers from a cloud provider. However, if there is some spare hardware on your geek shelf – you can repurpose it and build your Kubernetes lab out of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Complicated installation process.&lt;/strong&gt; The process of provisioning can be difficult. You need to install kubeadm itself, as well kubectl, container runtime, and a handful of supporting packages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficult to manage.&lt;/strong&gt; Kubeadm is not declarative. You can’t save the applied configuration anywhere. If your node goes away, you will have to bring up a replacement and perform the manual join again(unless you have automated it further). Also, even though the creation process is automated, you will still have to deal with all the burdens related to maintaining a self-hosted Kubernetes cluster (maintaining quorum, backing-up etcd, and so on)&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to deploy
&lt;/h2&gt;

&lt;p&gt;Step 1. Provision your nodes&lt;/p&gt;

&lt;p&gt;Step 2. Install kubeadm, kubelet, and kubectl&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3. Install container runtime&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get remove -y docker docker-engine docker.io containerd runc
sudo apt-get update -y
sudo apt-get install -y \
   ca-certificates \
   curl \
   gnupg \
   lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
sudo apt-get update -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl stop containerd
echo "" | sudo tee /etc/containerd/config.toml
sudo systemctl start containerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 4. Initialize your cluster (only when creating a new cluster)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo kubeadm init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 5. Apply the CNI plugin&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
Step 6. For each additional node that you want to join to the existing cluster – repeat steps 2 and 3 and run the kubeadm join command that was output by kubeadm init.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Option 4 – Managed Kubernetes
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Pros
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Production-grade solution.&lt;/strong&gt; It’s not the best option, however, some companies use it as a go-to method for provisioning their Kubernetes infrastructure. It can be scaled to a certain extent, however, it requires some extra scripting and configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Easy to start.&lt;/strong&gt; Creating a basic cluster takes seconds. That’s a perfect option when you need to build a cluster quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Require a cloud account.&lt;/strong&gt; If you haven’t yet started your cloud journey, this option will require some extra steps to create your cloud account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not maintainable.&lt;/strong&gt; The CLI or any script based on CLI is not declarative and does not highlight the state of your infrastructure. This means you will require additional efforts to make sure the automation is applied in an idempotent way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can be expensive.&lt;/strong&gt; Managed Kubernetes clusters are relatively expensive. For example, a single Amazon EKS cluster in the us-east-1 region will cost you 73$ dollars per month. So you should never forget to turn down your infrastructure when you are not working with your lab. In AWS you pay not for what you use but for what you have forgotten to terminate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to deploy
&lt;/h2&gt;

&lt;h3&gt;
  
  
  To deploy the AWS EKS cluster:
&lt;/h3&gt;

&lt;p&gt;Step 1. Install eksctl: &lt;a href="https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html"&gt;https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html&lt;/a&gt;&lt;br&gt;
Step 2. Create a cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;eksctl create cluster --name my-cluster --region us-east-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3. Generate kubectl credentials and connect to your cluster&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws eks update-kubeconfig --name my-cluster –region us-east-1
kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  To deploy the GKE cluster:
&lt;/h3&gt;

&lt;p&gt;Step 1. Enable Google Kubernetes Engine API&lt;br&gt;
Step 2. Create a cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud container clusters create example-cluster \
    --zone us-central1-a \
    --node-locations us-central1-a,us-central1-b,us-central1-c
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3. Generate kubectl credentials and connect to your cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud container clusters get-credentials hello-cluster
kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  To deploy the AKS cluster:
&lt;/h3&gt;

&lt;p&gt;Step 1. Create a cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;az group create --name myResourceGroup --location eastus
az aks create -g myResourceGroup -n myAKSCluster --enable-managed-identity --node-count 1 --enable-addons monitoring --enable-msi-auth-for-monitoring  --generate-ssh-keys
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2. Generate kubectl credentials and connect to your cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Option 5 – Install Kubernetes Using Terraform
&lt;/h1&gt;

&lt;p&gt;Terraform is no doubt one of the best Infrastructure as Code tools nowadays. The concept of re-usable modules allows trying new things fast. What you need to do is just clone the module repository and run terraform apply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Production-grade solution.&lt;/strong&gt; Famous brands and large companies rely on Terraform for deploying their critical infrastructure. Terraform provides a huge set of features that allows for managing infrastructure effectively at an enormous scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Perfect maintainability.&lt;/strong&gt; Terraform is fully idempotent. It keeps track of resources that it deploys using the state file which can be stored locally or remotely. You can also implement advanced techniques for managing your infrastructure, for example, GitOps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Require knowledge of Terraform.&lt;/strong&gt; If you haven’t worked with Terraform before, you will need some effort to install Terraform and understand how to use it. This makes this option a little challenging for one who is just starting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Require a cloud account and can be expensive.&lt;/strong&gt; Same as the previous option. Running Kubernetes as a service requires some pre-requisites in terms of cloud and can be costly if you forget to destroy it on time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to deploy
&lt;/h2&gt;

&lt;h3&gt;
  
  
  To deploy the EKS cluster, run these commands:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/hashicorp/learn-terraform-provision-eks-cluster
cd learn-terraform-provision-eks-cluster
terraform init
terraform apply
aws eks --region $(terraform output -raw region) update-kubeconfig \
    --name $(terraform output -raw cluster_name)
kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  To deploy the GKE cluster, run these commands:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/hashicorp/learn-terraform-provision-gke-cluster
cd learn-terraform-provision-gke-cluster
terraform init
terraform apply
gcloud container clusters get-credentials $(terraform output -raw kubernetes_cluster_name) --region $(terraform output -raw region)
kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  To deploy the AKS cluster, run these commands:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/hashicorp/learn-terraform-provision-aks-cluster
cd learn-terraform-provision-aks-cluster
terraform init
terraform apply
az aks get-credentials --resource-group $(terraform output -raw resource_group_name) --name $(terraform output -raw kubernetes_cluster_name)
kubectl get nodes
This was an overview of major techniques to install a Kubernetes cluster.
Don’t wait any further, pick an option that you like and start your Kubernetes journey immediately!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;If you enjoyed this article, please support us by sharing it on social networks.&lt;/p&gt;

&lt;p&gt;You can find other interesting articles on our blog: &lt;a href="https://yourdevopsmentor.com/blog/"&gt;https://yourdevopsmentor.com/blog/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apply for individual mentorship here: &lt;a href="https://yourdevopsmentor.com/apply/"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with the author on LinkedIn: &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-devops/"&gt;https://www.linkedin.com/in/vladimir-mukhin-devops/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>cloud</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>From Biologist to DevOps engineer in record Time – Gerry’s Experience with Your DevOps Mentor</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Wed, 07 Sep 2022 01:53:58 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/from-biologist-to-devops-engineer-in-record-time-gerrys-experience-with-your-devops-mentor-3pgf</link>
      <guid>https://dev.to/vladimirmukhin/from-biologist-to-devops-engineer-in-record-time-gerrys-experience-with-your-devops-mentor-3pgf</guid>
      <description>&lt;p&gt;When Gerry decided to make a career switch from biology to IT, he was frustrated by the lack of traction on his many job applications.&lt;br&gt;
Since connecting with Vladimir at Your DevOps Mentor, Gerry has mastered the most cutting-edge technologies in IT and landed a competitive job in the industry.&lt;/p&gt;

&lt;p&gt;We had the opportunity to chat with Gerry about his experience. In this interview, you’ll get an inside look at the tactic that allowed him to secure his first job in IT in record time.&lt;/p&gt;

&lt;h1&gt;
  
  
  Tell me about yourself and your background.
&lt;/h1&gt;

&lt;p&gt;My name is Gerry Zhiguang Huang and I live and work in Dallas, TX. For a decade, I was a biologist.&lt;br&gt;
I received my Ph.D. in biological science in Hong Kong and then completed my post-doctoral training and practiced biomedical science at the University of Texas Southwestern Medical Center for 10 years.&lt;/p&gt;

&lt;p&gt;During this time, I had an extremely successful career. I published papers in well-established journals and conducted experiments in the areas of metabolic disease and cancer.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why did you start considering a career switch?
&lt;/h1&gt;

&lt;p&gt;I really enjoyed my first career in biology, but I grew frustrated with the slow progress that is the nature of the field.&lt;/p&gt;

&lt;p&gt;Sometimes it can take months, even years, after experiments to publish in journals, not to mention the cost of maintaining a laboratory and conducting studies.&lt;/p&gt;

&lt;p&gt;I realized that I wanted to work in a field that moved at a faster pace.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why did you seek a career in IT?
&lt;/h1&gt;

&lt;p&gt;In 2019, I decided to switch careers from biology to IT. Although this switch may seem like a jump, it was a natural progression for me. I’ve been interested in science and technology since I was a child, which is why I initially chose to study biology in the first place.&lt;/p&gt;

&lt;p&gt;When I started learning more about IT, I was inspired by its potential for impact and excited by the fast pace of progress. IT is very different. It’s changing rapidly; you can do an experiment and see results quickly. Cloud especially is amazing, because you can test things with minimal time and low initial cost and then scale up from there to be extremely successful.&lt;/p&gt;

&lt;h1&gt;
  
  
  What was your experience in “traditional” IT education?
&lt;/h1&gt;

&lt;p&gt;I ventured into IT by registering for courses at a local Dallas community college, had training in Java programming, web development, and cyber security. Over the course of about two years, I trained and received certificates in programs like AWS, CCNA, and CompTIA A+. I got A’s in all of my courses and when I finished the program, I felt confident that after all that training I was well-prepared for a job in the IT field.&lt;/p&gt;

&lt;p&gt;Yet, despite sending out application after application, I received no interviews. This surprised and depressed me. I did all this training…why wasn’t it leading to a job? Was I not meant for this field after all?&lt;/p&gt;

&lt;h1&gt;
  
  
  How did you find Vladimir and Your DevOps Mentor? What insight did Your DevOps Mentor offer?
&lt;/h1&gt;

&lt;p&gt;I reached out to an IT director friend for advice. My friend referred me to Vladimir Mukhin, explaining that he was an expert in DevOps and could offer insight.&lt;/p&gt;

&lt;p&gt;Vladimir is also the creator behind Your DevOps Mentor, a business that helps people like me prepare for IT jobs. He took a look at my resume and explained that the problem wasn’t how much I knew, but it was what I knew—what I had learned in my local classes was outdated.&lt;/p&gt;

&lt;p&gt;My classes followed the “traditional” IT route that uses physical servers and storage space to connect to networks on site. I learned that this was “hot” 10 years ago, but now network administrative work is neither up-to-date nor in high demand from employers—everything is on the Cloud.&lt;/p&gt;

&lt;p&gt;Vladimir offered to teach me the most cutting-edge DevOps technologies through an extensive mentorship program—“If you learn with me, I can guarantee you a job,” he said.&lt;/p&gt;

&lt;h1&gt;
  
  
  What mentorship plan did you set up with Vladimir?
&lt;/h1&gt;

&lt;p&gt;I was determined to succeed in IT, so I agreed to work with Vladimir. He gave me detailed information about his carefully designed DevOps mentorship program.&lt;/p&gt;

&lt;p&gt;This included offering project-based education in programs like Terraform, AWS, and Kubernetes, identifying certificates to earn, recommending reading materials, and reviewing job application materials. He gave me structural projects step by step.&lt;/p&gt;

&lt;h1&gt;
  
  
  What new technologies did you learn? What certificates did you get?
&lt;/h1&gt;

&lt;p&gt;In a stepwise model, Vladimir taught me the fundamentals of Terraform, including working with AWS (which is the biggest cloud provider) using official modules—the best practice for all Terraform users.&lt;/p&gt;

&lt;p&gt;These projects added up and I used them to make a final portfolio piece: a WordPress app for a website that includes a private and public subnet is linked to ELB, can auto-scale for high availability, and is secure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oAq_tqQr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ctssdj4zlzo8cun5lnko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oAq_tqQr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ctssdj4zlzo8cun5lnko.png" alt="AWS architecture Gerry deployed" width="880" height="622"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On top of this, I earned the newest certificates in Terraform, AWS Architect’s Associate, CCNA, and CompTIA.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ziGb4Im4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vis462hmsrp2bnj5mgs6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ziGb4Im4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vis462hmsrp2bnj5mgs6.jpeg" alt="AWS Solutions Architect Certificate" width="880" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  How did Vladimir help you prepare for job applications?
&lt;/h1&gt;

&lt;p&gt;With this new knowledge under my belt, I felt ready to tackle job applications again. Thankfully, Vladimir helped me with that too.&lt;/p&gt;

&lt;p&gt;He intensively reworked my resume. He condensed my 3-page resume into just a single page emphasizing my most important, eye-catching IT experience. Using this new resume, I scored a number of interviews, which Vladimir also helped me prepare for.&lt;/p&gt;

&lt;p&gt;Interviews in this field are tough and highly competitive because they are designed to weed through the sometimes up to 300 candidates applying for a single job. If you don’t prepare well for an interview, you very likely can’t get a job. Vladimir worked closely with me to prepare me to stand out in interviews.&lt;/p&gt;

&lt;p&gt;Vladimir helped me prepare for every single interview that I was offered, both for the technical parts and the interpersonal skills required. We sat for mock interviews together, and Vladimir even brought in some friends in the field to test me as well. After each of my official interviews, we debriefed by analyzing each question asked and discussing how to improve in the future.&lt;/p&gt;

&lt;h1&gt;
  
  
  It sounds so good to be true. Were any challenges in your journey?
&lt;/h1&gt;

&lt;p&gt;Already, my applications were getting more traction than before working with You DevOps Mentor, but I will admit that the process wasn’t always the smoothest.&lt;/p&gt;

&lt;p&gt;I didn’t get a job immediately, even though I wanted to. There was a period of time where job applications and interviews were slow and unsuccessful.&lt;/p&gt;

&lt;p&gt;I felt frustrated about this, but at the same time, I still felt supported and encouraged. When I described this to Vladimir, he encouraged me to keep learning in the meantime and started teaching me Kubernetes, an advanced technology.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IohQgZY4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zit5sbkq3yxkio56k7ee.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IohQgZY4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zit5sbkq3yxkio56k7ee.jpeg" alt="Kubernetes And Cloud Native Associate Certificate" width="880" height="681"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Where did you accept a job? What made you stand out from other candidates?
&lt;/h1&gt;

&lt;p&gt;Finally, my perseverance paid off when I applied for a job at Ezoic, a California-based AI company. I went through four rounds of interviews with Ezoic in three weeks, and at the end of it, I got a job offer.&lt;/p&gt;

&lt;p&gt;The interviewers told me how impressed they were by what I had done in DevOps. In the third round of interviews (out of four total), Ezoic challenged me to complete a project. They told me they thought my solution was the best example out of all the potential candidates, and then even passed it along as an exemplar.&lt;/p&gt;

&lt;p&gt;In October 2021, I accepted the job offer at Ezoic working on the infrastructure team managing, automizing, and configuring their cloud.&lt;/p&gt;

&lt;h1&gt;
  
  
  What was the timeline, from the start to getting a job?
&lt;/h1&gt;

&lt;p&gt;I started working with Vladimir and Your DevOps Mentor in June 2021. And it only took me four months to get a job offer and start my new job in an entirely new field.&lt;/p&gt;

&lt;p&gt;In that short time, I received numerous advanced certificates in the most cutting-edge DevOps technologies, built a strong portfolio, and honed my interviews.&lt;/p&gt;

&lt;p&gt;I was amazed at how fast and successful my journey with Your DevOps Mentor was. In particular, though, I couldn’t have done it without Vladimir’s mentorship and support.&lt;/p&gt;

&lt;h1&gt;
  
  
  What did you like the most out of your mentorship with Vladimir? How would you describe your experience to someone else looking to start an IT job?
&lt;/h1&gt;

&lt;p&gt;I started working with Your DevOps Mentor hoping to learn more and get a job in IT. Yet, what I ultimately appreciated the most about the program was how clearly invested Vladimir and Your DevOps Mentor were in me as a trainee.&lt;/p&gt;

&lt;p&gt;Vladimir truly believed in me. He is a very responsible person. He answers all my questions. He really wants the success of trainees.&lt;/p&gt;

&lt;p&gt;I’ve already referred several friends to Your DevOps Mentor. I tell them: “This guy is the best mentor I’ve had. From Kindergarten to postdoc, the best mentor.” Vladimir has such strong knowledge of the field and is an amazing teacher, but most importantly he cares about you.&lt;/p&gt;

&lt;h1&gt;
  
  
  What are your next steps?
&lt;/h1&gt;

&lt;p&gt;Right now, I’m enjoying my new job in IT. I’m also still learning Kubernetes and am excited to see where having that advanced certificate will take me.&lt;/p&gt;

&lt;p&gt;I also still have a passion for biology. I see a lot of potential connections between IT and biology and hope that one day I can bridge those worlds and bring a strong IT background to my existing biology knowledge. I can already see it: using IT with biology to study the genome, DNA, and identify diseases&lt;/p&gt;

&lt;p&gt;Does Gerry’s story inspire you? Do you, too, want to make a successful career shift to IT while being supported every step along the way?&lt;/p&gt;

&lt;p&gt;Apply for individual mentorship here: &lt;a href="https://yourdevopsmentor.com/apply/"&gt;https://yourdevopsmentor.com/apply/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with Gerry here: &lt;a href="https://www.linkedin.com/in/zhiguang-gerry-huang-41ab3756/"&gt;https://www.linkedin.com/in/zhiguang-gerry-huang-41ab3756/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with Vladimir here: &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-devops/"&gt;https://www.linkedin.com/in/vladimir-mukhin-devops/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Originally published on &lt;a href="https://yourdevopsmentor.com/"&gt;https://yourdevopsmentor.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>career</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Certified Jenkins Engineer Exam: Hot or Not?</title>
      <dc:creator>Vladimir Mukhin</dc:creator>
      <pubDate>Mon, 30 Sep 2019 14:19:12 +0000</pubDate>
      <link>https://dev.to/vladimirmukhin/certified-jenkins-engineer-exam-hot-or-not-4cgf</link>
      <guid>https://dev.to/vladimirmukhin/certified-jenkins-engineer-exam-hot-or-not-4cgf</guid>
      <description>&lt;p&gt;This September, I became a Certified Jenkins Engineer. To help you decide if this certification is for you, let me walk through what I did.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DSFWitq3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ti5ffv5cofs1cm0wk67j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DSFWitq3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ti5ffv5cofs1cm0wk67j.png" alt="Alt Text" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is it?
&lt;/h2&gt;

&lt;p&gt;Jenkins is the leading open source automation server that provides hundreds of plugins to support building, deploying and automating any project. It’s very easy to install and it can be used not only as a build and integration server, but essentially for any automation task. This has made it the most popular CI/CD tool in the world.&lt;/p&gt;

&lt;p&gt;The Certified Jenkins Engineer exam is a way to verify your knowledge, skills and experience as a Jenkins professional. Passing the exam and earning certification means you have a proven level of proficiency. &lt;/p&gt;

&lt;h2&gt;
  
  
  Who should take it?
&lt;/h2&gt;

&lt;p&gt;Any IT professional who understands continuous delivery/DevOps best practices and uses the Jenkins features to implement CI/CD. &lt;/p&gt;

&lt;h2&gt;
  
  
  How long is it?
&lt;/h2&gt;

&lt;p&gt;It is 90 minutes long and consists of 60  questions. Even though 1.5 minutes per question seemed fast-paced, I ended up having 40 minutes to spare. I had time to review my answers. &lt;/p&gt;

&lt;h2&gt;
  
  
  What topics are covered?
&lt;/h2&gt;

&lt;p&gt;• &lt;strong&gt;Freestyle jobs.&lt;/strong&gt; Even though pipeline is now the way to go, there were a lot of questions related to the details of freestyle jobs.&lt;br&gt;
• &lt;strong&gt;Key CI/CD concepts.&lt;/strong&gt; Theoretical aspects of CI/CD, including  identifying the border between Continuous Integration and Continuous Delivery, the difference between Continuous Delivery and Continuous Deployment, the types of tests, and source code management concepts.&lt;br&gt;
• &lt;strong&gt;Installation and Configuration.&lt;/strong&gt; The installation process, installation wizard, the basic items in the “Configure Jenkins” menu.&lt;br&gt;
• &lt;strong&gt;Builds and Jobs.&lt;/strong&gt; How to configure pipelines, the elements of a Jenkinsfile (stages, steps, nodes, and labels), parameterized jobs, triggering both regular and parameterized jobs, and build promotions.&lt;br&gt;
• &lt;strong&gt;API.&lt;/strong&gt; Manipulating jobs using the Jenkins REST API.&lt;br&gt;
• &lt;strong&gt;Source code management.&lt;/strong&gt; Multi-branch pipeline. Git and GitHub (including branch, pull request, commit and checkout), how Jenkins integrates with SCM, how fetch changes (polling vs webhooks are the major ones), how to work with multi-branch pipelines and multi-branch pipeline orphaned strategy.&lt;br&gt;
• &lt;strong&gt;Testing.&lt;/strong&gt; Unit test, integration test, smoke tests, acceptance tests, vulnerability test, etc. Also test publishing and build stability criteria.&lt;br&gt;
• &lt;strong&gt;Notifications.&lt;/strong&gt; How to send basic and custom notifications (for example, notify only commit author or embed build number into a body or a subject), Notification and Email-ext Jenkins plugins.&lt;br&gt;
• &lt;strong&gt;Artifacts and Fingerprints.&lt;/strong&gt; Purpose of fingerprint (i.e., tracking artifact usage), the process of archiving artifacts and where they are located (i.e., archived are on master, not on the user’s workspace)&lt;br&gt;
• &lt;strong&gt;Distributed builds.&lt;/strong&gt; Fungible or replaceable agent, master/agent communication protocols (SSH and JNLP),  executor (how it’s different from agent and how to configure it on a node), how to assign a stage to a node (using agent labels).&lt;br&gt;
• &lt;strong&gt;Security.&lt;/strong&gt; Security realms, authorization options (LDAP, internal database, Linux users, servlet container). Use cases such as adding a user, adding a user with non-standard permissions, permission inheritance.&lt;br&gt;
• &lt;strong&gt;Folders and Views.&lt;/strong&gt; How to organize jobs,&lt;br&gt;
• &lt;strong&gt;Triggering and promoting jobs.&lt;/strong&gt; Build promotions, criteria for promoting a job, how to promote a job manually, options to trigger a job.  how to trigger job with parameters both via user interface and API.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to prepare for it?
&lt;/h2&gt;

&lt;p&gt;Before considering getting certified, I already had two years of experience with Jenkins and DevOps, in general. I only spent 2 weeks studying for it, which I felt was rushed. If I allocated more time for preparation, my final score could have been higher. I recommend assessing you know your own strength and experience and give yourself enough time so you go in confidently. &lt;/p&gt;

&lt;p&gt;I mainly used these three resources:&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux Academy
&lt;/h1&gt;

&lt;p&gt;I consider &lt;a href="//linuxacademy.com"&gt;Linux Academy&lt;/a&gt; as the most advanced e-learning platform not only for Linux, but also for cloud, containers, DevOps, and, of course, Jenkins. &lt;/p&gt;

&lt;p&gt;Information needed for the CJE exam, can be obtained from multiple courses.&lt;br&gt;
• If you are completely new to the subject, you can start with DevOps Essentials and Jenkins Quick Start. &lt;br&gt;
• You may skip the basic courses and jump right into the Certified Jenkins Engineer course. It covers a lot but does not dig very deep on some topics. &lt;br&gt;
• After you have done with that, consider taking the practical courses such as Implementing a Full CI/CD Pipeline and Learn Jenkins By Doing. &lt;br&gt;
The platform isn’t free, but the resources are plenty: videos, quizzes, flashcards, and even several servers as a lab environment.&lt;/p&gt;

&lt;h1&gt;
  
  
  CloudBees University
&lt;/h1&gt;

&lt;p&gt;CloudBees, the company that provides this certification, has several useful online materials. Some of them are free, some of them are very pricey. To supplement my study, I reviewed their free courses such as  &lt;a href="https://standard.cbu.cloudbees.com/series/certified-jenkins-engineer-exam-prep/cloudbees-university-jenkins-fundamentals"&gt;Jenkins - Fundamentals&lt;/a&gt;, &lt;a href="https://standard.cbu.cloudbees.com/series/certified-jenkins-engineer-exam-prep/cloudbees-university-jenkins-pipeline-fundamentals"&gt;Jenkins Pipeline - Fundamentals&lt;/a&gt;, and &lt;a href="https://standard.cbu.cloudbees.com/series/certified-jenkins-engineer-exam-prep/cloudbees-university-jenkins-administration-fundamentals"&gt;Jenkins Administration - Fundamentals&lt;/a&gt;. If you are low on budget, these three courses may be a perfect option for you.&lt;/p&gt;

&lt;h1&gt;
  
  
  CJE Exam Study Guide
&lt;/h1&gt;

&lt;p&gt;Every year, CloudBees publishes the official exam &lt;a href="https://www.cloudbees.com/sites/default/files/cje-study-guide-2018.pdf"&gt;study guide&lt;/a&gt; that lists the exam topics with corresponding references and online  resources.  These are helpful, especially for topics you are not familiar with or have gaps in. &lt;/p&gt;

&lt;h2&gt;
  
  
  What’s in it for you?
&lt;/h2&gt;

&lt;p&gt;Whether you’re a software developer, QA engineer, or a DevOps/SRE/systems engineer, the Certified Jenkins Engineer credential is a solid addition to your resume. Even if you’re not into counting the notches in your IT tool belt, I’m sure you will learn a thing or two during the exam preparation that will enhance the way you utilize Jenkins. I believe it is worth the time and money for any IT professional. &lt;/p&gt;

&lt;p&gt;If you decide to take the plunge and get certified, I wish you all the best. Do get back to &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-63295a106/"&gt;me&lt;/a&gt; and let me know how it went.&lt;/p&gt;

&lt;p&gt;P.S. You can also read this article on &lt;a href="https://www.linkedin.com/in/vladimir-mukhin-63295a106/"&gt;medium&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
