SitePoint
  • Blog
  • Forum
  • Library
  • Login
Join Premium
Kubernetes, Microservices and DevOps
Close
    • Kubernetes, Microservices and DevOps
    • Notice of Rights
    • Notice of Liability
    • Trademark Notice
    • About SitePoint
    • Conventions Used
    • Hard Core: Kubernetes Core Concepts
    • Assistant to the Regional Manager: Installing and Managing Kubernetes
    • Object of Affection: Kubernetes Objects
    • Cluster Interaction: Kubernetes Clusters
    • Deploy, There! Kubernetes Deployments
    • All Wrapped Up in a Pretty Little Package! Package Management
    • The Monster Mesh: Networking and Service Mesh
    • Service Mesh
    • Whats the best tech thing you’ve read recently? Why?
    • How did you get started in Kubernetes? What do people need to know before they take the plunge? Do you have an obvious route you suggest to people?
    • How do you convince someone that this stuff is worthwhile? Is there a certain kind of developer who wants/needs to use this stuff?
    • What does Operator mean for prospective Kubernetes devs?
    • Where do you see it going from here?
    • Also, describe something cool you built or designed.
    • Hats Off to You: Operator Framework
    • Fit the Bill: Kubebuilder
    • Crux of the Meta: Metacontroller
    • Is this the real life? Is this just fantasy? Using Kubernetes IRL
    • Case Studies and #inspo
    • Help Getting Started
    • Serving Time: Kubernetes and Serverless
    • Back to the Future: The Future of Kubernetes

Core Concepts

Introductions and explanations

Let's go back to basics. Kubernetes is a system for running and coordinating containerized apps in a cluster: it’s a way better way to handle infrastructure. But wait! What are containerized apps?! Good point.

Here are a few things that are handy to know ahead of getting into K8s: VMs, containers, and Docker [medium.freecodecamp].

The official docs: What is Kubernetes? [kubernetes]

A very detailed intro to Kubernetes [digitalocean].

Before we read more, let’s do a thing: here’s a guide to getting a Hello World Node.js app set up using Minikub [kubernetes].

And Colossus [github/lucperkins] is an example microservice architecture for Kubernetes using Bazel, Go, Java, Kubernetes and some others stuff I decided not to list

The history of Kubernetes [blog.risingstack].

7 reasons Kubernetes are ideal for CI/CD [thenewstack].

The current state of building images on Kubernetes [thenewstack].

And lessons learned from using Kubernetes for a year [techbeacon].

Hard Core: Kubernetes Core Concepts

Just the facts, maam

Alright, so you understand the broad strokes of what Kubernetes is, terrific! Now let’s take a closer look:

A good high-level summary of the core concepts in K8s [blog.arungupta]. This is what I read first when preparing for this project.

The official documentation covers the core concepts very exhaustively [kubernetes]. To highlight a few important bits:

  • Containers

  • Nodes

  • Pods

  • Configuration

  • Services

If that’s all a little too dense, this post from YLD Engineering is a nice light start [medium/yld-engineering].

And if you only have 10 minutes [omerio].

Or 5 minutes! [youtube/vmwarecloudnative]

Assistant to the Regional Manager: Installing and Managing Kubernetes

Get it, and keep it it humming!

Now, to get a Kubernetes installation of our very own!

An exhaustive guide to installing Kubernetes in a variety of ways [platform9].

But, to be more specific:

  • a guide to installing Kubernetes on a Mac with Docker [rominirani].

  • On Windows, with Minikube, a tool that allows for local installation of K8s [rominirani].

  • On Ubuntu [techrepublic].

kubeadm [kubernetes] makes it easy to bootstrap a minimum viable Kubernetes cluster that conforms to best practices, that you can use as a master cluster. A quick and dirty guide to doing so [mirantis].

Or, you could use kops [github/kubernetes]. A guide to doing so [kubernetes] and an explanation of what it is [cloudacademy].

And a learning lab that’ll help you maintain a Kubernetes cluster [kumorilabs].

kubectl

Tips for using the kubectl command line interface [coreos].

And more tips for kubectl [github/mhausenblas].

A kubectl cheat sheet [kubernetes].

Object of Affection: Kubernetes Objects

OK, so: Kubernetes Objects are persistent entities that can be queried and updated via the API.

A Kubernetes object is a “record of intent”–once you create the object, the Kubernetes system will constantly work to ensure that object exists. By creating an object, you’re effectively telling the Kubernetes system what you want your cluster’s workload to look like; this is your cluster’s desired state.

The above is from the official documentation on Kubernetes Objects [kubernetes], and I include the quote here because reading this was one of those moments where it all clicked for me.

A video guide from IBM on working with Objects (just one part of their full K8s course, if that also interests you) [coursera].

Advanced, lesser-known Kubernetes Objects you should check out [engineering.opsgenie].

A cheat sheet for creating Objects via YAML (also other stuff) [kapeli].

Cluster Interaction: Kubernetes Clusters

Muster your cluster, buster!

Accessing clusters through the Kubernetes API [kubernetes]

An overview of administering clusters [kubernetes].

Various ways to access clusters [kubernetes],

The Cluster API is a project to bring declarative, Kubernetes-style APIs to cluster creation and management [github/kubernetes-sigs]. It’s a prototype, but looks promising.

A guide to managing a Docker Cluster with Kubernetes [linode].

And how to manage a cluster in Azure Container Service [medium/@somakdas].

Deploy, There! Kubernetes Deployments

You know, like "ahoy there"? Does that work? I think that works

An interactive tutorial that’ll let you deploy an app on Kubernetes using kubectl [kubernetes].

Then the obligatory documentation on deployments [kubernetes].

How to deploy Kubernetes via YAML configuration files [mirantis].

kubernetes-deploy [github/shopify] is a tool that lets you deploy a K8s app and then understand the results–in a pass/fail sense.

“The ultimate guide” to deployments [platform9].

All Wrapped Up in a Pretty Little Package! Package Management

Sharing the love

Helm [helm] is the most-commonly-used package manager for Kubernetes. Why this matters [platform9].

A quickstart guide to Helm [github/helm].

And then a more exhaustive guide [medium/@gajus].

And a guide to authoring your first “chart” (the packaging format Helm uses) [docs.helm].

How to deploy K8s apps with Helm [cloudacademy].

A guide to Helm best practices [github/helm] and then authoring awesome charts [github/helm].

The Monster Mesh: Networking and Service Mesh

Making sure everyone is talking to the right people

Networking and service mesh is a somewhat complex issue: what follows here is by no means a final look at the subject, this will most definitely be updated throughout the month as I look into the issue more thoroughly. But here we go:


If two containers are sitting on the same physical machine, on the same hypervisor, on the same Docker instance, do you really need to jump all the way out to the NIC to facilitate communication between them? Does the application layer addressing stay the same? Is it better to facilitate that communication using an overlay? Do you do it over L2 or L3? What about multi-tenancy?

Kubernetes networking is hard: what you can do about it [cloudcomputing-news].

A hacker’s guide to Kubernetes networking [thenewstack].

The docs covering cluster networking [kubernetes].

Kubernetes networking 101 [aquasec]

Service Mesh

Service mesh is a dedicated infrastructure layer for managing service-to-service communication.

A nice little intro to service mesh [akomljen].

A guide to choosing your mesh [thenewstack].

A little guide to managing microservices with the Istio service mesh [kubernetes].

An overview of Istio 1.0 [thenewstack].

End of PreviewSign Up to unlock the rest of this title.

Community Questions