Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Deploy Kubernetes Cluster using Kuberspray
Search
Kyle Bai
December 14, 2016
Technology
0
95
Deploy Kubernetes Cluster using Kuberspray
Kyle Bai
December 14, 2016
Tweet
Share
More Decks by Kyle Bai
See All by Kyle Bai
讓 Jenkins 老爺爺掌舵帶領開發者航向美好新世界
kairen
1
180
AWS Startup 2020 - AMIS
kairen
0
50
學習 Kubernetes 不是為了成為 YAML Engineer
kairen
0
260
How to make your container:Kubernetes is a bit more secure
kairen
0
150
Vishwakarma: Terraform modules for deploying EKS and Self-hosting Kubernetes(AWS))
kairen
0
76
Vishwakarma: Terraform modules for deploying EKS and Self-hosting Kubernetes
kairen
0
66
Chatbot as a Service on Container(Kubernetes)
kairen
0
840
IT IRONMAN 2020
kairen
0
58
Advanced Kubernetes For UMC
kairen
0
130
Other Decks in Technology
See All in Technology
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
4
6.8k
Log Analytics を使った実際の運用 - Sansan Data Hub での取り組み
sansantech
PRO
0
120
クラウド関連のインシデントケースを収集して見えてきたもの
lhazy
9
1.9k
事業モメンタムを生み出すプロダクト開発
macchiitaka
0
110
Oracle Database Technology Night #87-1 : Exadata Database Service on Exascale Infrastructure(ExaDB-XS)サービス詳細
oracle4engineer
PRO
1
220
マルチアカウント環境における組織ポリシーについて まとめてみる
nrinetcom
PRO
2
110
大規模アジャイルフレームワークから学ぶエンジニアマネジメントの本質
staka121
PRO
3
1.6k
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.6k
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
380
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
200
クラウド食堂とは?
hiyanger
0
130
困難を「一般解」で解く
fujiwara3
8
2.3k
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
6
260
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
380
Visualization
eitanlees
146
15k
Product Roadmaps are Hard
iamctodd
PRO
51
11k
Adopting Sorbet at Scale
ufuk
75
9.2k
Transcript
https://goo.gl/mngiLM
Deploy Kubernetes Cluster using Kargo Kubespray
Agenda • What is Kubernetes? • CNI/CRI/CSI • Kubespray introduction
• Quick Start • Baremetal • Provider Cloud(GCE)
What is Kubernetes? Kubernetes 是 Google 開源的容器(Container)分散式管理理系統,是建於OCI標準容 器 Runtim之上的叢集排程系統。Kubernetes 設計概念念是來來⾄至
Borg 系統,⽬目標是 管理理⼤大量量的容器叢集。
Kubernetes 架構 K8s 屬於分散式架構系統,主要元件有: • Master – ⼤大總管,可做為主節點 • Node(Minion)
– 主要⼯工作的節點,上⾯面運⾏行行了了 許多容器 • Masters和 Nodes組成叢集(Clusters)
Kubernetes 細節架構
Kubernetes Master Kubernetes Master 包含了了四個基本組件: • Etcd: 儲存 kubernetes 相關資訊。
• API Server:以 REST APIs 介⾯面⽅方式提供所有業 務邏輯CRUD操作,如認證、狀狀態變更更。 • Controller Manager :可說是叢集⼤大腦,透過 apiserver 監控整個叢集狀狀態,並確保叢集處於 預期⼯工作狀狀態。 • Scheduler:監聽 apiserver 來來查詢未分配 Node 的 Pod,根據策略略來來負責整個分散式系統的資 源排程功能。
Kubernetes Node(Minion) Kubernetes Node 包含了了三個基本組件: • kubelet:接收 Master 任務,並負責管理理的映 像檔、容器與資料
Volume等操作,然後定 期回報資源狀狀態。 • kube-proxy: 透過監控 apiserver 中 service 與 endpoint 的變化,來來利利⽤用 iptables 等位服 務設定負載平衡(Only L4 TCP/UDP)。 • container:基於 Container Runtime(Docker or rkt)來來執⾏行行應⽤用程式容器實例例。
Etcd - Distributed reliable key-value store Etcd 是基於 Raft 開發的分散式
K/V 儲 存系統,其有以下特點: • 基本 K/V 儲存 • ⽤用於監控與服務發現 • Key 過期與續約機制 • ⽤用於分散式鎖定管理理與 Leader 選 舉。 • 採⽤用 Raft ⼀一致性演算法(Like paxos) • 有叢集與容錯機制
為什什麼使⽤用 Kubernetes? Kubernetes ⽬目標是管理理跨區域多個主機的容器節點(CRI),提供基本的部署,維護以及運⽤用在 各項應⽤用,擁有以下好處 : • 基於容器的應⽤用程式部署、維運與滾動更更新。 • 負載平衡與服務發現。
• 易易遷移、擴展與升級服務。 • 跨機器與區域的叢集排程。 • ⽀支持公有雲,私有雲,混合雲,以及多種雲平台。 • ⽀支援 Federation 與跨作業系統平台。 • 插件機制與規範化。
Kubernetes community
CNI/CRI/CSI CNI, CRI, CSI 是經過規範化的網路路、運⾏行行與儲存介⾯面。
CNI: Container Network interface CNI 是由 CoreOS 發起的容器網路路規範,是 Kubernetes 網路路插件基礎,⽬目前以貢
獻給 CNCF。其思想為在 Container Runtime 建立時,並建立 network namespace,之後呼叫 CNI 插件來來設定 netns 網路路,最後提供給容器使⽤用。
CNI 插件主要實做兩兩個部份: • CNI Plugins:管理理容器網路路設 定,主要有兩兩個基礎介⾯面, AddNetwork 與 DelNetwork。 •
IPAM Plugin:負責分配 IP 給 容器,主要實做如 host-local 與 DHCP 等。
CNI: Flannel GRE/VXLAN Networking Flannel 是 CoreOS 開發的 Overlay network,基於
Linux TUN/TAP ⽅方式,以 UDP 封裝 IP 封包來來建立⼀一個隧道網路路讓 容器節點進⾏行行溝通。 • 優點:安裝與設定簡單,⼤大多數雲端平 台都⽀支援,對於在 VPC 上沒有額外效 能損失。 • 缺點:VXLAN 模式在 Zero-downtime restart ⽀支援不佳,另外只有 Layer 2 網 路路功能、單⼀一⼦子網路路。
CNI: Calico BGP Networking Calico 是⼀一種純 Layer 3 的網路路技術(Underlay), 是基於
Linux Kernel 實做⾼高效能的 vRouter 來來進 ⾏行行封包轉發,不依賴硬體,且不使⽤用 NAT 或 Tunnel 等技術,⽽而每個 vRouter 都是透過 BGP 協定來來將 workload 的路路由訊息進⾏行行傳播。 • 優點:⽀支援 Layer 3 網路路、基於 iptables ACL 規則、⽀支援多種雲原⽣生平台整合、轉發效能 好、⽀支援 Network policy。 • 缺點:不⽀支援 Virtual Routing and Forwarding、有網路路安全問題(未加密)、只⽀支 援 TCP/UDP/ICMP/ICMPv6 協定、IP-in-IP 效 能差。
CNI: Weave lightweight networking Weave Net 是⼀一種去中⼼心化控制平⾯面的容 器網路路⽅方案,是透過開發 wRouter 以
Full Mesh 的 TCP 連接,並利利⽤用 Gossip 來來同部 控制資訊,以解決集中式 K/V 儲存,在資 料⾯面利利⽤用 UDP 封裝實作 L2 Overlay 網路路。 • 優點:去中⼼心化 K/V 儲存、故障恢復、 傳輸加密與⽀支援多播網路路、可動態增減 網路路、⽀支援跨主機多⼦子網路路。 • 缺點:沒有服務發現、UDP 下的效能不 佳、主機無法動態加入節點網路路。
CNI: Canal = Calico + Flannel Canal 是社群驅動促成的專案,⽬目標是讓 使⽤用者能夠簡單地同時部署 Flannel
與 Calico 的統⼀一網路路⽅方案,結合 Calico 的 Network policy 與 Flannel 的 Overlay Network 技術。 • 優點:Policy-based、⽀支援 Kubernetes 與 Mesos 等平台、⽀支援 Layer 2 與 3 技術。 • 缺點:成熟度不佳。
CRI: Container Runtime interface CRI 是 Kubernetes 社區提出的規範,由於隨著不同的容器引擎推成出新, Kubernetes 已不在只是管理理
Docker 的容器,CRI 將 Kubernetes 與具體容器實現 進⾏行行解耦,來來增加 Kubernetes 的擴展。 CRI 是 Kubelet 在 1.5/1.6 主要負責項 ⽬目,透過重新定義 Kubelet Container Runtime API,來來分離 ImageService 與 RuntimeService,並分別負責映像檔管理理與容器⽣生命週期。
已⽀支援 Container Runtime interface • Docker:⽬目前最穩定,且特性與功能⽀支援程度最⾼高。 • rkt:為 CoreOS 容器引擎⽬目前處於孵化專案,可參參考
rktlet。 • HyperContainer: v.1.6 已⽀支援,是 hypervisor 與 Docker 的混合使⽤用,可參參考 frakti。 • cri-o:基於 runC 與 intel clear container 的 Runtime,v1.6 已⽀支援,可參參考 cri-o。 • cri-containerd:基於 runC 與 containerd 的 Runtime,孵化中,可參參考 cri- containerd。 • virtlet: 是 Mirantis 開發的 Runtime,可以管理理 libvirt 虛擬機,並使⽤用 Qcow2 的映 像檔格式,可參參考 virtlet。 • Infranetes:直接管理理 IaaS 虛擬機,如 GCE 與 AWS等,可參參考 infranetes。
CSI: Container Storage interface CSI 是基於 CNI 與 CRI 概念念所提出的規範,⽬目的就是讓儲存供應商只需要
開發規範好的插件,就能讓⾃自家儲存在 Kubernetes 上使⽤用。CSI 定義⼀一系列列介 於 Kubernetes 與儲存插件之間的溝通程式介⾯面,並透過標準化⽅方式來來降低開發 複雜與耦合,⽬目前 CSI 希望⽀支援⼤大部分儲存格式,如區塊儲存或檔案系統等, 並同時想⽀支援本地與遠端的儲存服務。 ⽬目前還在規範,出版參參考 Container Storage Interface (CSI)。
Kubespray introduction Kubespray: Deploy a production ready kubernetes cluster.
Kubespray Kubespray 是 Kubernetes incubator 中的專案,⽬目標是提供 Production Ready Kubernetes 部署⽅方案,該專案基礎是透過
Ansible Playbook 來來定義系統與 Kubernetes 叢集部署的任務。 PROS • ⽀支援多種 Linux distributions(CoreOS、Debian Jessie、 Ubuntu 16.04、CentOS/RHEL7)。 • 部署 High Available Kubernetes 叢集。 • 可以部署在 AWS、GCE、Azure、OpenStack 或者 Baremetal。 • 基於 Ansible Playbook 開發,容易易理理解與修改。 • 可組合性(Composable),可⾃自⾏行行選擇 Network Plugin (flannel、calico、canal、weave) 與 Container Runtime Plugin(Docker、rkt)來來部署。 CONS • Kubespray 是很進階的⼯工具,它可以⽤用於⾃自動化整合。但 是由於採⽤用⼤大量量 Ansible 與環境,對這些不舒服的使⽤用者 與開發者,就不太適合了了。 • 整個架構不太直觀。 • ⽬目前 Addons 整合有限。(不過可以⾃自⾏行行解決)
Kubespray 架構 Operator Ansible Kubespray Playbook OpenStack GCP AWS Azure
Kargo-cli
Kubespray vs Kops Kubespray 可以執⾏行行於裸機與⼤大部分雲端平台上,並利利⽤用 Ansible 來來作為底層供應與編配的 引擎,其架構簡單,靈活性較⾼高。⽽而 Kops 是⾃自⾏行行開發組態與編配,因此靈活性較低,⽬目前
僅⽀支援雲端平台,⽽而雲端平台現在只可以在 AWS 上部署,其餘都在規劃中。 對於熟悉 Ansible 的⼈人,可以選擇 Kubespray,但是若若只想使⽤用單⼀一雲端平台的話,則可以 選擇 Kops 來來使⽤用 vs
Kubespray vs Kubeadm Kubeadm 是提供 Kubernetes 叢集、組態與部署相關領域知識的週期管理理⼯工具,包含⾃自我託 管部署與動態服務發現等功能,⽬目前作為新⼀一代的快速部署⼯工具,但其缺點是不⽀支援 HA 叢
集部署,且網路路插件要⾃自⾏行行部署。⽽而 Kubespray 是以 "OS operators" ⾓角度出發,其採⽤用多 種 CRI 插件與 CNI 插件,並透過 Ansible 進⾏行行通⽤用的組態設定管理理任務,⽬目前 Kubespray 也會加入⼀一些 Kubeadm 概念念來來增加管理理的功能。 vs
Quick Start Quick start to use kubespray.
Quick Start ⾸首先安裝 Ansible 與相關套件: $ sudo yum install -y
epel-release && sudo yum -y install ansible python-netaddr 然後 clone kubespray 專案: $ git clone https://github.com/kubernetes-incubator/kubespray.git 透過 Vagrant 進⾏行行部署: $ sed -i 's/\$os =.*/\$os = \"coreos-stable\"/g' Vagrantfile $ vagrant up $ vagrant ssh k8s-01
Operation https://hackmd.io/s/B1Oz17_7W
Baremetal Deploy kubernetes on Baremetal using kubespray
Kubespray 節點部署情境 6 vms, 2 are nodes and masters, 1
is node only and a distinct etcd cluster 8 vms, 2 distinct masters, 3 nodes and 3 etcds 3 vms, all 3 have etcd installed, all 3 are nodes (running pods), 2 of them run master components
Deploy guide https://hackmd.io/s/r1dMjueJZ
Provider Cloud(GCE) Deploy kubernetes on GCE cloud using kubespray.
Deploy guide https://hackmd.io/s/r1LJed20g
www.inwinstack.com Thank You! 迎 棧 科 技 股 份 有
限 公 司