Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
cb7541e
added subfolder for kubernetes guides
Jul 2, 2019
1dd2227
moved guides to subfolder, broke beginners guide into 6
Jul 5, 2019
501989b
[Theme rebuild] Show second-level subsections inline on a section page
nmelehan Jul 18, 2019
d34c875
Remove old Beginner's Guide to Kubernetes location
nmelehan Jul 18, 2019
042b4f3
Set aliases from previous Kubernetes guide paths
nmelehan Jul 18, 2019
1eddfa7
Reintroduce header images from #2595
nmelehan Jul 18, 2019
45a8619
Add missing Kubernetes concentrations
nmelehan Jul 18, 2019
3e640cc
Script which moves guides and automatically adds aliases
nmelehan Jul 25, 2019
72ff43c
Make mv-guide.py executable
nmelehan Jul 25, 2019
287fb27
Fix error message
nmelehan Jul 25, 2019
951bf8f
Removing images left over in old guide locations
nmelehan Jul 25, 2019
43552db
Moving Troubleshooting Kubernetes guide
nmelehan Jul 25, 2019
5c9cd5a
Update script usage text
nmelehan Jul 25, 2019
c0266ca
Adding -part-x- to the paths in the Kubernetes Beginners series
nmelehan Jul 25, 2019
a517b8f
Adding ", Part X" to the title for each Kubernetes Beginner guide
nmelehan Jul 25, 2019
8de02c3
Theme rebuild: order sections and guides by title
nmelehan Jul 25, 2019
215db84
Copy edit for Beginners Guide refactor
nmelehan Jul 25, 2019
88a4c41
New section.md archetype, used for generating new sections.
nmelehan Jul 25, 2019
9e07f91
Update publish dates
nmelehan Jul 29, 2019
b4ded4d
Fix alias links syntax
nmelehan Jul 29, 2019
d365a23
Add trailing slash to alias-style paths
nmelehan Jul 29, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion archetypes/content.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ description: 'Two to three sentences describing your guide.'
keywords: ['list','of','keywords','and key phrases']
license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)'
published: {{ now.Format "2006-01-02" }}
modified: {{ now.Format "2006-01-02" }}
modified_by:
name: Linode
title: "{{ replace .TranslationBaseName "-" " " | title }}"
Expand Down
12 changes: 12 additions & 0 deletions archetypes/section.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
author:
name: Linode
email: docs@linode.com
description: "A text passage which will appear below the title of the section on the section's page."
keywords: ["keyword1", "keyword2"]
license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)'
published: {{ now.Format "2006-01-02" }}
title: Section Title
show_in_lists: true
---

497 changes: 0 additions & 497 deletions docs/applications/containers/beginners-guide-to-kubernetes/index.md

This file was deleted.

1 change: 1 addition & 0 deletions docs/applications/containers/kubernetes-reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ modified_by:
title: "Kubernetes Reference Guide"
contributor:
name: Linode
concentrations: ["Kubernetes"]
external_resources:
- '[Kubernetes API Documentation](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/)'
- '[Kubernetes Concepts Documentation](https://kubernetes.io/docs/concepts/)'
Expand Down
14 changes: 14 additions & 0 deletions docs/applications/containers/kubernetes/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
author:
name: Linode
email: docs@linode.com
description: '*Kubernetes*, often referred to as *k8s*, is an open source container orchestration system that helps deploy and manage containerized applications.'
keywords: ["kubernetes"]
license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)'
aliases: ['kubernetes/']
published: 2019-07-29
title: Kubernetes
show_in_lists: true
---


Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
author:
name: Andy Stevens
email: docs@linode.com
description: 'An introduction to Kubernetes concepts and components.'
keywords: ['kubernetes','k8s','beginner','architecture']
license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)'
published: 2019-07-29
modified_by:
name: Linode
title: "A Beginner's Guide to Kubernetes, Part 1: Introduction"
contributor:
name: Linode
concentrations: ["Kubernetes"]
external_resources:
- '[Kubernetes API Documentation](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/)'
- '[Kubernetes Concepts Documentation](https://kubernetes.io/docs/concepts/)'
aliases: ['applications/containers/kubernetes/beginners-guide-to-kubernetes-introduction/']
---

![A Beginner's Guide to Kubernetes](beginners-guide-to-kubernetes.png "A Beginner's Guide to Kubernetes")

{{< note >}}
This is the first guide in the [Beginner's Guide to Kubernetes](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes) series that explains the major parts and concepts of Kubernetes.
{{< /note >}}

*Kubernetes*, often referred to as *k8s*, is an open source container orchestration system that helps deploy and manage containerized applications. Developed by Google starting in 2014 and written in the [Go](http://golang.org) language, Kubernetes is quickly becoming the standard way to architect horizontally-scalable applications.

In this guide you will learn about [containers and orchestration](#containers), [the Kubernetes API](#kubernetes-api), and [kubectl](#kubectl).

## Containers

Kubernetes is a container orchestration tool and, therefore, needs a container runtime installed to work.

In practice, the default container runtime for Kubernetes is [Docker](https://www.docker.com/), though other runtimes like [rkt](https://coreos.com/rkt/), and [LXD](https://linuxcontainers.org/lxd/introduction/) will also work. With the advent of the [Container Runtime Interface (CRI)](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md), which hopes to standardize the way Kubernetes interacts with containers, other options like [containerd](https://containerd.io/), [cri-o](https://cri-o.io/), and [Frakti](https://github.com/kubernetes/frakti) have also become available. The guides in this series assume you have a working knowledge of containers and the examples will all use Docker as the container runtime.

- **Containers** are similar to virtual machines. They are light-weight isolated runtimes that share resources of the operating system without having to run a full operating system themselves. Containers consume few resources but contain a complete set of information needed to execute their contained application images such as files, environment variables, and libraries.

- **Containerization** is a virtualization method to run distributed applications in containers using microservices. Containerizing an application requires a base image that can be used to create an instance of a container. Once an application’s image exists, you can push it to a centralized container registry that Kubernetes can use to deploy container instances in a cluster’s *pods*, which you will learn more about in [Beginner's Guide to Kubernetes: Objects](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-objects/#pods).

- **Orchestration** is the automated configuration, coordination, and management of computer systems, software, middleware, and services. It takes advantage of automated tasks to execute processes. For Kubernetes, container orchestration automates all the provisioning, deployment, and availability of containers; load balancing; resource allocation between containers; and health monitoring of the cluster.

## Kubernetes API

Kubernetes is built around a robust RESTful API. Every action taken in Kubernetes, be it inter-component communication or user command, interacts in some fashion with the Kubernetes API. The goal of the API is to help facilitate the desired state of the Kubernetes cluster.

The Kubernetes API is a "declarative model", meaning that it focuses on the what, not the how. You tell it what you want to accomplish and it does it. This might involve creating or destroying resources but you don't have to worry about those details. To create this desired state, you create *objects*, which are normally represented by YAML files called *manifests*, and apply them through the command line with the **kubectl** tool.

## kubectl

kubectl is a command line tool used to interact with the Kubernetes cluster. It offers a host of features, including the ability to create, stop, and delete resources; describe active resources; and auto scale resources.

For more information on the types of commands and resources you can use with kubectl, consult the [Kubernetes kubectl documentation](https://kubernetes.io/docs/reference/kubectl/overview/).

## Next Steps

To continue in the [Beginner's Guide to Kubernetes](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes) series, visit part 2:

- [Beginner's Guide to Kubernetes, Part 1: Introduction](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-1-introduction/) (You Are Here)

- [Beginner's Guide to Kubernetes, Part 2: Master, Nodes, and the Control Plane](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-2-master-nodes-control-plane/)

- [Beginner's Guide to Kubernetes, Part 3: Objects](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-3-objects/)

- [Beginner's Guide to Kubernetes, Part 4: Controllers](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-4-controllers/)

- [Beginner's Guide to Kubernetes, Part 5: Conclusion](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-5-conclusion/)
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
author:
name: Andy Stevens
email: docs@linode.com
description: 'An introduction to Kubernetes concepts and components.'
keywords: ['kubernetes','k8s','beginner','architecture']
license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)'
published: 2019-07-29
modified_by:
name: Linode
title: "A Beginner's Guide to Kubernetes, Part 2: Master, Nodes, and the Control Plane"
contributor:
name: Linode
concentrations: ["Kubernetes"]
external_resources:
- '[Kubernetes API Documentation](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/)'
- '[Kubernetes Concepts Documentation](https://kubernetes.io/docs/concepts/)'
aliases: ['applications/containers/kubernetes/beginners-guide-to-kubernetes-master-nodes-control-plane/']
---

![A Beginner's Guide to Kubernetes](beginners-guide-to-kubernetes.png "A Beginner's Guide to Kubernetes")

{{< note >}}
This is the second guide in the [Beginner's Guide to Kubernetes](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes) series that explains the major parts and concepts of Kubernetes.
{{< /note >}}

At the highest level of Kubernetes, there exist two kinds of servers, a *Master* and a *Node*. These servers can be Linodes, VMs, or physical servers. Together, these servers form a *cluster* and are controlled by the services that make up the *Control Plane*.

In this guide you will learn about [the Master server](#kubernetes-master), cluster [nodes](#nodes), and the Kubernetes [Control Plane](#the-control-plane).

## Kubernetes Master

The Kubernetes Master is normally a separate server responsible for maintaining the desired state of the cluster. It does this by telling the Nodes how many instances of your application it should run and where.

## Nodes

Kubernetes Nodes are worker servers that run your application(s). The number of Nodes is determined by the user, and they are created by the user. In addition to running your application, each Node runs two processes:

- **kubelet** receives descriptions of the desired state of a [Pod](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-objects/#pods) from the API server, and ensures the Pod is healthy, and running on the Node.
- **kube-proxy** is a networking proxy that proxies the UDP, TCP, and SCTP networking of each Node, and provides load balancing. This is only used to connect to [Services](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-objects/#services).

## The Control Plane

Together, kube-apiserver, kube-controller-manager, kube-scheduler, and etcd form what is known as the *control plane*. The control plane is responsible for making decisions about the cluster, and pushing it toward the desired state. kube-apiserver, kube-controller-manager, and kube-scheduler are processes and etcd is a database; all four are run by the Kubernetes Master.

- **kube-apiserver** is the front end for the Kubernetes API server.
- **kube-controller-manager** is a daemon that manages the Kubernetes control loop. For more on Controllers, see the [Beginner's Guide to Kubernetes: Controllers](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-controllers/).
- **kube-scheduler** is a function that looks for newly created Pods that have no Nodes, and assigns them a Node based on a host of requirements. For more information on kube-scheduler, consult the [Kubernetes kube-scheduler documentation](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/).
- **Etcd** is a highly available key-value store that provides the backend database for Kubernetes. It stores and replicates the entirety of the Kubernetes cluster state. It's written in Go and uses the [Raft protocol](https://raft.github.io/) which means it maintains identical logs of state changing commands across nodes and coordinates the order in which these state changes occur.

## Next Steps

To continue in the [Beginner's Guide to Kubernetes](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes) series, visit part 3:

- [Beginner's Guide to Kubernetes, Part 1: Introduction](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-1-introduction/)

- [Beginner's Guide to Kubernetes, Part 2: Master, Nodes, and the Control Plane](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-2-master-nodes-control-plane/) (You Are Here)

- [Beginner's Guide to Kubernetes, Part 3: Objects](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-3-objects/)

- [Beginner's Guide to Kubernetes, Part 4: Controllers](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-4-controllers/)

- [Beginner's Guide to Kubernetes, Part 5: Conclusion](/docs/applications/containers/kubernetes/beginners-guide-to-kubernetes-part-5-conclusion/)
Loading