SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Kyle bai
R&D @ inwinSTACK
www.inwinstack.com
Kubernetes Project Update
and How To Contribute
Job
R&D @ inwinSTACK
Description
早期在校主要撰寫 java 與 objc 程式語⾔言,並專注於
Mobile 應⽤用程式開發,具備四年年開發經驗,次要研讀
Hadoop 與 Spark 資料運算框架,以及 Linux 相關技術。
⼯工作期間則專注於 OpenStack、Ceph 等 Cloud Native 相
關技術與開源專案,閒暇之餘會參參與相關專案社區及貢
獻,並利利⽤用部落落格、GitHub 與 GitBook 做筆記。
Drink Coffee Mobile Love
Good! #7727 Buttocks
kairen(kyle.b@inwinstack.com)
https://kairen.github.io/
About Me
Kyle Bai
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.
An introduction for Kubernetes
Major features in Kubernetes 1.7
What's new in Kubernetes 1.8?
How to contribute
Agenda
Today I will talk about
An introduction for Kubernetes
Kubernetes
Kubernetes 是 Google 開源的容器(Container)分散式管理理系
統,是 Google ⼗十幾年年以來來⼤大規模應⽤用容器技術的經驗累積和昇
華的⼀一個重要成果,是建於 Container(OCI標準容器)之上的容器
叢集排程服務,簡稱為K8s( )。
⽬目前為 CNCF 專案之⼀一。
Stars
25,830+
Commits
52,905+
Contributors
1,331+
Kubernetes Pros
資源監控
Monitoring
滾動升級
Rolling-update
⾼高可靠性
High-availability
⾃自我修復
Self-healing
雲端⽀支援
Cloud Provider
持久性儲存
Persistent Volumes
組態檔案
Configmap
安全性
Secret
Kubernetes 管理理跨區域與主機的容器節點,提供基本部署、維運、管
理理,以及執⾏行行各項應⽤用程式,並具備多種特性。
Container Management Platforms
Preferences
https://www.cncf.io/blog/2017/01/17/container-management-trends-kubernetes-moves-testing-production/
Kubernetes Adoption
Kubernetes 2017 Release Timeline
v1.6 v1.9v1.8v1.7
September(Q3)
December(Q4)
March(Q1)
June(Q2)
Major features in Kubernetes 1.7
Security, Workloads and Extensibility.
https://github.com/kubernetes/features
API aggregation
⽬目前為 Beta,主要⽬目標是將單體 API Server 拆分多個聚合的 Server,這
樣每個⼈人都可以撰寫⾃自⼰己的 API Server 來來進⾏行行聚合。
• 提升擴展性
• 適合應⽤用於測試⽤用 API 上
• 保證新建立 API 符合 Kubernetes 約束
https://github.com/kubernetes/sample-apiserver
API aggregation
API aggregation
Extensible External Admission Control
• 主要⽬目的是替 API Server 新增⾃自定義的邏輯業務,以便便在建立與驗證
策略略時更更新物件。
• 這使管理理者或者供應商能夠定義⾃自⼰己的策略略來來允許指定內容進入⾄至他們
的 Kubernetes 叢集。
• ⽬目前是 Alpha 功能,預設不啟⽤用。若若要使⽤用可以在 kube-apiserver 的 --
admission-control 參參數加入 GenericAdmissionWebhook。
Limit node access to API server
• 新增 Node authorizer 模式,以及 NodeRestriction 管理理 Plugin,主要
⽬目標是⽤用來來限制 Node 對某些 API 的存取。
• 這使得 Node 只能修改⾃自⼰己的 API 物件,以及這之上的 Pod 物件,或
者接收這些 Pod 上的 Secrets 與 Configmaps。
Custom Resource Definition
• 棄⽤用 TPR。取得代之為更更加輕量量的 API,Custom Resource
Definitions(CRD)。
• CRD 解決了了 TPR beta 測試時出現的問題和邊緣場景。
• 1.8 版本將完全刪除所有 TPR 的 API,所以請將⽬目前已使⽤用 TPR 功能遷
移到 CRD 上。
Create custom objects for CRD
這邊是利利⽤用 CRD 來來簡單的定義
⼀一個 CronTab resource 。
Encrypting secrets in etcd
• 新增加密機制,這使儲存在 Etcd 中的 Secrets 敏感的資料能夠進⾏行行加
密。
• 在 Secret 被讀寫⾄至 Etcd 之前,將資料進⾏行行加密,這個加密可以根據使
⽤用者需求進⾏行行調整。
Local persistent storage
• 透過 StorageClasses 與 PVC/
PV 來來提供 Local persistent
storage 的存取。
• 這是比 hostPath volume 更更加
可靠的本地持久性資料模型。
Network Policy API
• NetworkPolicy API ⽬目前更更新為 GA 版本。
• NetworkPolicy 新增對 Ingress 選擇 Pods 的策略略。
https://ahmet.im/blog/kubernetes-network-policy/
Audit logs improvements
• API Server 儲存的稽核⽇日誌可以客制化與擴展,並⽀支援事件過濾與
Webhook 功能。
• 提供更更多的資料⽤用於系統稽核,這提升從⼤大量量資料中過濾出有意義的⽇日
誌訊息,以更更快地瞭解問題。
StatefulSet workloads
新增 StatefulSet 的 Rolling updates,與 Controller History,更更新策略略
有以下:
• RollingUpdate:改動所有 Pod,並符合 StatefulSet 約束。
• Partitioned:只改動部分的 Pod。
• OnDelete:當 Pod 被⼿手動刪除時重新建立。
DaemonSets workloads
新增 DaemonSet 的 History 和 Rolling back:
• 利利⽤用 PodTemplate 儲存 DaemonSet History。
• 在伺服端實現 Rolling back,主要是利利⽤用 RollbackConfig,類似
Deployment。
Container Runtime Interface (CRI)
• 新增新的 RPC call 以及增強⼀一些功能,如優化可調式性、容器與映像
檔系統 Metrics 與統計訊息,以幫助檢索 Container Runtime 的
Metrics。
• 新增 Kubelet 不啟⽤用從 Container Runtime 收集 Metrics 資料。
• 將 Containerd 整合⾄至 Kubelet 中,提供更更輕量量的 Container Runtime。
Pod HostAliases
• 透過 hostAliases 來來定義 hostname 條⽬目⾄至 Pod-level 中的 /etc/hosts。
其條⽬目包含 Pod 本⾝身的主機名稱解析。
$ kubectl logs hostaliases-pod
# Kubernetes-managed hosts file.
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.244.135.10 hostaliases-pod
127.0.0.1 foo.local
127.0.0.1 bar.local
10.1.2.3 foo.remote
10.1.2.3 bar.remote
PodDisruptionBudget(PDB)
• 新增⼀一個 Beta 參參數 MaxUnavailable ,透過該參參數可以設定最⼤大不可
⽤用 Pod 數,來來提供 drain 指令不會在同⼀一時間操作太多 Pod 數。
What's new in Kubernetes 1.8?
https://github.com/kubernetes/features
SIG in 1.8 release
• SIG Node: 持續專注在⽀支持最廣泛的⼯工作負載類型。這包含較敏感的硬
體與效能⼯工作負載,如資料分析與深度學習,同時提升節點可靠性。新
增 CRI-O support ⽀支援與動態的 Kubelet 組態。
• SIG Network:主要加強 NetworkPolicy API,以⽀支援 Pod Egress 規
則,另外改進 kube-proxy 新增 IPVS 模式(alpha),⽬目前為 iptables 與
userspace 模式。
SIG in 1.8 release
• SIG Storage:擴展 Storage API 以提供更更多功能,如 resizing(alpha) 與
snapshotting(prototype)。另外專注提供更更多儲存控制權,如 Ephemeral storage
的 requests & limits 設定、提供更更多的 metrics 或改進 driver 等。
• SIG Autoscaling:專注於引入穩定的功能,如新版本的 HPA API(⽀支援⾃自定義
Metrics),以及 Cluster Autoscaler(改進效能與錯誤報告,⽬目前只⽀支援 GCE/
GKE)。
• SIG Instrumentation:專注於提供穩定版本⽀支援新的 HPA API 所需的 Resource
metrics API、Custom metrics API、Metrics-server 與 Default monitoring
pipeline(取代 Heapster)。
Kubernetes workloads API
• DaemonSet、Deployment、ReplicaSet 與 StatefulSet kinds 的 API Group 更更新
到 apps/v1beta2。未來來可能會成為 GA 推廣版本。
• 該版本會引入棄⽤用⼀一些 API與⾏行行為變化,如 batch/v2alpha1.CronJob 棄⽤用、
TPR 與 batch/v2alpha1.ScheduledJobs 移除、autoscaling/v2alpha1 更更新⾄至
autoscaling/v2beta1 等。
• Annotation initContainer 已棄⽤用,請直接在 Pod spec 設定 initContainers。
• Advanced auditing 從 v1alpha1 更更新⾄至 v1beta1 。當使⽤用 Advanced auditing
gate 時,稽核⽇日誌檔案預設採⽤用 JSON encoding。
Network Policy API
• 新增基於 CIDR 的 NetworkPolicy。
• ⽀支援在 NetworkPolicy 制定 EgressRules。
Custom Resource Definition
• CRD API 現在可以在 CRD spec 選擇驗證基於 JSON schema 的⾃自定
義物件。
• Garbage Collector 現在⽀支援 CRD 與 Aggregate API servers。
Roles Based Access Control (RBAC)
• RBAC API Group 正式從 v1beta1 進入 v1,RBAC v1alpha1 API
group 棄⽤用。
• ⽬目前官⽅方開始提倡在⽣生產環境中採⽤用 RBAC。現在很多授權模式預設都
會使⽤用 RBAC,這已經是⼀一個叢集基本的安全⽀支援。
Scheduling
• Opaque Integer Resources (OIRs) ⽬目前已棄⽤用,也將在 v1.9 版本移除。
• Extended Resources (ERs) 成為 OIRs 的替代 Resource。
• 使⽤用者能夠使⽤用 kubernetes.io/ domain 之外的任何域名前輟,不再是使
⽤用 pod.alpha.kubernetes.io/opaque-int-resource- prefix。
Autoscaling
• 現在不建議從 Heapster 取得 metrics,這已經棄⽤用,請透過 Resource
metrics API 的聚合來來取得 Metrics。
• 透過 --horizontal-pod-autoscaler-use-rest-clients 參參數來來設定。在
1.9 版本會是預設啟⽤用。
Storage
• 現在 iSCSI 與 Fibre Channel ⽀支援 RWO 的 Attach/Detach。
• 可透過 Kubernetes metrics API 來來取得 PV ⽬目前可⽤用的容量量。新增
Volume Plugin Metrics。
• 新增可透過 API 達到 Volume resizing 功能(Gluster),但⽬目前只是單純
增加 Volume ⼤大⼩小,底層儲存或檔案系統並不會實際調整。
• 新增 Volume Snapshots 功能,⽬目前是⼀一個原型測試階段。
CLI Changes
• ⽬目前 kubectl rollout 的 history、status、undo ⼦子指令與 scale 指令
已⽀支援 StatefulSets。
• 刪除⼀一些已棄⽤用指令,如 kubectl stop。
• kubectl run --env 不再⽀支援 CSV parsing。
Cluster Lifecycle
• kubeadm:現在⽀支援 upgrade 指令來來⾃自動升級 self-hosted 的
Kubernetes 叢集。
• kops:現在⽀支援 bare metal(Alpha) 與 GCE(轉為Beta).
• kubespray(incubator):⽀支援了了 kubeadm 的 HA 部署⽅方案,預設啟⽤用
Kubernetes Dashboard。
Other Projects
• Dashboard:新增 zh-TW 的 i18n 處理理,另外加入更更多 Resource 的顯
⽰示,並新增登入⾴頁⾯面功能。
• test-infra:⼀一致性 e2e 測試現在⽀支援 arm、arm64 與 ppc64le 平台
(Kubernetes Core)。
How to contribute
Kubernetes Community Contribution
Kubernetes 可以以多種⽅方式來來進⾏行行社區貢獻:
• 回報程式碼 Bug 與提交問題。
• 修改 Bug、問題或是功能實現。
• 新增或修改官⽅方檔案。
• 協助使⽤用者解決遇到的問題。
• 參參加 Special Interest Groups 會議。
https://github.com/kubernetes/community/blob/master/contributors/devel/community-expectations.md
Contribute Git workflow
Speed up PR merge
若若想要加快 PR 被 merge 的話,可以透過以下⽅方式來來達成:
• 透過⼩小的 Commit 來來將不同功能程式拆分到不同 Commit 或 PR
中,來來⽅方便便檢閱。
• 對於 PR 與邏輯進⾏行行更更多說明。
• 開發程式碼遵守約束,如 Coding Conventions、API
Conventions 和 kubectl Conventions。
• 確認修改部分能夠跑過本地單元與功能等測試。
• 利利⽤用 k8s-ci-robot 指令設定正確的標籤與重新失敗測試。
迎棧科技已成為全球⾸首批 Kubernetes 認證服務商
(Kubernetes Certified Service Provider)
下午 2:50 有認證考試優惠卷抽獎唷

Weitere ähnliche Inhalte

Was ist angesagt?

Wot2013云计算架构师峰会 -陈轶飞2
Wot2013云计算架构师峰会 -陈轶飞2Wot2013云计算架构师峰会 -陈轶飞2
Wot2013云计算架构师峰会 -陈轶飞2
dotCloud
 

Was ist angesagt? (20)

Kubeflow Machine Learning Toolkit for Kubernetes (SDN x Cloud Native Meetup #4)
Kubeflow Machine Learning Toolkit for Kubernetes (SDN x Cloud Native Meetup #4)Kubeflow Machine Learning Toolkit for Kubernetes (SDN x Cloud Native Meetup #4)
Kubeflow Machine Learning Toolkit for Kubernetes (SDN x Cloud Native Meetup #4)
 
DNN平台建置分享
DNN平台建置分享DNN平台建置分享
DNN平台建置分享
 
Extend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API ServerExtend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API Server
 
Docker open stack
Docker open stackDocker open stack
Docker open stack
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)
 
容器式軟體開發介紹
容器式軟體開發介紹容器式軟體開發介紹
容器式軟體開發介紹
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養
 
Docker集群管理 工具篇
Docker集群管理 工具篇Docker集群管理 工具篇
Docker集群管理 工具篇
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
20220224台中演講k8s
20220224台中演講k8s20220224台中演講k8s
20220224台中演講k8s
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
Google IoT Core 初體驗
Google IoT Core 初體驗Google IoT Core 初體驗
Google IoT Core 初體驗
 
基于Fuel的超融合一体机
基于Fuel的超融合一体机基于Fuel的超融合一体机
基于Fuel的超融合一体机
 
Wot2013云计算架构师峰会 -陈轶飞2
Wot2013云计算架构师峰会 -陈轶飞2Wot2013云计算架构师峰会 -陈轶飞2
Wot2013云计算架构师峰会 -陈轶飞2
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, Kubernetes
 
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
 

Ähnlich wie Kubernetes project update and how to contribute

Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
q3boy
 
03.wls depoly jdbc
03.wls depoly jdbc03.wls depoly jdbc
03.wls depoly jdbc
Meng He
 
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud era
Junchi Zhang
 
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
hdhappy001
 

Ähnlich wie Kubernetes project update and how to contribute (20)

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
 
網站上線了,然後呢?
網站上線了,然後呢?網站上線了,然後呢?
網站上線了,然後呢?
 
Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AI
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
 
Ceph customize ap is for programmatic access with python
Ceph customize ap is for programmatic access with pythonCeph customize ap is for programmatic access with python
Ceph customize ap is for programmatic access with python
 
架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境
 
03.wls depoly jdbc
03.wls depoly jdbc03.wls depoly jdbc
03.wls depoly jdbc
 
Kyligence Leverages Alluxio to Accelerate OLAP in the Cloud
Kyligence Leverages Alluxio to Accelerate OLAP in the CloudKyligence Leverages Alluxio to Accelerate OLAP in the Cloud
Kyligence Leverages Alluxio to Accelerate OLAP in the Cloud
 
宅學習 Firebase
宅學習 Firebase宅學習 Firebase
宅學習 Firebase
 
Introduction to K8S Big Data SIG
Introduction to K8S Big Data SIGIntroduction to K8S Big Data SIG
Introduction to K8S Big Data SIG
 
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud era
 
Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界
 
4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
iServDB雲端資料庫解決方案
iServDB雲端資料庫解決方案iServDB雲端資料庫解決方案
iServDB雲端資料庫解決方案
 
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
 

Mehr von inwin stack

Mehr von inwin stack (20)

Migrating to Cloud Native Solutions
Migrating to Cloud Native SolutionsMigrating to Cloud Native Solutions
Migrating to Cloud Native Solutions
 
Cloud Native 下的應用網路設計
Cloud Native 下的應用網路設計Cloud Native 下的應用網路設計
Cloud Native 下的應用網路設計
 
當電子發票遇見 Google Cloud Function
當電子發票遇見 Google Cloud Function當電子發票遇見 Google Cloud Function
當電子發票遇見 Google Cloud Function
 
運用高效、敏捷全新平台極速落實雲原生開發
運用高效、敏捷全新平台極速落實雲原生開發運用高效、敏捷全新平台極速落實雲原生開發
運用高效、敏捷全新平台極速落實雲原生開發
 
The last mile of digital transformation AI大眾化:數位轉型的最後一哩
The last mile of digital transformation AI大眾化:數位轉型的最後一哩The last mile of digital transformation AI大眾化:數位轉型的最後一哩
The last mile of digital transformation AI大眾化:數位轉型的最後一哩
 
整合Cloud Foundry 和 Kubernetes 技術打造企業級雲應用平台解決方案
整合Cloud Foundry 和 Kubernetes 技術打造企業級雲應用平台解決方案整合Cloud Foundry 和 Kubernetes 技術打造企業級雲應用平台解決方案
整合Cloud Foundry 和 Kubernetes 技術打造企業級雲應用平台解決方案
 
An Open, Open source way to enable your Cloud Native Journey
An Open, Open source way to enable your Cloud Native JourneyAn Open, Open source way to enable your Cloud Native Journey
An Open, Open source way to enable your Cloud Native Journey
 
維運Kubernetes的兩三事
維運Kubernetes的兩三事維運Kubernetes的兩三事
維運Kubernetes的兩三事
 
Serverless framework on kubernetes
Serverless framework on kubernetesServerless framework on kubernetes
Serverless framework on kubernetes
 
Web後端技術的演變
Web後端技術的演變Web後端技術的演變
Web後端技術的演變
 
以 Kubernetes 部屬 Spark 大數據計算環境
以 Kubernetes 部屬 Spark 大數據計算環境以 Kubernetes 部屬 Spark 大數據計算環境
以 Kubernetes 部屬 Spark 大數據計算環境
 
Setup Hybrid Clusters Using Kubernetes Federation
Setup Hybrid Clusters Using Kubernetes FederationSetup Hybrid Clusters Using Kubernetes Federation
Setup Hybrid Clusters Using Kubernetes Federation
 
基於 K8S 開發的 FaaS 專案 - riff
基於 K8S 開發的 FaaS 專案 - riff基於 K8S 開發的 FaaS 專案 - riff
基於 K8S 開發的 FaaS 專案 - riff
 
使用 Prometheus 監控 Kubernetes Cluster
使用 Prometheus 監控 Kubernetes Cluster 使用 Prometheus 監控 Kubernetes Cluster
使用 Prometheus 監控 Kubernetes Cluster
 
利用K8S實現高可靠應用
利用K8S實現高可靠應用利用K8S實現高可靠應用
利用K8S實現高可靠應用
 
Integrate Kubernetes into CORD(Central Office Re-architected as a Datacenter)
Integrate Kubernetes into CORD(Central Office Re-architected as a Datacenter)Integrate Kubernetes into CORD(Central Office Re-architected as a Datacenter)
Integrate Kubernetes into CORD(Central Office Re-architected as a Datacenter)
 
Distributed tensorflow on kubernetes
Distributed tensorflow on kubernetesDistributed tensorflow on kubernetes
Distributed tensorflow on kubernetes
 
Virtualization inside kubernetes
Virtualization inside kubernetesVirtualization inside kubernetes
Virtualization inside kubernetes
 
利用K8S實現高可靠應用
利用K8S實現高可靠應用利用K8S實現高可靠應用
利用K8S實現高可靠應用
 
How to integrate Kubernetes in OpenStack: You need to know these project
How to integrate Kubernetes in OpenStack: You need to know these projectHow to integrate Kubernetes in OpenStack: You need to know these project
How to integrate Kubernetes in OpenStack: You need to know these project
 

Kubernetes project update and how to contribute

  • 1. Kyle bai R&D @ inwinSTACK www.inwinstack.com Kubernetes Project Update and How To Contribute
  • 2. Job R&D @ inwinSTACK Description 早期在校主要撰寫 java 與 objc 程式語⾔言,並專注於 Mobile 應⽤用程式開發,具備四年年開發經驗,次要研讀 Hadoop 與 Spark 資料運算框架,以及 Linux 相關技術。 ⼯工作期間則專注於 OpenStack、Ceph 等 Cloud Native 相 關技術與開源專案,閒暇之餘會參參與相關專案社區及貢 獻,並利利⽤用部落落格、GitHub 與 GitBook 做筆記。 Drink Coffee Mobile Love Good! #7727 Buttocks kairen(kyle.b@inwinstack.com) https://kairen.github.io/ About Me Kyle Bai
  • 3. 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. An introduction for Kubernetes Major features in Kubernetes 1.7 What's new in Kubernetes 1.8? How to contribute Agenda Today I will talk about
  • 4. An introduction for Kubernetes
  • 5. Kubernetes Kubernetes 是 Google 開源的容器(Container)分散式管理理系 統,是 Google ⼗十幾年年以來來⼤大規模應⽤用容器技術的經驗累積和昇 華的⼀一個重要成果,是建於 Container(OCI標準容器)之上的容器 叢集排程服務,簡稱為K8s( )。 ⽬目前為 CNCF 專案之⼀一。 Stars 25,830+ Commits 52,905+ Contributors 1,331+
  • 6. Kubernetes Pros 資源監控 Monitoring 滾動升級 Rolling-update ⾼高可靠性 High-availability ⾃自我修復 Self-healing 雲端⽀支援 Cloud Provider 持久性儲存 Persistent Volumes 組態檔案 Configmap 安全性 Secret Kubernetes 管理理跨區域與主機的容器節點,提供基本部署、維運、管 理理,以及執⾏行行各項應⽤用程式,並具備多種特性。
  • 9. Kubernetes 2017 Release Timeline v1.6 v1.9v1.8v1.7 September(Q3) December(Q4) March(Q1) June(Q2)
  • 10. Major features in Kubernetes 1.7 Security, Workloads and Extensibility. https://github.com/kubernetes/features
  • 11. API aggregation ⽬目前為 Beta,主要⽬目標是將單體 API Server 拆分多個聚合的 Server,這 樣每個⼈人都可以撰寫⾃自⼰己的 API Server 來來進⾏行行聚合。 • 提升擴展性 • 適合應⽤用於測試⽤用 API 上 • 保證新建立 API 符合 Kubernetes 約束 https://github.com/kubernetes/sample-apiserver
  • 14. Extensible External Admission Control • 主要⽬目的是替 API Server 新增⾃自定義的邏輯業務,以便便在建立與驗證 策略略時更更新物件。 • 這使管理理者或者供應商能夠定義⾃自⼰己的策略略來來允許指定內容進入⾄至他們 的 Kubernetes 叢集。 • ⽬目前是 Alpha 功能,預設不啟⽤用。若若要使⽤用可以在 kube-apiserver 的 -- admission-control 參參數加入 GenericAdmissionWebhook。
  • 15. Limit node access to API server • 新增 Node authorizer 模式,以及 NodeRestriction 管理理 Plugin,主要 ⽬目標是⽤用來來限制 Node 對某些 API 的存取。 • 這使得 Node 只能修改⾃自⼰己的 API 物件,以及這之上的 Pod 物件,或 者接收這些 Pod 上的 Secrets 與 Configmaps。
  • 16. Custom Resource Definition • 棄⽤用 TPR。取得代之為更更加輕量量的 API,Custom Resource Definitions(CRD)。 • CRD 解決了了 TPR beta 測試時出現的問題和邊緣場景。 • 1.8 版本將完全刪除所有 TPR 的 API,所以請將⽬目前已使⽤用 TPR 功能遷 移到 CRD 上。
  • 17. Create custom objects for CRD 這邊是利利⽤用 CRD 來來簡單的定義 ⼀一個 CronTab resource 。
  • 18. Encrypting secrets in etcd • 新增加密機制,這使儲存在 Etcd 中的 Secrets 敏感的資料能夠進⾏行行加 密。 • 在 Secret 被讀寫⾄至 Etcd 之前,將資料進⾏行行加密,這個加密可以根據使 ⽤用者需求進⾏行行調整。
  • 19. Local persistent storage • 透過 StorageClasses 與 PVC/ PV 來來提供 Local persistent storage 的存取。 • 這是比 hostPath volume 更更加 可靠的本地持久性資料模型。
  • 20. Network Policy API • NetworkPolicy API ⽬目前更更新為 GA 版本。 • NetworkPolicy 新增對 Ingress 選擇 Pods 的策略略。 https://ahmet.im/blog/kubernetes-network-policy/
  • 21. Audit logs improvements • API Server 儲存的稽核⽇日誌可以客制化與擴展,並⽀支援事件過濾與 Webhook 功能。 • 提供更更多的資料⽤用於系統稽核,這提升從⼤大量量資料中過濾出有意義的⽇日 誌訊息,以更更快地瞭解問題。
  • 22. StatefulSet workloads 新增 StatefulSet 的 Rolling updates,與 Controller History,更更新策略略 有以下: • RollingUpdate:改動所有 Pod,並符合 StatefulSet 約束。 • Partitioned:只改動部分的 Pod。 • OnDelete:當 Pod 被⼿手動刪除時重新建立。
  • 23. DaemonSets workloads 新增 DaemonSet 的 History 和 Rolling back: • 利利⽤用 PodTemplate 儲存 DaemonSet History。 • 在伺服端實現 Rolling back,主要是利利⽤用 RollbackConfig,類似 Deployment。
  • 24. Container Runtime Interface (CRI) • 新增新的 RPC call 以及增強⼀一些功能,如優化可調式性、容器與映像 檔系統 Metrics 與統計訊息,以幫助檢索 Container Runtime 的 Metrics。 • 新增 Kubelet 不啟⽤用從 Container Runtime 收集 Metrics 資料。 • 將 Containerd 整合⾄至 Kubelet 中,提供更更輕量量的 Container Runtime。
  • 25. Pod HostAliases • 透過 hostAliases 來來定義 hostname 條⽬目⾄至 Pod-level 中的 /etc/hosts。 其條⽬目包含 Pod 本⾝身的主機名稱解析。 $ kubectl logs hostaliases-pod # Kubernetes-managed hosts file. 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet fe00::0 ip6-mcastprefix fe00::1 ip6-allnodes fe00::2 ip6-allrouters 10.244.135.10 hostaliases-pod 127.0.0.1 foo.local 127.0.0.1 bar.local 10.1.2.3 foo.remote 10.1.2.3 bar.remote
  • 26. PodDisruptionBudget(PDB) • 新增⼀一個 Beta 參參數 MaxUnavailable ,透過該參參數可以設定最⼤大不可 ⽤用 Pod 數,來來提供 drain 指令不會在同⼀一時間操作太多 Pod 數。
  • 27. What's new in Kubernetes 1.8? https://github.com/kubernetes/features
  • 28. SIG in 1.8 release • SIG Node: 持續專注在⽀支持最廣泛的⼯工作負載類型。這包含較敏感的硬 體與效能⼯工作負載,如資料分析與深度學習,同時提升節點可靠性。新 增 CRI-O support ⽀支援與動態的 Kubelet 組態。 • SIG Network:主要加強 NetworkPolicy API,以⽀支援 Pod Egress 規 則,另外改進 kube-proxy 新增 IPVS 模式(alpha),⽬目前為 iptables 與 userspace 模式。
  • 29. SIG in 1.8 release • SIG Storage:擴展 Storage API 以提供更更多功能,如 resizing(alpha) 與 snapshotting(prototype)。另外專注提供更更多儲存控制權,如 Ephemeral storage 的 requests & limits 設定、提供更更多的 metrics 或改進 driver 等。 • SIG Autoscaling:專注於引入穩定的功能,如新版本的 HPA API(⽀支援⾃自定義 Metrics),以及 Cluster Autoscaler(改進效能與錯誤報告,⽬目前只⽀支援 GCE/ GKE)。 • SIG Instrumentation:專注於提供穩定版本⽀支援新的 HPA API 所需的 Resource metrics API、Custom metrics API、Metrics-server 與 Default monitoring pipeline(取代 Heapster)。
  • 30. Kubernetes workloads API • DaemonSet、Deployment、ReplicaSet 與 StatefulSet kinds 的 API Group 更更新 到 apps/v1beta2。未來來可能會成為 GA 推廣版本。 • 該版本會引入棄⽤用⼀一些 API與⾏行行為變化,如 batch/v2alpha1.CronJob 棄⽤用、 TPR 與 batch/v2alpha1.ScheduledJobs 移除、autoscaling/v2alpha1 更更新⾄至 autoscaling/v2beta1 等。 • Annotation initContainer 已棄⽤用,請直接在 Pod spec 設定 initContainers。 • Advanced auditing 從 v1alpha1 更更新⾄至 v1beta1 。當使⽤用 Advanced auditing gate 時,稽核⽇日誌檔案預設採⽤用 JSON encoding。
  • 31. Network Policy API • 新增基於 CIDR 的 NetworkPolicy。 • ⽀支援在 NetworkPolicy 制定 EgressRules。
  • 32. Custom Resource Definition • CRD API 現在可以在 CRD spec 選擇驗證基於 JSON schema 的⾃自定 義物件。 • Garbage Collector 現在⽀支援 CRD 與 Aggregate API servers。
  • 33. Roles Based Access Control (RBAC) • RBAC API Group 正式從 v1beta1 進入 v1,RBAC v1alpha1 API group 棄⽤用。 • ⽬目前官⽅方開始提倡在⽣生產環境中採⽤用 RBAC。現在很多授權模式預設都 會使⽤用 RBAC,這已經是⼀一個叢集基本的安全⽀支援。
  • 34. Scheduling • Opaque Integer Resources (OIRs) ⽬目前已棄⽤用,也將在 v1.9 版本移除。 • Extended Resources (ERs) 成為 OIRs 的替代 Resource。 • 使⽤用者能夠使⽤用 kubernetes.io/ domain 之外的任何域名前輟,不再是使 ⽤用 pod.alpha.kubernetes.io/opaque-int-resource- prefix。
  • 35. Autoscaling • 現在不建議從 Heapster 取得 metrics,這已經棄⽤用,請透過 Resource metrics API 的聚合來來取得 Metrics。 • 透過 --horizontal-pod-autoscaler-use-rest-clients 參參數來來設定。在 1.9 版本會是預設啟⽤用。
  • 36. Storage • 現在 iSCSI 與 Fibre Channel ⽀支援 RWO 的 Attach/Detach。 • 可透過 Kubernetes metrics API 來來取得 PV ⽬目前可⽤用的容量量。新增 Volume Plugin Metrics。 • 新增可透過 API 達到 Volume resizing 功能(Gluster),但⽬目前只是單純 增加 Volume ⼤大⼩小,底層儲存或檔案系統並不會實際調整。 • 新增 Volume Snapshots 功能,⽬目前是⼀一個原型測試階段。
  • 37. CLI Changes • ⽬目前 kubectl rollout 的 history、status、undo ⼦子指令與 scale 指令 已⽀支援 StatefulSets。 • 刪除⼀一些已棄⽤用指令,如 kubectl stop。 • kubectl run --env 不再⽀支援 CSV parsing。
  • 38. Cluster Lifecycle • kubeadm:現在⽀支援 upgrade 指令來來⾃自動升級 self-hosted 的 Kubernetes 叢集。 • kops:現在⽀支援 bare metal(Alpha) 與 GCE(轉為Beta). • kubespray(incubator):⽀支援了了 kubeadm 的 HA 部署⽅方案,預設啟⽤用 Kubernetes Dashboard。
  • 39. Other Projects • Dashboard:新增 zh-TW 的 i18n 處理理,另外加入更更多 Resource 的顯 ⽰示,並新增登入⾴頁⾯面功能。 • test-infra:⼀一致性 e2e 測試現在⽀支援 arm、arm64 與 ppc64le 平台 (Kubernetes Core)。
  • 41. Kubernetes Community Contribution Kubernetes 可以以多種⽅方式來來進⾏行行社區貢獻: • 回報程式碼 Bug 與提交問題。 • 修改 Bug、問題或是功能實現。 • 新增或修改官⽅方檔案。 • 協助使⽤用者解決遇到的問題。 • 參參加 Special Interest Groups 會議。 https://github.com/kubernetes/community/blob/master/contributors/devel/community-expectations.md
  • 43. Speed up PR merge 若若想要加快 PR 被 merge 的話,可以透過以下⽅方式來來達成: • 透過⼩小的 Commit 來來將不同功能程式拆分到不同 Commit 或 PR 中,來來⽅方便便檢閱。 • 對於 PR 與邏輯進⾏行行更更多說明。 • 開發程式碼遵守約束,如 Coding Conventions、API Conventions 和 kubectl Conventions。 • 確認修改部分能夠跑過本地單元與功能等測試。 • 利利⽤用 k8s-ci-robot 指令設定正確的標籤與重新失敗測試。
  • 44.
  • 45. 迎棧科技已成為全球⾸首批 Kubernetes 認證服務商 (Kubernetes Certified Service Provider) 下午 2:50 有認證考試優惠卷抽獎唷