1. Overview
    1. An instance is a virtual machine (VM) hosted on Google's infrastructure
    2. An instance can be created using the Google Cloud Console, the gcloud command-line tool, or the Compute Engine API
    3. Compute Engine instances can run the public images for Linux and Windows Server that Google provides as well as private custom images that users create or import from existing systems
    4. Docker containers can be deployed, and automatically launched on instances running the Container-Optimized OS images
    5. Machine properties of instances, such as the number of virtual CPUs and the amount of memory, can be selected using a predefined machine types or by creating custom machine types
    6. Each instance belongs to a Google Cloud Console project, and a project can have one or more instances
    7. When an instance is created in a project, the zone, operating system, and machine type of that instance are specified
    8. When an instance is deleted, it is removed from the project
    9. By default, each Compute Engine instance has a small boot persistent disk that contains the operating system
    10. Additional storage can be added to instances when the applications running on an instance require more storage space
    11. A project can have up to five VPC networks, and each Compute Engine instance belongs to one VPC network.
    12. Instances in the same network communicate with each other through a local area network protocol
    13. An instance uses the internet to communicate with any machine, virtual or physical, outside of its own network
    14. Compute Engine instances support a declarative method for launching applications using containers
    15. When creating a VM or an instance template, a Docker image name and launch configuration can be configured
    16. When creating a VM or instance, Compute Engine will supply an up-to-date Container-Optimized OS image with Docker installed and launch the container when the VM starts up
    17. Google Cloud Console, the gcloud command-line tool, and the REST API can be used to create and manage instances
    18. To configure applications on instances, users can connect to the instance using Secure Shell (SSH) for Linux instances or Remote Desktop Protocol (RDP) for Windows Server instances
    19. Linux instances:
    20. Managing Instance Access Using OS Login allows users to associate SSH keys with Google Account or G Suite account and manage admin or non-admin access to instance through IAM roles.
    21. When users connect to instances using the gcloud command-line tool or SSH from the console, Compute Engine can automatically generate SSH keys and apply them to Google Account or G Suite accounts.
    22. SSH keys in project or instance metadata can be used to grant admin access to instances with metadata access that do not use OS Login.
    23. Compute Engine can automatically generate SSH keys and apply them to project metadata when users connect to instances using the gcloud command-line tool or SSH from the console
    24. To access Windows Server instances users need to create a password for a Windows Server instance
    25. Regardless of the region where a VM instance is created, the default time for the VM instance is the Coordinated Universal Time (UTC).
  2. VM Tenancy
    1. When a VM is created, by default it is scheduled onto a multi-tenant host
    2. On a multi-tenant host, VM might share host resources with VMs from other projects and with other customers
    3. When a VM is moved onto a sole-tenant node, the VM has exclusive access to and complete control of all of the VMs scheduled on that host
    4. The user is the sole tenant on the node, so workloads are isolated from the workloads of other projects
    5. Due to fluctuating requirements of workloads, periodic needs for additional isolation to examine performance, or changes to compliance regulations, specific workloads might need to be moved onto dedicated hardware using sole-tenant nodes
    6. VM configurations are preserved when VMs are moved between sole-tenant nodes and multi-tenant hosts, and if necessary, VMs can be rescheduled onto a multi-tenant host
    7. In addition to rescheduling VMs onto and off of sole-tenant nodes and node groups, VM tenancy also allows VMs to be rescheduled between nodes and node groups
    8. This can help consolidate nodes and rebalance workloads
    9. Rescheduling a VM requires a restart, so plan VM rescheduling based on the availability requirements of workloads
    10. VM licenses are not altered when modifying their tenancy