What is Google Kubernetes Engine?
Google Kubernetes Engine (GKE) is an enterprise-grade Kubernetes management platform. The platform utilises Google’s infrastructure and public cloud services to provide a managed environment for deploying, managing and scaling stateless and containerized applications.
The platform allows users to create continuous delivery pipelines, modernise applications or migrate their apps.
Who uses GKE and Why?
GKE is typically used by organisations and software developers whilst creating new applications. Customers usually decide when building new architecture to begin on Kubernetes using their docker components. It is also used as a target infrastructure for a lot of re-platform projects.
Kubernetes is the leading platform when it comes to container orchestration, originally built by Google – this platform now runs as a managed service, GKE on Google’s Cloud offering.
People choose GKE because Kubernetes by itself is difficult to set up and secure as well as manage and upgrade. The GKE service handles all of these issues so businesses can focus on delivering services rather than continually managing their infrastructure.
Managed vs Non-Managed Kubernetes Services
As a platform, Google Kubernetes Engine serves as a Managed Kubernetes Service.
What is a Managed Kubernetes Service?
Managed Kubernetes Services relate to Kubernetes systems that are set up and/or run through third party providers. This managed service can range from providing extra support to users to full hosting and operations.
Why use Managed Kubernetes Service?
Successfully setting up and running Kubernetes requires specific knowledge and expertise. Many organisations do not have the in-house expertise to manually set up and run Kubernetes successfully, making the option of outsourcing to a third party more convenient. Managed services mean deployment and running can be smoother and less time consuming compared to non managed services which would require an in-house employee learning the fine details of Kubernetes management,
Managed Services such as Google Kubernetes Engine which feature many automatic control options built-in can also be useful to developers who run multiple applications in helping them optimise their deployments for the best, most efficient results possible.
The GKE Clusters are managed through a Kubernetes open-source cluster management system, which provides the mechanisms for interacting with clusters. Applications can be managed through the use of the Kubernetes commands and resources whilst users are also able to perform administration tasks, set policies and monitor the health of deployed workloads.
The benefits of running a cluster through GKE are the assistance and support of Google Cloud’s advanced management features including; Load Balancing for computer engine instances, Additional Flexibility through node pools, automatic scaling, upgrades and repair as well as logging and monitoring.
Key Features of Google Kubernetes Engine
Overview of Google Kubernetes Engine Photo Credit: Google GCP Twitter
Users are able to easily monitor, inspect and manage project clusters and their resources through built-in dashboards set up through Cloud Console
GKE is both backed by and easily integrated with other Google tooling. Integrated Logging and Monitoring is easily enabled – allowing easy insight into how applications are running
For extra convenience, GKE offers built-in automation processes including;
- Auto Repair: Users can enable GKE’s Auto Repair function which automatically initiates a repair process when nodes fail a health check.
- Auto Upgrade: GKE clusters are consistently kept up to date through auto-upgrade. New versions of GKE are released every few months and thanks to auto-upgrade, users avoid the having to manually update to the newest version. Control over which auto-updates each cluster receives are controlled by Release Channels – which control automatic updates based on the stability requirements of each cluster and its workloads.
Quick, Easy Setup
The setup for GKE is straightforward and quick with a short learning curve due to Google setting up baseline functionality for the user. Users can simply input basic information about their cluster and GKE then automatically bootstrap a cluster for them – meaning a Kubernete can be turned on and functional within 10 minutes. The platform offers pre-built deployment templates and containers are deployed via Cloud Build without the need for time-consuming setup authentication processes.
Global Load Balancing
Incoming requests can be distributed across pools of instances across multiple regions thanks to Global Load- Balancing Technology. This distribution helps achieve maximum performance, throughput and availability at low cost.
Identity & Access Management
Access and role permissions to GKE clusters is easily controlled through Google Accounts.
IP address ranges can be reserved for clusters, meaning the IP of clusters within GKE co-exsist with private network IPs through Google Cloud VPN
Flexibility and Personalisation
- Multiple Cluster Options: GKE offers multiple cluster options in which users can select and tailor clusters based on; availability, version stability, isolation and pod traffic requirements. Users can also specify the volume of CPU and RAM needed for each container based on their workloads.
- Docker Image Support: Docker Containers are fully supported on GKE and private Docker images are easily stored and accessed thanks to integration with Google Container Registry.
- Stateful Application Support: Users can attach persistent storage to container and host complete databases.
Computer Optimised OS
GKE runs on a Google built and managed container-optimised, hardened OS
Certified Kubernetes enable the portability of workloads to other platforms, both across clouds and on-premises
- Linux and Windows: GKE is fully supported for running both Linux nodes and Windows server.
- Hybrid and Multi-Cloud Support means users can utilise Kubernetes and Cloud Technology in their own data centre.
- GPU and TPU are supported in GKE – making it easy to run ML, GPGHU, HPC and other workloads which benefit from specialised hardware accelerators.
- Always-encrypted Local Solid-State Drive Support block storage is also offered. SSD’s are attached to the virtual machine’s host-server for high input and output operations per second with low latency compared to persistent disks.
GKE provides enhanced workload security through GKE Sandbox, which provides a second defence layer between its containerised workloads. Traffic is restricted with pod-level firewall rules due to clusters natively supporting Kubernetes Network Policy. Private clusters can be restricted to either private or public endpoints that can access certain address ranges only.
The GKE Platform offers 4 autoscaling options for both workloads and infrastructure.
Workload Scaling Options
- Vertical Pod Autoscaling (VPA) allows you to size your pods. The autoscaler will recommend values for CPU, memory requests and memory limits or can update these values automatically.
- Horizontal Pod Autoscaling (HPA) allows you to add or remove pods. The HPA scales the number of pods in a replication controller, deployment, replica or stateful set automatically based on observed CPU utilisation or application metrics.
Infrastructure Scaling Options
- Cluster Autoscaling (CA) adds or removes nodes based on your scheduled workload. Users can simply specify a minimum and maximum node pool size and leave the rest up to the automation which will rescale (up or down) within these boundaries.
- Node-Auto Provisioning (NAP) dynamically creates and adds new node pools with nodes that match the user’s pod needs when workload demand increases.
Deploying a Cluster in Google Kubernetes Engine
Clusters serve as a foundation of GKE, with the Kubernetes objects that represent the containerised applications running on top of a cluster. Each GKE cluster includes one or more control planes and multiple nodes.
When using GKE and deploying clusters, users can create a tailored cluster suited to both their workload and budget.
GKE offers multiple cluster types, with the choice of cluster type selected affecting the cluster’s availability, version stability, network isolation and whether that cluster is VPC Native or route-based. The 3 primary options of cluster type available are:
- Zonal Clusters: Clusters that contain a single control panel in one zone
- Multi Zonal Clusters: Clusters containing a single control plane replica running in a single zone, with nodes running in multiple zones.
- Regional Clusters: A cluster with multiple control pane replicas running in multiple zones within a given region.
As well as cluster types, users can also select from various Kubernetes versions on which to deploy their cluster. can choose from;
- Specific: Users can select a specific supported version of Kubernetes that is suited to their specific workload when deploying a cluster.
- Release Channel: When a user knows the stability level needed they can choose to enroll the cluster into a release channel. The cluster and its nodes are automatically updated when new updates are made available.
- Default: Google selects a default setting for clusters when a release channel or other cluster version isn’t selected. This version is selected on usage and real-world performance and is regularly changed.
Zonal Cluster Architecture Image Credit: Google Cloud
‘Worker nodes’ exist within clusters, with each cluster containing one or more nodes. Nodes refer to the Worker Machines that run containerised applications and workloads and are Compute Engine VM Instances automatically created by GKE when a cluster is created.
Nodes are managed individually from a control plane – with the control plane receiving updates on the node’s self reported status. Whilst users can manually control a node’s lifecycle, there is also the option of automating repairs and upgrades via GKE.
Selecting Node Settings
When creating Node pools and Clusters, GKE ensures users have control over particular node settings including;
- Machine Type: Users can select machine types when creating a cluster or choose the default machine type of e2-medium.
- Node OS Images: Users can select which specialised OS Images they want their clusters and node pools to use.
- CPU Platform: Users can specify a baseline CPU platform for nodes when creating a cluster.
Google Kubernetes Engine Pricing
The pricing structure of GKE is fairly straightforward – with no initial set up cost or termination fee.
Instead, Google Kubernetes Engine charges a flat fee of $0.10 per cluster per hour for cluster management. The flat fee applies to all cluster sizes and topology – including single zone, multi zonal and regional clusters. However, they do offer one free zonal cluster (single or multi zonal) per account per month.
As GKE computes billings on a per-second, per-cluster basis, the amount owed is rounded up to the nearest cent and then charged monthly.
New Customers to the service receive $300 of free credits which can be spent on Google Cloud during the first 90 days of usage.
Additional costs to billing can be incurred by using Compute Engine Instances for worker nodes in the cluster. These instances are individually billed on a per-second basis (one-minute minimum usage cost) according to Compute Engine pricing until the nodes are deleted.
How to calculate your costs
Users can consult the Google Cloud Pricing Calculator to establish an estimated cost of GKE dependent on their needs.