Build cloud-native applications with Kubernetes While it can be complex to implement, Kubernetes gives you tremendous power to run containerized applications on your own terms, and to react to changes in your organization with agility. This freedom of choice is part of the flexible nature of Kubernetes. Additionally, you can choose to run Kubernetes on your own or work with a vendor who can provide a supported version. There’s also the work of managing roles, access control, multitenancy, and secure default settings. You choose the operating system, container runtime, continuous integration/continuous delivery (CI/CD) tooling, application services, storage, and most other components. Kubernetes offers the tools to orchestrate a large and complex containerized application, but it also leaves many decisions up to you. As you consider how these components communicate with each other-and with external resources and infrastructure-you can appreciate the challenges of configuring and securing a Kubernetes cluster. This simplified overview of Kubernetes architecture just scratches the surface.
The kube-proxy handles network communications inside or outside of your cluster-relying either on your operating system’s packet filtering layer, or forwarding the traffic itself. kube-proxyĮach compute node also contains kube-proxy, a network proxy for facilitating Kubernetes networking services. When the control plane needs something to happen in a node, the kubelet executes the action. The kublet makes sure containers are running in a pod. kubeletĮach compute node contains a kubelet, a tiny application that communicates with the control plane. Docker is one example, but Kubernetes supports other Open Container Initiative-compliant runtimes as well, such as rkt and CRI-O. To run the containers, each compute node has a container runtime engine. Pods can be connected to persistent storage in order to run stateful applications.
WHAT IS KUBERNETES SIMPLE EXPLANATION SERIES
Each pod is made up of a container or a series of tightly coupled containers, along with options that govern how the containers are run. It represents a single instance of an application. PodsĪ pod is the smallest and simplest unit in the Kubernetes object model. Need to scale up the capacity of your cluster? Add more nodes. Pods are scheduled and orchestrated to run on nodes. Fault-tolerant and distributed, etcd is designed to be the ultimate source of truth about your cluster.Ī Kubernetes cluster needs at least one compute node, but will normally have many. etcdĬonfiguration data and information about the state of the cluster lives in etcd, a key-value store database. And there are controllers for creating accounts and API access tokens. A controller connects services to pods, so requests go to the right endpoints. If a pod goes down, another controller notices and responds. One controller consults the scheduler and makes sure the correct number of pods is running. kube-controller-managerĬontrollers take care of actually running the cluster, and the Kubernetes controller-manager contains several controller functions in one. Then it schedules the pod to an appropriate compute node.
The scheduler considers the resource needs of a pod, such as CPU or memory, along with the health of the cluster. Is your cluster healthy? If new containers are needed, where will they fit? These are the concerns of the Kubernetes scheduler. You can access the API through REST calls, through the kubectl command-line interface, or through other command-line tools such as kubeadm.
The API server determines if a request is valid and, if it is, processes it. The Kubernetes API is the front end of the Kubernetes control plane, handling internal and external requests. Need to interact with your Kubernetes cluster? Talk to the API. You’ve configured your cluster to run a certain way. The control plane is in constant contact with your compute machines. These core Kubernetes components handle the important work of making sure your containers are running in sufficient numbers and with the necessary resources. Here we find the Kubernetes components that control the cluster, along with data about the cluster’s state and configuration. Let’s begin in the nerve center of our Kubernetes cluster: The control plane.