SlideShare a Scribd company logo
1 of 25
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
部落格:http://blog.miniasp.com/
Container Technologies
Windows Server 2019 容器技術
3
兩種容器執行模式
• Windows Server 容器技術
– 多個容器執行個體可以在一部主機上同時執行
– 透過命名空間、資源控制和程序隔離技術來提供容器隔離
• 在容器中執行的程式,在 Host 主機看的見!
• 容器執行個體會與 容器主機 共用相同的作業系統核心
• Hyper-V 容器技術
– 為 Windows 容器技術增加容器間的隔離性
• 多個容器執行個體可以在一部主機上同時執行
• 透過虛擬機器來提供容器隔離
– 每個容器皆執行於一個名為 vmwp 的 Hyper-V 虛擬機中
– 每個 Hyper-V 容器 與 容器主機 之間提供核心層級隔離
docker run -it --isolation=hyperv microsoft/windowsservercore cmd
4
伺服器上的 Linux 容器技術
• Linux Containers on Windows (LCoW)
– 基於 Hyper-V Isolation 隔離容器技術
– 採用 Docker 公司推出的 Moby project
– 目前還有些 Linux 應用程式無法順利執行!
5
全新的 Windows 容器基本映像
• 更小的容器映像 (container images)
• nanoserver
– 磁碟大小:1GB  231MB
– 下載大小:500MB  98MB
• windowsservercore
– 磁碟大小:9.7GB  4.88GB
– 下載大小:7GB  1.58 GB
• 詳細文件
– https://aka.ms/containers
6
Windows Server 2019 的 WSL
• 好文推薦
– Windows Subsystem for Linux on Windows Server
– Enable the Windows Subsystem for Linux (WSL)
• 啟用選用功能
– Enable-WindowsOptionalFeature -Online -FeatureName
Microsoft-Windows-Subsystem-Linux
• 手動下載 WSL 套件
– Manually download WSL distro packages
• 第一次初始化要先設定帳號密碼
– Initialize a new WSL Linux distro
– sudo apt update && sudo apt upgrade
7
Linux containers on Windows (LCoW)
• 一台伺服器可同時執行 LCoW 與 WCoW
docker run -d -p 80:80 willh/ws2019-iis
docker run -d --isolation=hyperv -p 8080:8080 tomcat
docker run -d --isolation=hyperv -p 8081:80 nginx
8
搶先體驗全新功能
• Windows Server 2016 頻繁的更新
– Semi-Annual Channel (半年發行頻道)
– 將累積更新到 Windows Server 2019 作業系統!
• Windows 10 Insider Build Download
– 請一律安裝英文版
9
相關連結
• Windows 容器文件 (最豐富最完整的文件庫)
– Enable Nested Virtualization when applicable
• Windows 測試人員計畫 (Windows Insider Program)
• Windows 10 Insider Build Download (請一律安裝英文版)
• Docker Hub for Insider container images
– https://hub.docker.com/r/microsoft/windowsservercore-insider
– https://hub.docker.com/r/microsoft/nanoserver-insider
• Windows Server 2019 Insider Preview Build Releases
• Windows Server Blog | Your Guide to the Latest Windows Server Product Information
• Virtualization Blog | Information and announcements from Program Managers, Product
Managers, Developers and Testers in the Microsoft Virtualization team.
• Everything you need to know about Windows Server 2019 – Part 1
• Everything you need to know about Windows Server 2019 – Part 2
• Everything you need to know about Windows Server 2019 – Part 3
• Introducing Windows Server 2019 – now available in preview
Windows Server & Kubernetes
Windows Server 與 Kubernetes
Kubetnetes 在做的事
資源調度 Affinity/anti-affinity
正相關/反相關
Health
monitoring
健康監視
Failover
容錯轉移
Scaling
規模擴大
Networking
網路通訊
Service
discovery
服務探索
Coordinated
app upgrades
協作與更新
Kubernetes: 業界標準的調度器
可攜性
Public, private, hybrid,
multi-cloud
延展性
Modular, pluggable,
hookable, composable
自我修復
Auto-placement, auto-restart,
auto-replication, auto-scaling
Kubernetes: 賦予你做的更多
快速且可預期的
應用程式部署
及時延展你的
應用程式
推出新功能
無縫接軌
有限的硬體僅使用
在需要的資源上
混合 Windows 與 Linux 叢集
Controller-Manager
Scheduler
ApiServer
Kubelet
Kube-proxy
CRI/CNI/Storage Plugins
15
Windows 與 Kubernetes 整合之路
• Windows Special Interest Group (#SIG-Windows)
• 一個從 April 2016 組成的專家團隊
– 成員:Apprenda, Google, RedHat, Microsoft
– 主席:Michael Michael @ Apprenda
– 第一版 Alpha released 只在組成的幾個月後
• 社群參與者成長快速
– CloudBase
– TicketMaster
– Docker
– Huawei
16
Windows Server 2016
• 2016/10
• First release with containers
17
Kubernetes 1.5
• 2016/12
• Initial alpha
• Kubelet, kube-proxy on Windows
• Networking limitations
– 1 container per pod
• Worked with .NET Framework, Server Core &
Nano
• Showed potential, helped rally community
effort
18
Kubernetes 1.8
• 2017/09
• Config maps
• Secrets
• Volumes
• Documentation
19
Kubernetes 1.9
• 2017/12
• Beta release
• CRI – pod & node level stats
• Kubeadm support
• CNI plugin for OVS/OVN
• With Windows Server version 1709
– Multiple containers per pod
– Kube-proxy with kernel mode
– Improved performance
– WinCNI plugin
20
Kubernetes 1.10
• 2018/03
• Pods with Hyper-V isolation
• ImageFS stats
• CPU+Mem resource governance
• Native Windows service
• With Windows Server version 1803
– Persistent Volumes, secrets & configmap
– Flexvolume: iSCSI, SMB
21
Kubernetes 1.11
• 2018/06
• Metrics: Pod, Container, Log filesystem
• Security contexts: run_as_user
• Local persistent volumes
22
進行中的開發項目
• Quality & Conformance
– Conformance & Node E2E Testing
• CloudBase+Microsoft effort
• Updating tests
• Finding & fixing bugs
• Ecosystem Readiness
– Switch to ContainerD for latest Windows platform support
– Storage & network plugins
• Setup & Documentation
• Feature completion
– Kubernetes
• Autoscaling
– Windows
• Active Directory Group Managed Service Accounts
• Hyper-V isolation - multiple containers per pod
23
參加 Insider Preview 的由衷建議
• 不要用 Azure 測試 WS2019 + Kubernetes
– 利用 ACE-Engine 體驗預覽版
– Azure Container Service (ACS)
– https://github.com/azure/acs-engine
• 選擇正確的容器 Image ( Link )
– Windows Server Containers 與 OS 共用 Kernel
– 只要 Image Base 與 OS Kernel 不一致就不能跑
• 例外: --isolation=hyperv
– 注意 Build Number (new release of Windows)
– 注意 Revision Number (patching)
24
相關連結
• Extending Kubernetes to Windows Server with Docker EE
• Kubernetes Flannel.docx (重要)
• What's New in Windows Server 2019 Insider Preview Builds
• Matching Container Host Version with Container Image Versions
• 虛擬化技術在 GitHub 上面的 Docs & Samples:
• .NET Architecture Guidance
25
聯絡資訊
• The Will Will Web
記載著 Will 在網路世界的學習心得與技術分享
– http://blog.miniasp.com/
• Will 保哥的技術交流中心 (臉書粉絲專頁)
– http://www.facebook.com/will.fans
• Will 保哥的噗浪
– http://www.plurk.com/willh/invite
• Will 保哥的推特
– https://twitter.com/Will_Huang

More Related Content

What's hot

Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...Edureka!
 
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introductionACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introductionProject ACRN
 
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkRed Hat Developers
 
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)Devananda Van Der Veen
 
Tìm hiểu và triển khai ứng dụng Web với Kubernetes
Tìm hiểu và triển khai ứng dụng Web với KubernetesTìm hiểu và triển khai ứng dụng Web với Kubernetes
Tìm hiểu và triển khai ứng dụng Web với KubernetesGMO-Z.com Vietnam Lab Center
 
Kubernetes
KubernetesKubernetes
Kuberneteserialc_w
 
Finding Your Way in Container Security
Finding Your Way in Container SecurityFinding Your Way in Container Security
Finding Your Way in Container SecurityKsenia Peguero
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetesKiwi Backup
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and ToolsBrendan Gregg
 
Oracle Cloud deployment with Terraform
Oracle Cloud deployment with TerraformOracle Cloud deployment with Terraform
Oracle Cloud deployment with TerraformStefan Oehrli
 
Building your own embedded system with Yocto
Building your own embedded system with YoctoBuilding your own embedded system with Yocto
Building your own embedded system with Yoctommeisenzahl
 
Docker for .NET Developers
Docker for .NET DevelopersDocker for .NET Developers
Docker for .NET DevelopersTaswar Bhatti
 
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)Brian Brazil
 

What's hot (20)

Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
 
Linux Containers (LXC)
Linux Containers (LXC)Linux Containers (LXC)
Linux Containers (LXC)
 
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introductionACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
 
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
 
Jenkins
JenkinsJenkins
Jenkins
 
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Tìm hiểu và triển khai ứng dụng Web với Kubernetes
Tìm hiểu và triển khai ứng dụng Web với KubernetesTìm hiểu và triển khai ứng dụng Web với Kubernetes
Tìm hiểu và triển khai ứng dụng Web với Kubernetes
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Finding Your Way in Container Security
Finding Your Way in Container SecurityFinding Your Way in Container Security
Finding Your Way in Container Security
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
 
Docker
DockerDocker
Docker
 
Basic Jenkins Guide.pptx
Basic Jenkins Guide.pptxBasic Jenkins Guide.pptx
Basic Jenkins Guide.pptx
 
Oracle Cloud deployment with Terraform
Oracle Cloud deployment with TerraformOracle Cloud deployment with Terraform
Oracle Cloud deployment with Terraform
 
Container Security
Container SecurityContainer Security
Container Security
 
Building your own embedded system with Yocto
Building your own embedded system with YoctoBuilding your own embedded system with Yocto
Building your own embedded system with Yocto
 
Docker for .NET Developers
Docker for .NET DevelopersDocker for .NET Developers
Docker for .NET Developers
 
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)
 

Similar to 全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)

Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Jeff Chu
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛Edward Kuo
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWill Huang
 
Comboware ComboStack 202105
Comboware ComboStack 202105Comboware ComboStack 202105
Comboware ComboStack 202105Elroy Peng
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanAzure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanWill Huang
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索Will Huang
 
以业务为中心的云自动化 V mware-v-realize-automation-7
以业务为中心的云自动化 V mware-v-realize-automation-7以业务为中心的云自动化 V mware-v-realize-automation-7
以业务为中心的云自动化 V mware-v-realize-automation-7Frank Chang
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践drewz lin
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction家弘 周
 
深入浅出 V cloud director
深入浅出 V cloud director深入浅出 V cloud director
深入浅出 V cloud directorITband
 
使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务Wensong Zhang
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务drewz lin
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetesJiang Shang
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩Wen-Tien Chang
 

Similar to 全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會) (20)

Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
 
Ovirt deep dive
Ovirt deep diveOvirt deep dive
Ovirt deep dive
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, Kubernetes
 
1~60
1~601~60
1~60
 
Comboware ComboStack 202105
Comboware ComboStack 202105Comboware ComboStack 202105
Comboware ComboStack 202105
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanAzure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
以业务为中心的云自动化 V mware-v-realize-automation-7
以业务为中心的云自动化 V mware-v-realize-automation-7以业务为中心的云自动化 V mware-v-realize-automation-7
以业务为中心的云自动化 V mware-v-realize-automation-7
 
Meteor
MeteorMeteor
Meteor
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
 
深入浅出 V cloud director
深入浅出 V cloud director深入浅出 V cloud director
深入浅出 V cloud director
 
LVS
LVSLVS
LVS
 
使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetes
 
Hyper V Final
Hyper  V FinalHyper  V Final
Hyper V Final
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 

More from Will Huang

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)Will Huang
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境Will Huang
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索Will Huang
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!Will Huang
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧Will Huang
 
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)Will Huang
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)Will Huang
 
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Will Huang
 
從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點Will Huang
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門Will Huang
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)Will Huang
 
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)Will Huang
 
Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Will Huang
 
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)Will Huang
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Will Huang
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Will Huang
 
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)Will Huang
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)Will Huang
 
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)Will Huang
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)Will Huang
 

More from Will Huang (20)

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧
 
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
 
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)
 
從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
 
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
 
Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)
 
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)
 
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)
 
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
 

全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)

  • 1. 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/
  • 3. 3 兩種容器執行模式 • Windows Server 容器技術 – 多個容器執行個體可以在一部主機上同時執行 – 透過命名空間、資源控制和程序隔離技術來提供容器隔離 • 在容器中執行的程式,在 Host 主機看的見! • 容器執行個體會與 容器主機 共用相同的作業系統核心 • Hyper-V 容器技術 – 為 Windows 容器技術增加容器間的隔離性 • 多個容器執行個體可以在一部主機上同時執行 • 透過虛擬機器來提供容器隔離 – 每個容器皆執行於一個名為 vmwp 的 Hyper-V 虛擬機中 – 每個 Hyper-V 容器 與 容器主機 之間提供核心層級隔離 docker run -it --isolation=hyperv microsoft/windowsservercore cmd
  • 4. 4 伺服器上的 Linux 容器技術 • Linux Containers on Windows (LCoW) – 基於 Hyper-V Isolation 隔離容器技術 – 採用 Docker 公司推出的 Moby project – 目前還有些 Linux 應用程式無法順利執行!
  • 5. 5 全新的 Windows 容器基本映像 • 更小的容器映像 (container images) • nanoserver – 磁碟大小:1GB  231MB – 下載大小:500MB  98MB • windowsservercore – 磁碟大小:9.7GB  4.88GB – 下載大小:7GB  1.58 GB • 詳細文件 – https://aka.ms/containers
  • 6. 6 Windows Server 2019 的 WSL • 好文推薦 – Windows Subsystem for Linux on Windows Server – Enable the Windows Subsystem for Linux (WSL) • 啟用選用功能 – Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux • 手動下載 WSL 套件 – Manually download WSL distro packages • 第一次初始化要先設定帳號密碼 – Initialize a new WSL Linux distro – sudo apt update && sudo apt upgrade
  • 7. 7 Linux containers on Windows (LCoW) • 一台伺服器可同時執行 LCoW 與 WCoW docker run -d -p 80:80 willh/ws2019-iis docker run -d --isolation=hyperv -p 8080:8080 tomcat docker run -d --isolation=hyperv -p 8081:80 nginx
  • 8. 8 搶先體驗全新功能 • Windows Server 2016 頻繁的更新 – Semi-Annual Channel (半年發行頻道) – 將累積更新到 Windows Server 2019 作業系統! • Windows 10 Insider Build Download – 請一律安裝英文版
  • 9. 9 相關連結 • Windows 容器文件 (最豐富最完整的文件庫) – Enable Nested Virtualization when applicable • Windows 測試人員計畫 (Windows Insider Program) • Windows 10 Insider Build Download (請一律安裝英文版) • Docker Hub for Insider container images – https://hub.docker.com/r/microsoft/windowsservercore-insider – https://hub.docker.com/r/microsoft/nanoserver-insider • Windows Server 2019 Insider Preview Build Releases • Windows Server Blog | Your Guide to the Latest Windows Server Product Information • Virtualization Blog | Information and announcements from Program Managers, Product Managers, Developers and Testers in the Microsoft Virtualization team. • Everything you need to know about Windows Server 2019 – Part 1 • Everything you need to know about Windows Server 2019 – Part 2 • Everything you need to know about Windows Server 2019 – Part 3 • Introducing Windows Server 2019 – now available in preview
  • 10. Windows Server & Kubernetes Windows Server 與 Kubernetes
  • 12. Kubernetes: 業界標準的調度器 可攜性 Public, private, hybrid, multi-cloud 延展性 Modular, pluggable, hookable, composable 自我修復 Auto-placement, auto-restart, auto-replication, auto-scaling
  • 14. 混合 Windows 與 Linux 叢集 Controller-Manager Scheduler ApiServer Kubelet Kube-proxy CRI/CNI/Storage Plugins
  • 15. 15 Windows 與 Kubernetes 整合之路 • Windows Special Interest Group (#SIG-Windows) • 一個從 April 2016 組成的專家團隊 – 成員:Apprenda, Google, RedHat, Microsoft – 主席:Michael Michael @ Apprenda – 第一版 Alpha released 只在組成的幾個月後 • 社群參與者成長快速 – CloudBase – TicketMaster – Docker – Huawei
  • 16. 16 Windows Server 2016 • 2016/10 • First release with containers
  • 17. 17 Kubernetes 1.5 • 2016/12 • Initial alpha • Kubelet, kube-proxy on Windows • Networking limitations – 1 container per pod • Worked with .NET Framework, Server Core & Nano • Showed potential, helped rally community effort
  • 18. 18 Kubernetes 1.8 • 2017/09 • Config maps • Secrets • Volumes • Documentation
  • 19. 19 Kubernetes 1.9 • 2017/12 • Beta release • CRI – pod & node level stats • Kubeadm support • CNI plugin for OVS/OVN • With Windows Server version 1709 – Multiple containers per pod – Kube-proxy with kernel mode – Improved performance – WinCNI plugin
  • 20. 20 Kubernetes 1.10 • 2018/03 • Pods with Hyper-V isolation • ImageFS stats • CPU+Mem resource governance • Native Windows service • With Windows Server version 1803 – Persistent Volumes, secrets & configmap – Flexvolume: iSCSI, SMB
  • 21. 21 Kubernetes 1.11 • 2018/06 • Metrics: Pod, Container, Log filesystem • Security contexts: run_as_user • Local persistent volumes
  • 22. 22 進行中的開發項目 • Quality & Conformance – Conformance & Node E2E Testing • CloudBase+Microsoft effort • Updating tests • Finding & fixing bugs • Ecosystem Readiness – Switch to ContainerD for latest Windows platform support – Storage & network plugins • Setup & Documentation • Feature completion – Kubernetes • Autoscaling – Windows • Active Directory Group Managed Service Accounts • Hyper-V isolation - multiple containers per pod
  • 23. 23 參加 Insider Preview 的由衷建議 • 不要用 Azure 測試 WS2019 + Kubernetes – 利用 ACE-Engine 體驗預覽版 – Azure Container Service (ACS) – https://github.com/azure/acs-engine • 選擇正確的容器 Image ( Link ) – Windows Server Containers 與 OS 共用 Kernel – 只要 Image Base 與 OS Kernel 不一致就不能跑 • 例外: --isolation=hyperv – 注意 Build Number (new release of Windows) – 注意 Revision Number (patching)
  • 24. 24 相關連結 • Extending Kubernetes to Windows Server with Docker EE • Kubernetes Flannel.docx (重要) • What's New in Windows Server 2019 Insider Preview Builds • Matching Container Host Version with Container Image Versions • 虛擬化技術在 GitHub 上面的 Docs & Samples: • .NET Architecture Guidance
  • 25. 25 聯絡資訊 • The Will Will Web 記載著 Will 在網路世界的學習心得與技術分享 – http://blog.miniasp.com/ • Will 保哥的技術交流中心 (臉書粉絲專頁) – http://www.facebook.com/will.fans • Will 保哥的噗浪 – http://www.plurk.com/willh/invite • Will 保哥的推特 – https://twitter.com/Will_Huang

Editor's Notes

  1. 展示 Windows Server 2019 同時執行 LCOW 與 WCOW ```cmd cd c:\build set LCOW_SUPPORTED=1 .\dockerd.exe -D --data-root C:\lcow --experimental ``` ```bash docker run -d -p 81:80 willh/ws2019-iis ``` ```bash docker run -d --isolation=hyperv -p 8080:8080 tomcat ``` ```bash docker run -d --isolation=hyperv -p 8081:80 nginx ``
  2. https://msdn.microsoft.com/zh-tw/virtualization/windowscontainers/quick_start/manage_powershell#windows-server-容器 Windows Container、Hyper-V Container 可以互轉 New-Container -Name HyperV -ContainerImageName NanoServer -SwitchName "Virtual Switch“ Set-Container HyperV -RuntimeType HyperV Set-Container HyperV –RuntimeType Default
  3. Exciting new things for Docker with Windows Server 1709 - Docker Blog https://blog.docker.com/2017/09/docker-windows-server-1709/ Preview: Linux Containers on Windows - Docker Blog https://blog.docker.com/2017/09/preview-linux-containers-on-windows/ Install Docker Enterprise Edition for Windows Server | Docker Documentation https://docs.docker.com/install/windows/docker-ee/ Preview Docker for Windows Server 1709 and Windows 10 Fall Creators Update https://docs.docker.com/install/windows/ee-preview/