Kubernetes Reference

Brief Kubernetes overview and workflows to help you get started with Kubernetes and Orka.

Kubernetes Design and Architecture

Overview

Kubernetes is a production-grade, open-source infrastructure for the deploymentdeployment - A type of Kubernetes configuration that takes care of the deployment of containers. This term also refers to the Deployment controller which monitors and maintains the state of your pods. In Orka, deployment and deploy refer to the deployment of a single VM configuration on a single node. You have no control over the actual deployment configuration, you cannot interact with the controller, and you cannot deploy replica sets. scaling, management, and composition of application containers across clusters of hosts, inspired by previous work at Google.KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. is more than just a “containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. orchestrator.” It aims to eliminate the burden of orchestrating physical/virtual compute, network, and storage infrastructure, and enable application operators and developers to focus entirely on containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers.-centric primitives for self-service operation. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. also provides a stable, portable foundation (a platform) for building customized workflows and higher-level automation.

KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. is primarily targeted at applications composed of multiple containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers.. It therefore groups containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. using pods and labels into tightly coupled and loosely coupled formations for easy management and discovery.

KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. is a platform for deploying and managing containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers.. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. provides a containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. runtime, container orchestration, containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers.-centric infrastructure orchestration, self-healing mechanisms such as health checking and re-scheduling, and serviceservice - You can allow access to and manage the networking and connectivity for your Orka VMs through Kubernetes services. discovery and load balancing.

KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. aspires to be an extensible, pluggable, building-block OSS platform and toolkit. Therefore, architecturally, we want KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. to be built as a collection of pluggable components and layers, with the ability to use alternative schedulers, controllers, storage systems, and distribution mechanisms, and we're evolving its current code in that direction. Furthermore, we want others to be able to extend KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. functionality, such as with higher-level PaaS functionality or multi-cluster layers, without modification of core KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. source. Therefore, its API isn't just (or even necessarily mainly) targeted at end users, but at tool and extension developers. Its APIs are intended to serve as the foundation for an open ecosystem of tools, automation systems, and higher-level API layers. Consequently, there are no "internal" inter-component APIs. All APIs are visible and available, including the APIs used by the scheduler, the node controller, the replication-controller manager, Kubelet's API, etc. There's no glass to break --in order to handle more complex use cases, one can just access the lower-level APIs in a fully transparent, composable manner.

Goals

The project is committed to the following (aspirational)design ideals:

• Portable. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. runs everywhere --public cloud, private cloud, bare metal, laptop --with consistent behavior so that applications and tools are portable throughout the ecosystem as well as between development and production environmentenvironment - A MacStadium cloud environment with an enabled Orka service..

• General-purpose. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. should run all major categories of workloads to enable you to run all of your workloads on a single infrastructure, stateless and stateful, microservices and monoliths, services and batch, greenfield and legacy.

• Meet users partway. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka.) doesn’t just cater to purely greenfield cloud-native applications, nor does it meet all users where they are. It focuses on deployment and management of microservices and cloud-native applications but provides some mechanisms to facilitate migration of monolithic and legacy applications.

• Flexible. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. functionality can be consumed a la carte and (in most cases) Kubernetes does not prevent you from using your own solutions in lieu of built-in functionality.

• Extensible. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. enables you to integrate it into your environment and to add the additional capabilities you need, by exposing the same interfaces used by built-in functionality.

• Automatable. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. aims to dramatically reduce the burden of manual operations. It supports both declarative control by specifying users' desired intent via its API, as well as imperative control to support higher-level orchestration and automation. The declarative approach is key to the system’s self-healing and autonomic capabilities.

• Advance the state of the art. While KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. intends to support non-cloud-native applications, it also aspires to advance the cloud-native and DevOps state of the art, such as in the participation of applications in their own management. However, in doing so, we strive not to force applications to lock themselves into KubernetesAPIs, which is, for example, why we prefer configuration over convention in the downward API. Additionally, KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. is not bound by the lowest common denominator of systems upon which it depends, such as containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. runtimes and cloud providers. An example where we pushed the envelope of what was achievable was in its IP per podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI. networking model.

Architecture

A running KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. cluster contains nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers. agents (kubelet) and a cluster control plane (AKAmaster), with cluster state backed by a distributed storage system (etcd).

Cluster control plane (AKA master)

The Kubernetes control plane is split into a set of components, which can all run on a single master nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers. or can be replicated in order to support high-availability clusters, or can even be run on KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. itself (AKA self-hosted).

KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. provides a REST API supporting primarily CRUD operations on (mostly) persistent resources which serve as the hub of its control plane. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka.'s API provides IaaS-like containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers.-centric primitives such as podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI.s, Services, and Ingress, and also lifecycle APIs to support orchestration (self-healing, scaling, updates, termination) of common types of workloads, such as ReplicaSet(simple fungible/stateless app manager), deploymentdeployment - A type of Kubernetes configuration that takes care of the deployment of containers. This term also refers to the Deployment controller which monitors and maintains the state of your pods. In Orka, deployment and deploy refer to the deployment of a single VM configuration on a single node. You have no control over the actual deployment configuration, you cannot interact with the controller, and you cannot deploy replica sets. (orchestrates updates of stateless apps), Job (batch), CronJob (cron), DaemonSet (cluster services), and StatefulSet (stateful apps). We deliberately decoupled serviceservice - You can allow access to and manage the networking and connectivity for your Orka VMs through Kubernetes services. naming/discovery and load balancing from application implementation, since the latter is diverse and open-ended.

Both user clients and components containing asynchronous controllers interact with the same API resources, which serve as coordination points, common intermediate representation, and shared state. Most resources contain metadata, including labels and annotations, fully elaborated desired state (spec), including default values, and observed state (status).

Controllers work continuously to drive the actual state towards the desired state, while reporting back the currently observed state for useruser - To work with Orka, you need to have a user with an assigned license. You will use this user and the respective credentials to authenticate against the Orka service. After being authenticated against the service, you can run Orka CLI commands and Orka API calls.s and for other controllers.

While the controllers are level-based to maximize fault tolerance, they typically watch for changes to relevant resources in order to minimize reaction latency and redundant work. This enables decentralized and decoupled choreography-like coordination without a message bus.

API Server

The API server serves up the KubernetesAPI. It is intended to be a relatively simple server, with most/all business logic implemented in separate components or in plug-ins. It mainly processes REST operations, validates them, and updates the corresponding objects inetcd(and perhaps eventually other stores). Note that, for a number of reasons, KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. deliberately does not support atomic transactions across multiple resources.

KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. cannot function without this basic API machinery, which includes:

• REST semantics, watch, durability and consistency guarantees, API versioning, defaulting, and validation

• Built-in admission-control semantics, synchronous admission-control hooks, and asynchronous resource initialization

• API registration and discovery

Additionally, the API server acts as the gateway to the cluster. By definition, the API server must be accessible by clients from outside the cluster, whereas the nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers.s and certainly containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers., may not be. Clients authenticate the API server and also use it as a bastion and proxy/tunnel to nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers.s and podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI.s (and servicesservices - You can allow access to and manage the networking and connectivity for your Orka VMs through Kubernetes services.).

Cluster state store

All persistent cluster state is stored in an instance of etcd. This provides a way to store configuration data reliably. With watch support, coordinating components can be notified very quickly of changes.

Controller-Manager Server

Most other cluster-level functions are currently performed by a separate process, called theController Manager. It performs both lifecycle functions (e.g., namespacenamespace - Kubernetes namespaces are a way to divide the computational resources of an Orka environment between its users. Every Orka user works in the same shared namespace but only has view permissions for their own VMs. In this shared namespace, users can manage VM configurations and VMs. Currently, VM configurations and VMs are not shared across user namespaces. creation and lifecycle, event garbage collection, terminated-podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI. garbage collection, cascading-deletion garbage collection, nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers. garbage collection) and API business logic (e.g., scaling of podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI.s controlled by aReplicaSet).

The application management and composition layer, providing self-healing, scaling, application lifecycle management, serviceservice - You can allow access to and manage the networking and connectivity for your Orka VMs through Kubernetes services. discovery, routing, and serviceservice - You can allow access to and manage the networking and connectivity for your Orka VMs through Kubernetes services. binding and provisioning.

These functions may eventually be split into separate components to make them more easily extended or replaced.

Scheduler

KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. enables useruser - To work with Orka, you need to have a user with an assigned license. You will use this user and the respective credentials to authenticate against the Orka service. After being authenticated against the service, you can run Orka CLI commands and Orka API calls.s to ask a cluster to run a set of containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers.. The scheduler component automatically chooses hosts to run those containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. on. The scheduler watches for unscheduled podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI.s and binds them to nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers.s via the/bindingpod subresource API, according to the availability of the requested resources, quality of service requirements, affinity and anti-affinity specifications, and other constraints. KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. supports user-provided schedulers and multiple concurrent cluster schedulers, using the shared-state approach pioneered byOmega. In addition to the disadvantages of pessimistic concurrency described by the Omega paper, two-level scheduling modelsthat hide information from the upper-level schedulers need to implement all of thesame features in the lower-level scheduler as required by all upper-layer schedulers in order to ensure that their scheduling requests can be satisfied by available desired resources.

The Kubernetes Node

The Kubernetes node has the services necessary to run application containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers.s and be managed from the master systems.

Kubelet

The most important and most prominent controller in KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. is the Kubelet, which is the primary implementer of the podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI. and nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers. APIs that drive the containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. execution layer. Without these APIs, KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. would just be a CRUD-oriented REST application framework backed by a key-value store (and perhaps the API machinery will eventually be spun out as an independent project).

KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. executes isolated application containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. as its default, native mode of execution, as opposed to processes and traditional operating-system packages. Not only are application containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. isolated from each other, but they are also isolated from the hosts on which they execute, which is critical to decoupling management of individual applications from each other and from management of the underlying cluster physical/virtual infrastructure.

KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka. provides podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI.s that can host multiple containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. and storage volumes as its fundamental execution primitive in order to facilitate packaging a single application per containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. decoupling deploymentdeployment - A type of Kubernetes configuration that takes care of the deployment of containers. This term also refers to the Deployment controller which monitors and maintains the state of your pods. In Orka, deployment and deploy refer to the deployment of a single VM configuration on a single node. You have no control over the actual deployment configuration, you cannot interact with the controller, and you cannot deploy replica sets.-time concerns from build-time concerns, and migration from physical/virtual machines. The podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI. primitive is key to glean the primary benefits of deploymentdeployment - A type of Kubernetes configuration that takes care of the deployment of containers. This term also refers to the Deployment controller which monitors and maintains the state of your pods. In Orka, deployment and deploy refer to the deployment of a single VM configuration on a single node. You have no control over the actual deployment configuration, you cannot interact with the controller, and you cannot deploy replica sets. on modern cloud platforms, such as KubernetesKubernetes - An open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes sits at the core of Orka..

API admission control may reject podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI.s or add additional scheduling constraints to them, but Kubelet is the final arbiter of what podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI.s can and cannot run on a given nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers., not the schedulers or DaemonSets.

Kubelet also currently links in the cAdvisor resource monitoring agent.

Container runtime

Each nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers. runs a containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. runtime, which is responsible for downloading images and running containerscontainers - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers..

Kubelet does not link in the base containercontainer - A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. In Orka, VM configurations and VMs are Docker containers. runtime. Instead, we're defining a Container Runtime Interface to control the underlying runtime and facilitate pluggability of that layer. This decoupling is needed in order to maintain clear component boundaries, facilitate testing, and facilitate pluggability. Runtimes supported today, either upstream or by forks, include at least Docker (for Linux and Windows),rkt,cri-o, andfrakti.

Kube Proxy

The serviceservice - You can allow access to and manage the networking and connectivity for your Orka VMs through Kubernetes services. abstraction provides a way to group podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI.s under a common access policy (e.g., load-balanced). The implementation of this creates a virtual IP which clients can access and which is transparently proxied to the podpod - A group of one or more containers with shared storage and network and a specification for how to run the containers. In Orka, a pod consists of one container holding one macOS VM. To work with pods with multiple containers, you need to use `kubectl` instead of the Orka CLI.s in a serviceservice - You can allow access to and manage the networking and connectivity for your Orka VMs through Kubernetes services.. Each nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers. runs akube-proxyprocess which programs iptables rules to trap access to service IPs and redirect them to the correct backends. This provides a highly-available load-balancing solution with low performance overhead by balancing client traffic from a nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers. on that same nodenode - An Orka node is a physical or logical host that provides computational resources for your VMs. A Kubernetes node is a physical machine that runs your containers..

Service endpoints are found primarily via DNS.

Updated 4 months ago


Kubernetes Reference


Brief Kubernetes overview and workflows to help you get started with Kubernetes and Orka.

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.


© 2019-2020 Copyright MacStadium, Inc. – Documentation built with readme.io. Orka is a registered trademark of MacStadium, Inc.