Upload
mike-martin
View
151
Download
0
Embed Size (px)
Citation preview
The take on Azure, Nano and Containers
Mike MartinCronos – Crosspoint SolutionsEnterprise Architect
Micros… Err
Mike MartinWho Am I
View more tips on my bloghttp://techmike2kx.wordpress.com
Crosspoint Solutions (part of Cronos)
Where I Work
Architect, Windows Azure MVP, MEET, Insider
What I Do
Where To Find Me
A little more about me
Les Deux InfinisL’infini immense et l’infini petit
Blaise PascalMathematician, philosopher and developer avant la lettre
ContainersA new approach to build, ship, deploy, and instantiate applications
Physical
Applications traditionally built and deployed onto physical systems with 1:1 relationship
New applications often required new physical systems for isolation of resources
Higher consolidation ratios and better utilization
Faster app deployment than in a traditional, physical environment
Apps deployed into VMs with high compatibility success
Apps benefited from key VM features i.e., live migration, HA
Physical/virtualKey benefitsFurther accelerate of app deploymentReduce effort to deploy appsStreamline development and testingLower costs associated with app deploymentIncrease server consolidation
Package and run apps withincontainers
Virtual
ContainersIsolated runtime environment for hosted applications
DependenciesEvery application has its own dependencies which includes both software (services, libraries) and hardware (CPU, memory, storage)
VirtualizationContainer engine is a light weight virtualization mechanism which isolates these dependencies per each application by packaging them into virtual containers
Shared host OSContainer runs as an isolated process in user space on the host OS, sharing the kernel with other containers
FlexibleDifferences in underlying OS and infrastructure are abstracted away, streamlining “deploy anywhere” approach
FastContainers can be created almost instantly, enabling rapid scale-up and scale-down in response to changes in demand
Container
App ABins/libraries
App BBins/libraries
Container management stack
Host OS with container support
Server
FlexibleVMs can be migrated to other hosts to balance resource usage and for host maintenance, without downtime
SecureHigh levels of resource and security isolation for key virtualized workloads
ContainersHow do they differ from virtual machines?
DependenciesEach virtualized app includes the app itself, required binaries and libraries and a guest OS, which may consist of multiple GB of data
Independent OSEach VM can have a different OS from other VMs, along with a different OS to the host itself
Virtual machine
App ABins/Libraries
App BBins/Libraries
Hypervisor
Server
Guest OSGuest OS
Container use casesWorkload characteristicsScale out DistributedState separatedRapid (re)start
Databases
Web Tasks Scale out
Deployment characteristicsEfficient hostingMultitenancyRapid deploymentHighly automatable Rapid scaling
Distributed compute𝒇 (𝒙 )
Container ecosystem
Container runtime
Linux
Container images Image repository
Application framework
Application
Microsoft’s Container runtimesWindows Server container
Hosting Highly automated
Secure Scalable and elastic
Efficient Trustedmulti-tenancy
Hyper-V containerShared hosting
Regulated workloads
Highly automated
Secure Scalable and elastic
Efficient Publicmulti-tenancy
Container Runtimes
Windows Server container
Hyper-V container
Modern app dev, flexible isolation
Windows Container Images
Application Framework
Write once, deploy anywhere
Container Management
Docker
PowerShell
Others
• Nano Server: A new headless, 64-bit only, deployment option for Windows Server
• Deep refactoring with cloud emphasis• Cloud fabric & infrastructure (clustering, storage, networking)• Born-in-the-cloud applications (PaaS v2, ASP.NET v5)• VMs & Containers (Hyper-V & Docker)
• Extend the Server Core pattern• Roles & features live outside of Nano Server• No Binaries or metadata in OS image• Standalone packages install like apps• Full driver support• Antimalware
It’s one small step from/for Cloud…
Nano Server
ServerCore
Serverwith a
Desktop Experienc
e
Nano Server Quick StartScripts included in Nano Server folder to make it easy to build a customized Nano Server image• NanoServerImageGenerator.psm1• Convert-WindowsImage.ps1
Use scripts to generate a Nano Server image forPHYSICAL MACHINE
VIRTUAL MACHINE
New-NanoServerImage -MediaPath F:\ -BasePath .\Base-TargetPath .\NanoVM\SRV-Nano.vhd -ComputerName SRV-Nano-GuestDrivers –Storage -Clustering
The end result…
Nano Server roles and featuresTable shows roles and features that are available in this release of Nano Server, along with the Windows PowerShell options that will install the packages for them
Role or feature OptionHyper-V role -Compute
Failover clustering -Clustering
File server role and other storage components -Storage
Windows Defender antimalware, including a default signature file -Defender
OEM drivers—select drivers that ship in-box with Server Core -OEMDrivers
Reverse forwarders for application compatibility, for examplecommon application frameworks such as Ruby, Node.js, etc. -ReverseForwarders
Hyper-V guest drivers for hosting Nano Server as a VM -GuestDrivers
Host Support for Windows Containers -Containers
Nano Server roles and featuresTable shows roles and features that are available in this release of Nano Server, along with the Windows PowerShell options that will install the packages for them
Role or feature OptionDNS Server Role -Packages Microsoft-NanoServer-DNS-Package
Desired State Configuration (DSC) -Packages Microsoft-NanoServer-DSC-Package
IIS Web Server -Packages Microsoft-NanoServer-IIS-Package
System Center VMM Agent -Packages Microsoft-Windows-Server-SCVMM-Package-Packages Microsoft-Windows-Server-SCVMM-Compute-Package
Network Perf Diagnostics Service (NPDS) -Packages Microsoft-NanoServer-NPDS-Package
Data Center Bridging -Packages Microsoft-NanoServer-DCB-Package
Remotely managing Nano ServerRemote graphical
& Web tools
• Server manager• Azure Portal tools• Task manager• Registry editor• File explorer• Server configuration• Event viewer• Disk manager• Device & driver
management• Performance• Users & groups
PowerShell remoting
• Core PowerShell engine, language, and cmdlets
• Windows Server cmdlets (network, storage, etc.)
• PowerShell DSC• Remote file transfer• Remote script
authoring & debugging
• PowerShell Web access
VM & container management
• Hyper-V manager• Hyper-V cmdlets• PowerShell Direct
over PSRP• CimSession support• Docker• SCVMM agent
& console• 3rd-party agents
& consoles
Deployment & monitoring
• DISM online & VHD support
• Unattended setup• Visual Studio
integration• DSC Local Config
Manager• Setup & boot
eventing• SCOM agent• VSO App Insights• Azure Op Insights
Partners & frameworks
• Chef integration• .NET Core and
CoreCLR• ASP.NET 5• Python, PHP, Ruby,
Node.js• PowerShell Classes• PS Script Analyzer• PowerShell Gallery• PowerShellGet
Remote Server Management Tool
Includes replacements for local-only tools• Task manager, registry editor• Event viewer, device manager• Sconfig• Control panel, file explorer• Performance monitor, disk
management• Users/Groups managerSupports Server Core and server with desktop experience
Azure-based
Eliminating the need to ever sit in front of a server
Why containers?Applications are fueling innovation in today’s cloud-mobile world
Developers• Containers unlock ultimate productivity and freedom• Enable ‘write-once, run-anywhere’ apps• Can be deployed as multi-tier distributed apps in
IaaS/PaaS models • Containers offers powerful abstraction for
microservices
Operations• Enhances familiar IT deployment models• Provide standardized environments for
development, QA, and production teams
• Abstract differences in OS distributions and underlying infrastructure
• Higher utilization and compute density• Rapid scale-up and scale-down in response to
changing business needs
DevOps• Integrate people, process, and tools
for an optimized app development process
• Operations focus on standardized infrastructure
• Developers focus on building, deploying, and testing apps
Container runtime
Operating System OS Image
Physical host
Container runtime
Host Operating System
Hardware Virtualization
Operating System
Operating System OS Images
Virtual machine(s)
Container runtime
Host Operating System
Containers
Container runtime
Host Operating System
OS Image
Hardware Virtualization
Virtual machine(s)
Guest Operating System
Containers
Local Repository
Image creation
Container ViewContainer OS
ImageC:\Windows\*
Local Repository
Image creation
C:\Windows\*
Empty
Container ViewContainer OS
Image
SandboxC:\Windows\*
Local Repository
Image creation
C:\Windows\*
Empty
Container ViewContainer OS
Image
SandboxC:\Windows\*
C:\nodeJS
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Container ViewContainer OS
Image
SandboxC:\Windows\*C:\nodeJS
C:\nodeJS
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Container ViewContainer OS
Image
Sandbox
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Container View
Application Framework Application
Framework
Container OS Image
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Empty
Container View
Application Framework Application
Framework
Container OS Image
Sandbox
C:\Windows\*C:\nodeJS
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Empty
Container View
Application Framework Application
Framework
Container OS Image
Sandbox
C:\Windows\*C:\nodeJS
C:\myApp
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
C:\myApp
Container View
Application Framework Application
Framework
Container OS Image
Sandbox
C:\Windows\*C:\nodeJSC:\myApp
C:\myApp
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
C:\myApp
Container View
Application Framework Application
Framework
Container OS Image
Sandbox
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
C:\myApp
Container View
Application Framework Application
Framework
Application Image
Container OS Image
Docker integrationJoint strategic investments to drive containers forward
Docker: An open source engine that automates the deployment of any application as a portable, self-sufficient container that can run almost anywhere
Partnership: Enable the Docker toolset to manage multi-container applications using both Linux and Windows containers, regardless of the hosting environment or cloud provider
Investments in the next waveof Windows Server
Open source development of theDocker Engine for Windows Server
Azure support for theDocker Open Orchestration APIs
Federation of Docker Hub images into the Azure Gallery and Portal
Strategic investments
Docker
Dockerized app
Windows ServerContainer
LinuxContainer
CustomerDatacenter
ServiceProvider
MicrosoftAzure
Run anywhere
Docker integrationJoint strategic investments to drive containers forward
Docker Hub in Azure: Huge collection of open and curated applications available for download
Docker Hub: Huge collection of open and curated applications available for download. https://hub.docker.com
Collaboration: Bring Windows Server containers to the Docker ecosystem to expand the reach of both developer communities
Docker Engine: Docker Engine for Windows Server containers will be developed under the aegis of the Docker open source project
Docker client: Windows customers will be able to use the same standard Docker client and interface on multiple development environments
Docker Client
Windows Server Linux
Docker Engine(Daemon)
Windows ServerContainer Support
Linux ContainerSupport (LXC)
Docker Engine(Daemon)
Docker.exeExamples:docker rundocker images
Docker Remote APIExamples:GET images/jsonPOST containers/create
Local Repository
Development process using containers
Central Repository
Application Framework
Local Repository
Application Framework
Development process using containers
Central Repository
Application Framework
Developers can choose desired application frameworks and pull them locally from central repositories
Local Repository
Application Framework
Development process using containers
Central Repository
Application Framework
Developers can choose desired application frameworks and pull them locally from central repositories
Required dependencies are automatically identified and pulled locally
Local Repository
Application Framework
Development process using containers
Developers use the same programming languages and environments they are accustomed to
Central Repository
Application Framework
using System;class Program{ static void Main() {
}}
Local Repository
Application Framework
Development process using containers
Applications are compiled and assembled in the same way developers are accustomed to
Central Repository
Application Framework
using System;class Program{ static void Main() {
}}
Local Repository
Application Framework
Development process using containers
A new container image is built containing the application, written by the developer
Central Repository
Application Framework
using System;class Program{ static void Main() {
}}
Local Repository
Application Framework
Development process using containers
Central Repository
Application Framework
using System;class Program{ static void Main() {
}}
The new application container image can now be pushed to a central repository
Development process using containers
Central Repository
Application Framework
Development process using containers
Central Repository
Application Framework
Used for unit testingShare with other developers
Development process using containers
Central Repository
Application Framework
Used for unit testingShare with other developers
Staged for integration or QA
DevOps process with containers
Developers build and test apps in containers, using development environment; i.e., Visual Studio
Operations automates deployment and monitors deployed apps from central repository
1 2
2
3Operations collaborates with developers to provide app metrics and insights
Developers update, iterate, and deploy updated containers
Containers pushed
to central repository
Central Repository
Container OS environments
Nano Server
“Born in the cloud” applications
Highly optimized
Server Core
Traditional applications
Highly compatible
Host Operating System
Container runtime
Windows Servercontainer(s)
Container runtime
Host Operating System
Hyper-V Hypervisor
Virtual machine(s)
Hyper-Vcontainer(s)
Windows Servercontainer(s)
Container runtime
Host Operating System
Hyper-V Hypervisor
Virtual machine(s)
Windows Server container(s)
Hyper-V Hypervisor
Hyper-Vcontainer(s)
The right tools for youContainer management
PowerShell Docker Others
Container technologiesLinux
Microsoft CloudAzure On-
premisesService provider
Development environments
Eclipse
Others…
Development frameworks and languagesPHPPythonWin32RubyGo.NET
NodeJavaJavascriptC++Perl
Service Fabric
• Scales by cloning the app on multiple servers/VMs/Containers
Monolithic application approach Microservices application approach• A microservice application
separates functionality into separate smaller services.
• Scales out by deploying each service independently creating instances of these services across servers/VMs/containers
• A monolith app contains domain specific functionality and is normally divided by functional layers such as web, business and data
App 1 App 2App 1
Public Cloud Other CloudsOn PremisesPrivate cloud
LifecycleMgmt
Independent Scaling
Independent Updates
Always On
Availability
ResourceEfficient
Stateless/Stateful
Azure Service Fabric
Datacenter (Azure, On Premises, Other Clouds )
Load Balanc
er
PC/VM #1Service FabricYour code, etc.
PC/VM #2Service FabricYour code, etc.
PC/VM #3Service FabricYour code, etc.
PC/VM #4Service FabricYour code, etc.PC/VM #5
Service FabricYour code, etc.
Service Fabric Cluster
Management to deploy your code,
etc. (Port: 19080)
App Web Request(Port: 80/443/?)
Orchestration SolutionsOrchestration Management
CloudCloud
Swarm Compose
Marathon
Docker Tooling Status
• Docker 1.0 -> Azure CLI- azure create vm docker …
- docker … (Linux Only)
• Windows port- docker … (on windows)
• Docker Machine- docker-machine create –d hyper-v …
- docker-machine create –d azure …
• Compose and Swarm
Microsoft Specific Status• Windows Server Containers at //build in April
• Multi-Platform Containerized application at DockerCon
• Docker VM Extension for Linux on Azure
• Hyper-V Containers
• Visual Studio tooling
• Visual Studio Online for CI across multiple containers using Docker Compose
• Docker Trusted Registry support in Visual Studio Online
• Azure Marketplace integration of containerized applications
• Docker Marketplace VM for Docker Trusted Registries
Are Containers Used?
• Customers are very interested• Many in testing and Proof of Concept
• Microsoft uses containers internally• E.g. Azure Linux Compute team for build
• Python Notebook Service• Machine Learning Service in test
• Push 1000 containers in about 6 seconds• Start notebook server, bring up a notebook & print in 42 seconds
Microsoft’s Value Add for Containers
• Only Microsoft can deliver Windows Containers
• Docker VM Extension
• Hyper-V Containers
• Visual Studio tooling
• Continuous Integration with Visual Studio online
• Docker Trusted Registry support in VSO
• Marketplace integration of containerized applications
Architecture
Operating System
Docker Engine
Docker Client
Docker Registry
Docker Compose Docker Swarm
Docker Universal Control Plane } Container
Development and Management Toolset
Container Runtime
Architecture In Linux
Containerd + runC
Docker Engine
REST Interface
libcontainerd graphlibnetwork plugins
Operating System
Control Groupscgroups
NamespacesPid, net, ipc, mnt, uts
Layer CapabilitiesUnion Filesystems AUFS,
btrfs, vfs, zfs*, DeviceMapper
Other OS Functionality
Docker Client Docker RegistryDocker Compose Docker Swarm
Architecture In Windows
Docker Engine
REST Interface
libcontainerd graphlibnetwork plugins
Operating System
Control GroupsJob objects
NamespacesObject Namespace,
Process Table, Networking
Layer CapabilitiesRegistry, Union like
filesystem extensions
Other OS Functionality
Compute Services
Docker Client DockerRegistryDocker Compose Docker Swarm
Docker
PlatformSpecific
PlatformIndependent
Comparing OS Architectures
Linux Control Groupscgroups
NamespacesPid, net, ipc, mnt, uts
Layer CapabilitiesUnion Filesystems: AUFS,
btrfs, vfs, zfs*,DeviceMapper
Other OS Functionality
Containerd + runC
Docker EngineREST Interface
libcontainerd graphlibnetwork plugins
Windows Control GroupsJob objects
NamespacesObject Namespace, Process
Table, Networking
Layer CapabilitiesRegistry, Union like filesystem
extensions
Other OS Functionality
Compute Services
Docker Client Docker SwarmDocker Compose Docker Registry
Host User Mode
Container Management
Windows Server Containers
Windows Kernel
Compute Services
Docker Engine
Windows Server Container
System Processes
Application Processes
System Processes
Session Manager
Local Security Authority
Event Manager…
Etc…
Job Object Net Interface
StorageRegistry
Windows Server Container
System Processes
Application Processes
Job Object Net Interface
StorageRegistry
Hyper-V Containers
Hyper-V Container
Windows Kernel
Guest Compute Service
Windows Server Container
System Processes
Application Processes
Job Object Net Interface
StorageRegistry
Basic System
Processes
Host
Use
r Mod
e
Container Management
Windows Kernel
Compute Services
Docker Engine
System Processes
Session Manager
Local Security Authority
Event Manager…
Etc…
Hyper-V Hypervisor
Host
Use
r Mod
eVirtual Machine
Specifically Optimized To Run a Container
Container Management
Hyper-V Containers
Windows Kernel
Compute Services
Docker Engine
System Processes
Session Manager
Local Security Authority
Event Manager…
Etc…
Hyper-V Hypervisor
Hyper-V Container
Windows Kernel
Guest Compute Service
Windows Server Container
System Processes
Application Processes
Job Object Net Interface
StorageRegistry
Basic System
Processes
Same Container Images, Same API
Container Management
Docker
Windows Container Images
Application
Framework
Container Run-TimesHyper-V Container
Windows Server Container
Write once, deploy anywhere
Docker Universal Control Plane- Web Based UI- Manages
>Container hosts>Container based applications>Container registries/images
- Role Based Access Control (AD and LDAP support)
Microsoft Operations Management Suite- Monitoring Solution for Docker- Monitors
>Syslog events>Performance metrics>Container data
Management and Monitoring Tools
Useful InformationDocker Introduction
https://msopentech.com/opentech-projects/docker/
Docker on Microsoft Azure
https://msopentech.com/blog/2014/06/09/docker-on-microsoft-azure/
The Docker Virtual Machine Extension for Linux on Azure
https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-docker-vm-extension/
How to use the Docker VM Extension from Azure CLI
http://azure.microsoft.com/documentation/articles/virtual-machines-docker-with-xplat-cli/
How to use the Docker VM Extension with the Azure Portal
http://azure.microsoft.com/documentation/articles/virtual-machines-docker-with-portal/
Azure Virtual Machine Extension for Dockerhttps://github.com/Azure/azure-docker-extension/blob/master/README.md