Google Kubernetes Engine (GKE) is a management and orchestration system for Docker container and container clusters that run within Google's public cloud services. Google Kubernetes Engine is based on Kubernetes, Google's open source container management system.
Organizations typically use Google Kubernetes Engine to:
- Create or resize Docker container clusters
- Create container pods, replication controllers, jobs, services or load balancers
- Resize application controllers
- Update and upgrade container clusters
- Debug container clusters
Users can interact with Google Kubernetes Engine using the gcloud command line interface or the Google Cloud Platform Console.
Google Kubernetes Engine is frequently used by software developers creating and testing new enterprise applications. Containers are also used by administrators to better meet the scalability and performance demands of enterprise applications, such as web servers.
Google Kubernetes Engine is comprised of a group of Google Compute Engine instances, which run Kubernetes. A master node manages a cluster of Docker containers. It also runs a Kubernetes API server to interact with the cluster and perform tasks, such as servicing API requests and scheduling containers. Beyond the master node, a cluster can also include one or more nodes, each running a Docker runtime and kubelet agent that are needed to manage Docker containers.
Google Kubernetes Engine users organize one or more containers into pods that represent logical groups of related containers. For example, these groups could include logfile system containers, checkpoint or snapshot system containers or data compression containers. Similarly, network proxies, bridges and adapters might be organized into the same pod. Generally, identical containers are not organized into the same pod. Users create and manage these pods through jobs.
If a pod of related containers become unavailable, access to those containers may be disrupted. Most applications in containers require redundancy to ensure that pods are always available. Google Kubernetes Engine includes a replication controller that allows users to run their desired number of pod duplicates at any given time.
Groups of pods can be organized into services, allowing non-container-aware applications to access other containers without needing additional code. For example, if a business has three pods that are used to process data from a client system, setting up the pods as a service allows the client system to use any of the pods at any time regardless of which pod is actually doing the work.
Google currently charges a flat fee for Kubernetes Engine services depending on the number of nodes in a cluster. A cluster of five nodes or less is currently free, and a cluster of six nodes or more is currently priced at $0.15 per-hour per-cluster. However, cloud pricing is extremely competitive and changes frequently, so it's important for prospective users to investigate current pricing and discount opportunities before implementing containers.