Slide 1

Slide 1 text

When Windows Meets Kubernetes… Cloud Native Taiwan User Group 2025/01 Phil Huang CNCF Ambassador / Senior Cloud Solution Architect, Microsoft 2025/01/16

Slide 2

Slide 2 text

Kubestronaut Program ● 台灣現行有 12 位 https://www.cncf.io/training/kubestronaut/?_sft_lf-country=tw

Slide 3

Slide 3 text

Container on Windows

Slide 4

Slide 4 text

魔物獵人 武器加工店派生表

Slide 5

Slide 5 text

請愛用 mcr.microsoft.com 的搜尋功能

Slide 6

Slide 6 text

Windows Family Container Images 派生表 Windows Base Images Windows windows:ltsc2019 Windows Server windows/server:ltsc2025 Server Core windows/servercore:ltsc2025 Nano Server windows/nanoserver:ltsc2025 .NET Framework 4.8 dotnet/framework/aspnet:4.8 .NET 9 dotnet/aspnet:9.0 Linux Base Images IIS windows/servercore/iis: windowsservercore-ltsc2022 Dev Container devcontainer/*

Slide 7

Slide 7 text

Windows 11 Enterprise MSSQL Family Container Images 派生表 Ubuntu Base Images MSSQL - Ubuntu Based mssql/server:2022-latest Red Hat Base Images MSSQL - Red Hat Based mssql/rhel/server:2022-latest ● MSSQL 沒有提供 Windows Based 的基礎映像檔, 因為可以直接裝在 Server 上就好... ● 如果真的要裝 MSSQL Container Images 的話, 則需要先裝 WSL 再拉上面的映像檔, 如下圖: Windows NT Kernel Windows Usermode RHEL Distro WSL 2 Kernel MSSQL RH Image

Slide 8

Slide 8 text

如何選擇 Windows Container Images ● 以上這四個 Images 都一定要運行在 Windows 作業系統上 ● 在跟其他人溝通的時候, 建議要講全名 , 不然很容易混淆到底在講哪一個映像檔 ● Windows 真的沒有提供 2022 的 Container, 2025 未知 ● 如果是 .Net Core 開發者, 建議都從 Nano Server 開始包起來

Slide 9

Slide 9 text

Pause Image ● 因為兩個效果一樣, 預設給啥就用啥 ● 如果真的有必要, 需要有數位簽章 (Authenticode) 的話, 微軟有給一個簽證版的 pause image

Slide 10

Slide 10 text

Debug Container (Windows Version) https://github.com/pichuang/debug-windows-container/blob/main/Dockerfile#L10 servercore 有包 cmd 安裝 chocolatey 亂裝東西 用 Sleep 卡他不要讓他結束 Process

Slide 11

Slide 11 text

Podman Desktop On Windows

Slide 12

Slide 12 text

2024/11 Podman Desktop 申請加入 CNCF Sandbox 專 案

Slide 13

Slide 13 text

Podman Desktop

Slide 14

Slide 14 text

Podman Setup (1/2) 2024/11 開始支援 Hyper-v

Slide 15

Slide 15 text

Podman Setup (2/2)

Slide 16

Slide 16 text

Podman Desktop: Images 可以在 WSL 內拉下 Windows Container Images, 但因為 WSL 為 Linux 環境, 則無法啟動 需要採取別的做法

Slide 17

Slide 17 text

Kubernetes With Windows

Slide 18

Slide 18 text

Kubernetes 1.32: Penelope “Windows strikes back!” <- 這官網文件 ● KEP 4802: Windows 節點終於支援 Graceful shutdown ● KEP 4885: Windows CPU 和 Memory Affinity 實踐 現有 13 個功能

Slide 19

Slide 19 text

Windows on Kubernetes 的 6 種長相 ● 第 1 / 2 / 3 / 4 都是正常用法 ● 第 2 / 3 / 4 限定底層一定要用 Windows OS ● 針對第 5 個方式, 這個是外部貢獻者自行打包, 使用風險需自負 ● 替代第 5 個方式的最佳做法為第 6 個, 請愛用 KubeVirt 專案

Slide 20

Slide 20 text

dockur/windows:xp https://github.com/dockur/windows

Slide 21

Slide 21 text

Debug Container YAML https://github.com/pichuang/debug-windows-container/blob/main/Dockerfile#L10 自行置換皆可 記得要設定 nodeSelector, kubernetes.io/os: windows

Slide 22

Slide 22 text

windows/servercore:ltsc2022 已安裝服務 https://hub.docker.com/r/microsoft/windows-servercore

Slide 23

Slide 23 text

dotnet/framework https://github.com/pichuang/debug-windows-container/blob/main/Dockerfile#L10

Slide 24

Slide 24 text

dotnet/framework 已安裝服務

Slide 25

Slide 25 text

開啟 Host Process 功能 https://github.com/pichuang/debug-windows-container/blob/main/Dockerfile#L10 hostNetwork: True hostProcess: True

Slide 26

Slide 26 text

使用 Host Process 後 (1/2)

Slide 27

Slide 27 text

使用 Host Process 後 (2/2)

Slide 28

Slide 28 text

Windows Server 2022 已安裝服務

Slide 29

Slide 29 text

Headlamp