SlideShare a Scribd company logo
1 of 29
Windows Container 101:
.NET, Container, Kubernetes
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
部落格:http://blog.miniasp.com/
WINDOWS CONTAINERS 簡介
Introduction to Windows Containers
為什麼 容器技術 最近這麼夯?
採用 容器技術 的主要優點
• 一致的部署環境、資源隔離、資源利用率高
• 靈活的應用程式建置與部署 ( 更好 CI/CD)
• 鬆散耦合、分散式、彈性、更易實現微服務
• 清楚的分開 Dev 與 Ops 的分工角色
• 可運行在雲端或地端作業系統
• 以應用程式為中心思考
KUBERNETES 簡介
Introduction to Kubernetes
關於 Kubernetes 的兩三事
• 起初由 Google 發起的開園專案
• 擁有 Borg 與 Omega 的 DNA
• 於 2014 年捐贈給 CNCF 組職
• 2015 七月釋出 v1.0 版
• 以 Go 語言寫成
• 簡稱 k8s ( kubernetes )
• 採開放原始碼 Apache 2.0 授權
Kubernetes 到底有多夯?
Kubernetes 到底有多夯?
Kubernetes 的主要用途
• K8s 是一個 微服務應用程式 的 協調器
( An Orchestrator for Microservice Apps )
• K8s 可全自動化的管理與調配容器要在叢集
內的哪些實體機或虛擬機執行,無論是地端
或雲端。
• 親自送貨 v.s. 快遞服務
Kubernetes 的主要元件:Master
• 目前的 Kubernetes 只有一個 Master (未來會有 HA 版本)
• API 伺服器 ( kube-apiserver ) ( Port: 443 )
– 可視為 Kubernetes 整個叢集的大腦,負責 Master 對外的唯一窗口
– 完全透過 HTTPS / RESTful API / JSON 與各節點 (Nodes) 進行溝通
• 叢集儲存區 ( Cluster store ) ( etcd )
– 負責儲存所有叢集資訊的服務,現在使用 etcd 為主
– 整個 k8s 叢集只有叢集儲存區是有狀態的服務,其他都是無狀態的
• 控制管理器 ( kube-controller-manager )
– 負責管理所有控制器 ( Node, Replication, Endpoints, Namespace, … )
• 工作排程器 ( kube-scheduler )
– 負責監視 api-server 是否接收到新的 Pods 要求
– 負責配發 Pods 給適合的 Nodes 執行
Kubernetes 的主要元件:Nodes
• Nodes 又稱 Minions (小小兵) ( The Kubernetes Workers )
• kubelet ( Port: 10255 )
– 主要的 Kubernetes 代理程式 (Agent) 只聽命於 Master 控制
– 負責將指派要執行的 Pods 實體化 ( 每個 Pod 可能會包含多個容器 )
• kube-proxy
– 主要負責叢集內所有服務抽象化,自動化所有網路連接問題 (networking)
– 每個 Pod 只會有一個 IP 地址 (所有 Pod 下的容器會共享一個 IP 地址)
– 若有定義 Service 物件,則會讓多個 Pods 共用一個對外 IP (負載平衡)
• 容器執行環境 ( Container Runtime )
– 負責 pull, run, start, stop, …
– 可選 Docker 或 rkt (CentOS)
• supervisord
– 負責監控正在執行的的 kubelet 與 docker 的執行狀況 (確保程序永遠執行)
11
認識 Kubernetes 物件
• A Kubernetes object is a "record of
intent" – once you create the object, the
Kubernetes system will constantly work to
ensure that object exists.
當你在叢集中建立好 K8s 物件,叢集系統會
盡一切可能保證該物件一直存在!
認識 Desired State (期望狀態)
• 我們透過建立 Kubernetes 物件來告知叢集該如何
運行,藉此建立一種期望狀態 (Desired State)
• 例如我們有個服務希望至少執行三個 Pods
– 這時 K8s 就會盡力幫我們在叢集中達成這個期望狀態
– 但是狀態經常會改變,例如人為變更或有 Nodes 掛掉
– 此時 Kubernetes 就會依據先前的宣告盡力回復期望狀態
如何建立 Kubernetes 物件
• 透過 Kubernetes API
– 透過 REST API 呼叫時要透過 JSON 格式傳入
– 官方支援 Go 與 Python 用戶端函式庫實作
– 社群支援
• https://kubernetes.io/docs/reference/client-libraries/
• https://github.com/kubernetes-client
• 透過 CLI 工具:kubectl
– 可以透過 kubectl 建立大部分物件
– 可以透過 kubectl 載入 JSON 或 YAML 檔案來建立
認識 Declarative Model (宣告模型)
Pods
• 在虛擬機器的世界,最小單位是 VM
• 在容器技術的世界,最小單位是 Container
• 在 Kubernetes 的世界,最小單位是 Pod
– 在 k8s 叢集中,雖然跑的也是 Containers
– 但是所有 Contaienrs 一定會跑在 Pods 底下
– 正常的情況下一個 Pod 會跑一個 Container
– 進階應用的情況下,一個 Pod 也可以跑多個 Containers
– Pod 有 5 種狀態
• Pending、Running、Failed、Succeeded、Unknown
關於 Pod 的生命週期
Pending Running Succeeded
Failed Unknown
Deployments
• Deployments 建立並維護 Pods 與 Replicas Set ( 簡稱 rs )
的期望狀態 (Desired State),並將叢集的 目前狀態 (Actual
State) 轉換為 期望狀態 (Desired State)!
• Pods 決定 Container 要使用哪個 Container Image
• Replicas Set 則是決定 Pods 的複本數量
關於 Deployments 的兩大特色
• 輪巡更新 (Rolling updates)
– 在套用新版時會先建立一個新 Pod,然後才會砍掉一個舊 Pod,然
後再建立一個新 Pod,然後在建立一個舊 Pod,依此類推…來完成升
級。
– kubectl apply -f status deployment/webapp1 --record
– kubectl rollout status deployment/webapp1
• 復原更新 (Rollbacks)
– kubectl rollout history deployment/webapp1
– kubectl rollout undo deployment/webapp1
Services
• Pod 是 k8s 的最小單位
– 每個 Pod 會有一個內部 IP 地址
– 每次建立好的 Pod 的 IP 地址都會不一樣
– 管理 Pod 的 IP 地址將會非常複雜
– 這時就是 Service 登場的時候!
• Service 負責管理多個 Pods 對外的網路介面
– 內建負載平衡器,可自動管理 Pods 對外的連線
– 每個 Service 都會有一個固定的 IP 地址與網域名稱
Proxy-mode: userspace
使用 K8S 管理 WINDOWS 容器
Kubernetes: Managing Windows Container
Windows in Kubernetes 架構總覽
關於 Kubernetes 對 Windows 的支援
• Kubernetes 1.5 增加了對 Windows 容器的支援
– 目前僅 kubelet 和 kube-proxy 可部署在 Windows
– 目前僅支援 Windows Server 2016 作業系統
– 其他控制功能元件還是需要部署在 Linux 上面
• API Server, Scheduler, Controller Manager, …
• 架設起叢集的必要條件
– 先將 Kubernetes 叢集部署到 Linux
– 在 Linux 上設定好 Kubernetes 網絡外掛
– 準備 Windows Server 2016 作業系統
– 在 Windows Server 安裝必要的 Docker 容器環境
Windows in Kubernetes 已知限制
• 在 Windows 沒有網路命名空間 ( network namespace ),
因此目前僅支援一個 Pod 一個 Container 執行!
• 目前尚不支援 Secrets 物件
( 因為 Windows 的 Bug: https://github.com/moby/moby/issues/28401 )
• 目前尚未實作 ConfigMaps 功能
• 由於 kube-proxy 透過 netsh portproxy 實作,所以僅支
援 TCP 協定,因此 DNS 原則上不支援,目前只有當用戶
端嘗試用 TCP 重新查詢 DNS 時才會生效。
https://kubernetes.io/docs/getting-started-guides/windows/
實例展示
Live Demo
相關連結
• 官網:http://kubernetes.io
• 專案:https://github.com/kubernetes/kubernetes
• 推特:https://twitter.com/kubernetesio
• Slack:http://slack.k8s.io
• Windows Server Support Comes to Kubernetes
• Windows SIG ( kubernetes/community )
• "Hands on With Kubernetes" workshops
• Windows Server Containers | Kubernetes
• Introduction to YAML: Creating a Kubernetes deployment
• Deploy Kubernetes cluster for Windows containers
聯絡資訊
• 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
Windows Container 101: dotNET, Container, Kubernetes

More Related Content

What's hot

RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門Will Huang
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽Will Huang
 
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Jeff Chu
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架Will Huang
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索Will Huang
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践YuLing Liu
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Will Huang
 
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
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例Will Huang
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)Will Huang
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具國昭 張
 
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Gelis Wu
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰Paul Chao
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updatedPaul Chao
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Gelis Wu
 
基于Fuel的超融合一体机
基于Fuel的超融合一体机基于Fuel的超融合一体机
基于Fuel的超融合一体机EdwardBadBoy
 
20220224台中演講k8s
20220224台中演講k8s20220224台中演講k8s
20220224台中演講k8schabateryuhlin
 

What's hot (20)

RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
 
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
 
宅學習 Firebase
宅學習 Firebase宅學習 Firebase
宅學習 Firebase
 
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
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰
 
Docker應用
Docker應用Docker應用
Docker應用
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
 
Docker Build
Docker BuildDocker Build
Docker Build
 
基于Fuel的超融合一体机
基于Fuel的超融合一体机基于Fuel的超融合一体机
基于Fuel的超融合一体机
 
20220224台中演講k8s
20220224台中演講k8s20220224台中演講k8s
20220224台中演講k8s
 

Viewers also liked

API Token 入門
API Token 入門API Token 入門
API Token 入門Andrew Wu
 
初學者都該了解的 HTTP 通訊協定基礎
初學者都該了解的 HTTP 通訊協定基礎初學者都該了解的 HTTP 通訊協定基礎
初學者都該了解的 HTTP 通訊協定基礎Will Huang
 
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具Will Huang
 
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)Will Huang
 
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)Will Huang
 
簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )Will Huang
 
Growth Mindset 經驗分享
Growth Mindset 經驗分享Growth Mindset 經驗分享
Growth Mindset 經驗分享Will Huang
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革Will Huang
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)Will Huang
 
簡介 GitHub 平台
簡介 GitHub 平台簡介 GitHub 平台
簡介 GitHub 平台Will Huang
 
Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Will Huang
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用Will Huang
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Will Huang
 
中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技Will Huang
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略Will Huang
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式Will Huang
 
TypeScript 綜合格鬥技
TypeScript 綜合格鬥技TypeScript 綜合格鬥技
TypeScript 綜合格鬥技Will Huang
 
從開發人員角度十分鐘理解區塊鏈技術
從開發人員角度十分鐘理解區塊鏈技術從開發人員角度十分鐘理解區塊鏈技術
從開發人員角度十分鐘理解區塊鏈技術Will Huang
 

Viewers also liked (18)

API Token 入門
API Token 入門API Token 入門
API Token 入門
 
初學者都該了解的 HTTP 通訊協定基礎
初學者都該了解的 HTTP 通訊協定基礎初學者都該了解的 HTTP 通訊協定基礎
初學者都該了解的 HTTP 通訊協定基礎
 
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
 
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
 
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
 
簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )
 
Growth Mindset 經驗分享
Growth Mindset 經驗分享Growth Mindset 經驗分享
Growth Mindset 經驗分享
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
 
簡介 GitHub 平台
簡介 GitHub 平台簡介 GitHub 平台
簡介 GitHub 平台
 
Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
 
中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
 
TypeScript 綜合格鬥技
TypeScript 綜合格鬥技TypeScript 綜合格鬥技
TypeScript 綜合格鬥技
 
從開發人員角度十分鐘理解區塊鏈技術
從開發人員角度十分鐘理解區塊鏈技術從開發人員角度十分鐘理解區塊鏈技術
從開發人員角度十分鐘理解區塊鏈技術
 

Similar to Windows Container 101: dotNET, Container, Kubernetes

Oh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes BasicsOh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes BasicsOkis Chuang
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction家弘 周
 
OpenStack and Docke Integration V6
OpenStack and Docke Integration V6OpenStack and Docke Integration V6
OpenStack and Docke Integration V6Guangya Liu
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetesJiang Shang
 
[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
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updatedPaul Chao
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養Philip Zheng
 
Kube-OVN Introduction
Kube-OVN IntroductionKube-OVN Introduction
Kube-OVN Introduction梦馨 刘
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术团队
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveOpenCity Community
 
kubernetes入门培训
kubernetes入门培训kubernetes入门培训
kubernetes入门培训bobo45284
 
使用軟體容器快速建立物聯網服務 20171122
使用軟體容器快速建立物聯網服務 20171122使用軟體容器快速建立物聯網服務 20171122
使用軟體容器快速建立物聯網服務 20171122Anderson Cheng
 
Docker open stack
Docker open stackDocker open stack
Docker open stackGuangya Liu
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contributeinwin stack
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open CampAndrew Wu
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索Will Huang
 
Docker集群管理 工具篇
Docker集群管理 工具篇Docker集群管理 工具篇
Docker集群管理 工具篇Guangya Liu
 
Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Ch Rick
 

Similar to Windows Container 101: dotNET, Container, Kubernetes (20)

Oh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes BasicsOh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes Basics
 
Kubernetes (K8s) 簡介 | GDSC NYCU
Kubernetes (K8s) 簡介 | GDSC NYCUKubernetes (K8s) 簡介 | GDSC NYCU
Kubernetes (K8s) 簡介 | GDSC NYCU
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
 
OpenStack and Docke Integration V6
OpenStack and Docke Integration V6OpenStack and Docke Integration V6
OpenStack and Docke Integration V6
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetes
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養
 
Kube-OVN Introduction
Kube-OVN IntroductionKube-OVN Introduction
Kube-OVN Introduction
 
QIoT ,QuAI
QIoT ,QuAI  QIoT ,QuAI
QIoT ,QuAI
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
kubernetes入门培训
kubernetes入门培训kubernetes入门培训
kubernetes入门培训
 
使用軟體容器快速建立物聯網服務 20171122
使用軟體容器快速建立物聯網服務 20171122使用軟體容器快速建立物聯網服務 20171122
使用軟體容器快速建立物聯網服務 20171122
 
Docker open stack
Docker open stackDocker open stack
Docker open stack
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contribute
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
Docker集群管理 工具篇
Docker集群管理 工具篇Docker集群管理 工具篇
Docker集群管理 工具篇
 
Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)
 

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
 
進擊的前端工程師:今天就用 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
 
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
 
极速 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 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
 
使用 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
 
以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談Will Huang
 
迎接嶄新的Windows容器叢集架構:Kubernetes
迎接嶄新的Windows容器叢集架構:Kubernetes迎接嶄新的Windows容器叢集架構:Kubernetes
迎接嶄新的Windows容器叢集架構:KubernetesWill Huang
 
Angular 5 全新功能探索 @ JSDC2017
Angular 5 全新功能探索 @ JSDC2017Angular 5 全新功能探索 @ JSDC2017
Angular 5 全新功能探索 @ JSDC2017Will Huang
 
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Will Huang
 
Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Will Huang
 
申請 Let's Encrypt 免費 SSL 憑證一次就上手
申請 Let's Encrypt 免費 SSL 憑證一次就上手申請 Let's Encrypt 免費 SSL 憑證一次就上手
申請 Let's Encrypt 免費 SSL 憑證一次就上手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 開發環境
 
進擊的前端工程師:今天就用 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)
 
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 導入痛點
 
极速 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 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)
 
使用 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)
 
以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談
 
迎接嶄新的Windows容器叢集架構:Kubernetes
迎接嶄新的Windows容器叢集架構:Kubernetes迎接嶄新的Windows容器叢集架構:Kubernetes
迎接嶄新的Windows容器叢集架構:Kubernetes
 
Angular 5 全新功能探索 @ JSDC2017
Angular 5 全新功能探索 @ JSDC2017Angular 5 全新功能探索 @ JSDC2017
Angular 5 全新功能探索 @ JSDC2017
 
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
 
Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)
 
申請 Let's Encrypt 免費 SSL 憑證一次就上手
申請 Let's Encrypt 免費 SSL 憑證一次就上手申請 Let's Encrypt 免費 SSL 憑證一次就上手
申請 Let's Encrypt 免費 SSL 憑證一次就上手
 

Windows Container 101: dotNET, Container, Kubernetes

  • 1. Windows Container 101: .NET, Container, Kubernetes 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/
  • 4. 採用 容器技術 的主要優點 • 一致的部署環境、資源隔離、資源利用率高 • 靈活的應用程式建置與部署 ( 更好 CI/CD) • 鬆散耦合、分散式、彈性、更易實現微服務 • 清楚的分開 Dev 與 Ops 的分工角色 • 可運行在雲端或地端作業系統 • 以應用程式為中心思考
  • 6. 關於 Kubernetes 的兩三事 • 起初由 Google 發起的開園專案 • 擁有 Borg 與 Omega 的 DNA • 於 2014 年捐贈給 CNCF 組職 • 2015 七月釋出 v1.0 版 • 以 Go 語言寫成 • 簡稱 k8s ( kubernetes ) • 採開放原始碼 Apache 2.0 授權
  • 9. Kubernetes 的主要用途 • K8s 是一個 微服務應用程式 的 協調器 ( An Orchestrator for Microservice Apps ) • K8s 可全自動化的管理與調配容器要在叢集 內的哪些實體機或虛擬機執行,無論是地端 或雲端。 • 親自送貨 v.s. 快遞服務
  • 10. Kubernetes 的主要元件:Master • 目前的 Kubernetes 只有一個 Master (未來會有 HA 版本) • API 伺服器 ( kube-apiserver ) ( Port: 443 ) – 可視為 Kubernetes 整個叢集的大腦,負責 Master 對外的唯一窗口 – 完全透過 HTTPS / RESTful API / JSON 與各節點 (Nodes) 進行溝通 • 叢集儲存區 ( Cluster store ) ( etcd ) – 負責儲存所有叢集資訊的服務,現在使用 etcd 為主 – 整個 k8s 叢集只有叢集儲存區是有狀態的服務,其他都是無狀態的 • 控制管理器 ( kube-controller-manager ) – 負責管理所有控制器 ( Node, Replication, Endpoints, Namespace, … ) • 工作排程器 ( kube-scheduler ) – 負責監視 api-server 是否接收到新的 Pods 要求 – 負責配發 Pods 給適合的 Nodes 執行
  • 11. Kubernetes 的主要元件:Nodes • Nodes 又稱 Minions (小小兵) ( The Kubernetes Workers ) • kubelet ( Port: 10255 ) – 主要的 Kubernetes 代理程式 (Agent) 只聽命於 Master 控制 – 負責將指派要執行的 Pods 實體化 ( 每個 Pod 可能會包含多個容器 ) • kube-proxy – 主要負責叢集內所有服務抽象化,自動化所有網路連接問題 (networking) – 每個 Pod 只會有一個 IP 地址 (所有 Pod 下的容器會共享一個 IP 地址) – 若有定義 Service 物件,則會讓多個 Pods 共用一個對外 IP (負載平衡) • 容器執行環境 ( Container Runtime ) – 負責 pull, run, start, stop, … – 可選 Docker 或 rkt (CentOS) • supervisord – 負責監控正在執行的的 kubelet 與 docker 的執行狀況 (確保程序永遠執行) 11
  • 12. 認識 Kubernetes 物件 • A Kubernetes object is a "record of intent" – once you create the object, the Kubernetes system will constantly work to ensure that object exists. 當你在叢集中建立好 K8s 物件,叢集系統會 盡一切可能保證該物件一直存在!
  • 13. 認識 Desired State (期望狀態) • 我們透過建立 Kubernetes 物件來告知叢集該如何 運行,藉此建立一種期望狀態 (Desired State) • 例如我們有個服務希望至少執行三個 Pods – 這時 K8s 就會盡力幫我們在叢集中達成這個期望狀態 – 但是狀態經常會改變,例如人為變更或有 Nodes 掛掉 – 此時 Kubernetes 就會依據先前的宣告盡力回復期望狀態
  • 14. 如何建立 Kubernetes 物件 • 透過 Kubernetes API – 透過 REST API 呼叫時要透過 JSON 格式傳入 – 官方支援 Go 與 Python 用戶端函式庫實作 – 社群支援 • https://kubernetes.io/docs/reference/client-libraries/ • https://github.com/kubernetes-client • 透過 CLI 工具:kubectl – 可以透過 kubectl 建立大部分物件 – 可以透過 kubectl 載入 JSON 或 YAML 檔案來建立
  • 15. 認識 Declarative Model (宣告模型)
  • 16. Pods • 在虛擬機器的世界,最小單位是 VM • 在容器技術的世界,最小單位是 Container • 在 Kubernetes 的世界,最小單位是 Pod – 在 k8s 叢集中,雖然跑的也是 Containers – 但是所有 Contaienrs 一定會跑在 Pods 底下 – 正常的情況下一個 Pod 會跑一個 Container – 進階應用的情況下,一個 Pod 也可以跑多個 Containers – Pod 有 5 種狀態 • Pending、Running、Failed、Succeeded、Unknown
  • 17. 關於 Pod 的生命週期 Pending Running Succeeded Failed Unknown
  • 18. Deployments • Deployments 建立並維護 Pods 與 Replicas Set ( 簡稱 rs ) 的期望狀態 (Desired State),並將叢集的 目前狀態 (Actual State) 轉換為 期望狀態 (Desired State)! • Pods 決定 Container 要使用哪個 Container Image • Replicas Set 則是決定 Pods 的複本數量
  • 19. 關於 Deployments 的兩大特色 • 輪巡更新 (Rolling updates) – 在套用新版時會先建立一個新 Pod,然後才會砍掉一個舊 Pod,然 後再建立一個新 Pod,然後在建立一個舊 Pod,依此類推…來完成升 級。 – kubectl apply -f status deployment/webapp1 --record – kubectl rollout status deployment/webapp1 • 復原更新 (Rollbacks) – kubectl rollout history deployment/webapp1 – kubectl rollout undo deployment/webapp1
  • 20. Services • Pod 是 k8s 的最小單位 – 每個 Pod 會有一個內部 IP 地址 – 每次建立好的 Pod 的 IP 地址都會不一樣 – 管理 Pod 的 IP 地址將會非常複雜 – 這時就是 Service 登場的時候! • Service 負責管理多個 Pods 對外的網路介面 – 內建負載平衡器,可自動管理 Pods 對外的連線 – 每個 Service 都會有一個固定的 IP 地址與網域名稱
  • 22. 使用 K8S 管理 WINDOWS 容器 Kubernetes: Managing Windows Container
  • 23. Windows in Kubernetes 架構總覽
  • 24. 關於 Kubernetes 對 Windows 的支援 • Kubernetes 1.5 增加了對 Windows 容器的支援 – 目前僅 kubelet 和 kube-proxy 可部署在 Windows – 目前僅支援 Windows Server 2016 作業系統 – 其他控制功能元件還是需要部署在 Linux 上面 • API Server, Scheduler, Controller Manager, … • 架設起叢集的必要條件 – 先將 Kubernetes 叢集部署到 Linux – 在 Linux 上設定好 Kubernetes 網絡外掛 – 準備 Windows Server 2016 作業系統 – 在 Windows Server 安裝必要的 Docker 容器環境
  • 25. Windows in Kubernetes 已知限制 • 在 Windows 沒有網路命名空間 ( network namespace ), 因此目前僅支援一個 Pod 一個 Container 執行! • 目前尚不支援 Secrets 物件 ( 因為 Windows 的 Bug: https://github.com/moby/moby/issues/28401 ) • 目前尚未實作 ConfigMaps 功能 • 由於 kube-proxy 透過 netsh portproxy 實作,所以僅支 援 TCP 協定,因此 DNS 原則上不支援,目前只有當用戶 端嘗試用 TCP 重新查詢 DNS 時才會生效。 https://kubernetes.io/docs/getting-started-guides/windows/
  • 27. 相關連結 • 官網:http://kubernetes.io • 專案:https://github.com/kubernetes/kubernetes • 推特:https://twitter.com/kubernetesio • Slack:http://slack.k8s.io • Windows Server Support Comes to Kubernetes • Windows SIG ( kubernetes/community ) • "Hands on With Kubernetes" workshops • Windows Server Containers | Kubernetes • Introduction to YAML: Creating a Kubernetes deployment • Deploy Kubernetes cluster for Windows containers
  • 28. 聯絡資訊 • 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. https://trends.google.com/trends/explore?q=Kubernetes,Docker%20Swarm,DC%2FOS,Apache%20Mesos
  2. https://trends.google.com/trends/explore?q=Kubernetes,Docker%20Swarm,DC%2FOS,Apache%20Mesos
  3. addons Addons are pods and services that implement cluster features. The pods may be managed by Deployments, ReplicationControllers, and so on. Namespaced addon objects are created in the kube-system namespace. Addon manager creates and maintains addon resources. See here for more details.
  4. fluentd fluentd is a daemon which helps provide cluster-level logging. https://kubernetes.io/docs/concepts/overview/components/#cluster-level-logging
  5. 我們必須先準備好一個 Manifest 檔案,定義出我們期望的叢集與服務狀態 (Desired State) Manifest 檔案使用 YAML 或 JSON 來宣告
  6. Pod Lifecycle https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
  7. https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ RC + rolling updates Rollbacks https://tachingchen.com/tw/blog/Kubernetes-Rolling-Update-with-Deployment/ 所以Deployments和Replicas Set算是一起運作的~
  8. Services - Kubernetes https://kubernetes.io/docs/concepts/services-networking/service/ 目前 Windows 下的 kube-proxy 僅支援 userspace mode https://github.com/kubernetes/kubernetes/pull/36079
  9. Windows Server Containers - Kubernetes https://kubernetes.io/docs/getting-started-guides/windows/
  10. Kubernetes(k8s)1.5新特性:支持windows容器 https://www.kubernetes.org.cn/1050.html
  11. Introduction to YAML: Creating a Kubernetes deployment | Mirantis https://www.mirantis.com/blog/introduction-to-yaml-creating-a-kubernetes-deployment/