Upgrade to Pro — share decks privately, control downloads, hide ads and more …

An Introduction to Kubernetes

Kyle Bai
September 22, 2017

An Introduction to Kubernetes

Kyle Bai

September 22, 2017
Tweet

More Decks by Kyle Bai

Other Decks in Technology

Transcript

  1. Job R&D @ inwinSTACK Description 早期在校主要撰寫 java 與 objc 程式語⾔言,並專注於

    iOS Mobile 應⽤用程式開發,具備四年年開發經驗。次要研讀 Hadoop 與 Spark 資料運算框架,以及 Linux 相關技術。 研所與⼯工作期間則專注於 OpenStack、Ceph 與 Kubernetes 等雲原⽣生相關技術開源專案,閒暇之餘會參參加 相關專案社區及貢獻,並利利⽤用部落落格、GitHub 與 GitBook 進⾏行行筆記記錄。 Drink Coffee Good! Phone #7727 Love Buttocks kairen([email protected]) https://kairen.github.io/ About Me Kyle Bai
  2. Kubernetes 47% Containers remain the top emerging technology of interest

    to users. Among those currently deploying container orchestration or platform services on OpenStack, 47% are using Kubernetes. Why Kubernetes? Kubernetes and CNI Run custom application on Kubernetes How to contribute to Kubernetes Agenda Today I will talk about
  3. Docker 基於 Linux Kernel 的 cgroup, namespace,以及 Union FS 等

    技術,對處理理程式進⾏行行封裝隔離。 屬於作業系統層虛擬化。
  4. Kubernetes Pros 資源監控 Monitoring 滾動升級 Rolling-update ⾼高可靠性 High-availability ⾃自我修復 Self-healing

    雲端⽀支援 Cloud Provider 持久性儲存 Persistent Volumes 組態檔案 Configmap 安全性 Secret Kubernetes 管理理跨區域與主機的容器節點,提供基本部署、維運、管 理理,以及執⾏行行各項應⽤用程式,並具備多種特性。
  5. Kubernetes Master Kubernetes Master 包含了了四個基本組件: • Etcd: 主要為 Kubernetes 的資訊儲存

    與服務發現功能。 • API Server:以 REST APIs 介⾯面⽅方式提 供所有業務邏輯CURD操作。 • Controller Manager Server:所有其他 叢集級功能都是透過控制管理理器 (Controller Manager)來來操作。 • Scheduler:負責整個分散式系統的資源 排程。
  6. Kubernetes Nodes Kubernetes Node 包含了了三個基本組件: • Kubelet:與 API 溝通,並負責管理理的 映像檔、容器與資料

    Volume等操作。 也是連接 Master 的橋樑。 • Kube-proxy: 為了了解決外部網路路能夠 群曲跨機器叢集中容器提供的應⽤用服務 ⽽而設計,⽀支援 L4 的 Load Balancer。 • Container engine: 基於 OCI Container Runtime 來來執⾏行行應⽤用程式容 器實例例。
  7. API driven • 通過 API 完成節點之間溝通 • 明確定義與規範 API •

    使⽤用 gRPC 進⾏行行 Remote Procedure Call • 可擴展的 API • CRD(Custom Resource Definitions) • Custom Schedulers • API aggregation layer https://blog.openshift.com/kubernetes-deep-dive-api-server-part-1/
  8. Container Network Interface CNI 是 CNCF 容器網路路規範,更更是 Kubernetes 網路路插件基礎。其思想為在 Container

    Runtime 建立時,並建立 network namespace,之後呼叫 CNI 插件 來來設定 netns 網路路,最後提供給容器使⽤用。
  9. Network plugin calls IPAM plugin • IPAM(IP Address Management) Plugin:負責分配

    IP 給容器,主要 實做如 host-local 與 DHCP 等。
  10. Kubernetes Deployments Deployments 是部署 Pod 群組的抽象資源,其會確保 K8s 系統中指定數 量量副本的 Pod

    存活於叢集, 也可以利利⽤用 Label 及 Rolling update 來來進⾏行行 副本的擴展或更更新。
  11. Kubernetes Service Service 是 Pod 服務的抽象資源,具有簡單負載平衡的功能,由於 Pod 的數量量與IP 不會固定,可將⼀一群 Pod

    指派成 Service 並給予⼀一個固定IP (cluster IP),service 會將請求⾄至 cluster IP 的流量量導入其對應 pod。
  12. Kubernetes Community Contribution Kubernetes 可以以多種⽅方式來來進⾏行行社區貢獻: • 回報程式碼 Bug 與提交問題。 •

    修改 Bug、問題或是功能實現。 • 新增或修改官⽅方檔案。 • 協助使⽤用者解決遇到的問題。 • 參參加 Special Interest Groups 會議。 https://github.com/kubernetes/community/blob/master/contributors/devel/community-expectations.md
  13. Speed up PR merge 若若想要加快 PR 被 merge 的話,可以透過以下⽅方式來來達成: •

    透過⼩小的 Commit 來來將不同功能程式拆分到不同 Commit 或 PR 中,來來⽅方便便檢閱。 • 對於 PR 與邏輯進⾏行行更更多說明。 • 開發程式碼遵守約束,如 Coding Conventions、API Conventions 和 kubectl Conventions。 • 確認修改部分能夠跑過本地單元與功能等測試。 • 利利⽤用 k8s-ci-robot 指令設定正確的標籤與重新失敗測試。
  14. 台中場 時間:
 11/14(⼆二) 09:30-16:30 
 地點:
 台中科技⼤大學
 資訊館2801室
 
 ⾼高雄場

    時間:
 11/21(⼆二) 09:30-16:30 
 地點:
 中⼭山⼤大學
 國際研究⼤大樓樓1樓樓 IR1002
 
 活動免費入場 Kubernetes「容企新航向」巡迴論壇
 台中場/⾼高雄場 —洞洞悉容器新趨勢,開創企業IT新未來來 https://goo.gl/DMGevJ