Kubernetes 學習筆記

什么是Kubernetes

Kubernetes 是 Google 開源的基于容器技術的分布式架構領先方案,提供應用部署敬矩、維護、擴展機制等功能蠢挡,利用 Kubernetes 能方便地管理跨機器運行容器化的應用弧岳。

單容器( contianer )所遇到的問題

  • 需要被管理
  • 網絡環(huán)境復雜
  • 容器需要被調度、分發(fā)业踏,以及配置負載均衡
  • 數據需要被保存在其他地方

  • 使用 Docker 對應用程序打包禽炬、實例化、運行
  • 以集群的方式運行勤家、管理跨機器的容器
  • 解決 Docker 跨機器容器之間的通訊問題

核心概念

分為 master 和 node 節(jié)點腹尖,master 為集群控制節(jié)點
master 節(jié)點通常會占據一個獨立的服務器(高可用部署建議使用三臺服務器(如果 master 和 etcd 部在一起的話))

master上:etcd, controller, scheduler, api server

  • etcd: key-value 存儲,集群狀態(tài)管理伐脖,是運行在多節(jié)點上的分布式鍵值存儲热幔,高可用(奇數個,必須半數以上的選舉讼庇,容錯能力限制于節(jié)點數的一半绎巨,選舉 raft)
  • controller:控制器(多個控制器組成)選舉
  • scheduler:調度器,負責資源調度(pod 調度)的進程 選舉蠕啄。scheduler 的職責很明確场勤,就是負責調度 pod 到合適的 Node 上。如果把 scheduler 看成一個黑匣子歼跟,那么它的輸入是 pod 和由多個 Node 組成的列表和媳,輸出是 Pod 和一個 Node 的綁定,即將這個 pod 部署到這個 Node 上哈街。Kubernetes 目前提供了調度算法留瞳,但是同樣也保留了接口,用戶可以根據自己的需求定義自己的調度算法叹卷。
  • api server:暴露接口撼港,處理請求。提供了資源操作的唯一入口骤竹,并提供認證帝牡、授權、訪問控制蒙揣、API 注冊和發(fā)現(xiàn)等機制靶溜。APIServer負責對外提供RESTful的 Kubernetes API 服務,它是系統(tǒng)管理指令的統(tǒng)一入口,任何對資源進行增刪改查的操作都要交給 APIServer 處理后再提交給 etcd罩息,kubectl( Kubernetes 提供的客戶端工具嗤详,該工具內部就是對 Kubernetes API 的調用)是直接和 APIServer 交互的。

node上:kubelet, kubeproxy, runtime

  • kubelet:管理 pod瓷炮,負責 pod 對應的容器的創(chuàng)建葱色、啟停等任務,同時與 master 節(jié)點密切協(xié)作娘香,實現(xiàn)集群管理的基本功能
  • kubeproxy: 實現(xiàn) kubernetes service 的通信與負載均衡機制的重要組件
  • runtime: runtime 指的是容器運行環(huán)境苍狰,目前 Kubernetes 支持 docker 和 rkt 兩種容器。

除了核心組件烘绽,還有一些推薦的 Add-ons:

  • kube-dns:負責為整個集群提供 DNS 服務
  • Ingress Controller:為服務提供外網入口
  • Heapster:提供資源監(jiān)控
  • Dashboard:提供GUI
  • Federation:提供跨可用區(qū)的集群
  • Fluentd-elasticsearch:提供集群日志采集淋昭、存儲與查詢

網絡預置

  • 所有 pods 之間可以相互通信
  • 所有 pods 和 nodes 可以相互通信
  • 不做 NAT

設計原則

聲明式編程(Declarative)

聲明式與命令式的區(qū)別

Declarative 的定義是用戶設定期望的狀態(tài),系統(tǒng)會知道它需要執(zhí)行什么操作安接,來達到期望的狀態(tài)翔忽。
而對于 Imperative,需要用戶告訴系統(tǒng)需要做什么盏檐。比如說用戶說創(chuàng)建一個新的 Container歇式,系統(tǒng)才會創(chuàng)建一個新的 Container。

Level-triggered

Pod

基本概念

  • Kubernetes 中最小計算和被調度單元
  • 是多個容器的集合糯笙,pod 中的容器共享 namespacevolume
  • 一 pod 一 ip

pod 的五大狀態(tài)(生命周期贬丛,pod phase)

  • Pending:系統(tǒng)已經接受 pod 實例的創(chuàng)建,但其中所包含容器的一個或者多個 image 還沒有創(chuàng)建成功给涕。Pending 包含調度計算與通過網絡創(chuàng)建 image豺憔,所以此 phase 的時間可能會有點長。
  • Running:Pod 已經被調度到某個 node 上够庙,pod 包含的所有容器已經創(chuàng)建完成恭应,至少有一個容器正常運行或者處于啟動與重啟動過程。
  • Failed:Pod 中所有容器已終止運行耘眨,至少有一個容器非正常結束昼榛,比如退出碼非零,被系統(tǒng)強制殺死等剔难。
  • Succeeded:Pod 中的所有容器正常終止胆屿,并且不會再次啟動。
  • Unknown:無法取得 pod 狀態(tài)偶宫,一般是網絡問題引起非迹。

pod 的重啟策略

  • Always:總是重啟
  • Never:從不重啟
  • OnFailure:失敗時重啟

API

API 資源結構

  • apiVersion:api 版本
  • kind:資源類型
  • metadata:元數據
  • spec:Spec 是讓用戶寫入期望的狀態(tài),系統(tǒng)可以通過 Spec 讀出用戶的期望
  • status:Status 是系統(tǒng)寫入觀察到的狀態(tài)纯趋,用戶可以從中讀出系統(tǒng)當前是什么狀態(tài)

API 擴展方法

  • CRD:自定義 api
  • aggregator:讓用戶利用全部的 Kubernetes API 實現(xiàn)自己的 apiserver憎兽,封裝服務層

RC, RS, Deployment

RC

推薦使用 RS + Deployment 來代替 RC
是比 pod 高一級的存在
RC 與 Pod 的關聯(lián)是通過 Label 來實現(xiàn)的(通過 selector)
Label 是鍵值對冷离,可用于篩選資源

RS

大部分與 RC 相同,除了 rolling update (RS 特有)

Deployment

比 RS 高一級的定義微服務應用的抽象層
Deployments 創(chuàng)建 RS

PV, PVC

PV 與 PVC 一一對應
管理員定義 PV, 用戶使用 PVC

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末纯命,一起剝皮案震驚了整個濱河市西剥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亿汞,老刑警劉巖瞭空,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疗我,居然都是意外死亡匙铡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門碍粥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黑毅,你說我怎么就攤上這事嚼摩。” “怎么了矿瘦?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵枕面,是天一觀的道長。 經常有香客問我缚去,道長潮秘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任易结,我火速辦了婚禮枕荞,結果婚禮上,老公的妹妹穿的比我還像新娘搞动。我一直安慰自己躏精,他們只是感情好,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布鹦肿。 她就那樣靜靜地躺著矗烛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箩溃。 梳的紋絲不亂的頭發(fā)上瞭吃,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機與錄音涣旨,去河邊找鬼歪架。 笑死,一個胖子當著我的面吹牛开泽,可吹牛的內容都是我干的牡拇。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惠呼!你這毒婦竟也來了导俘?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤剔蹋,失蹤者是張志新(化名)和其女友劉穎旅薄,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體泣崩,經...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡少梁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了矫付。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凯沪。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖买优,靈堂內的尸體忽然破棺而出妨马,到底是詐尸還是另有隱情,我是刑警寧澤杀赢,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布烘跺,位于F島的核電站,受9級特大地震影響脂崔,放射性物質發(fā)生泄漏滤淳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一砌左、第九天 我趴在偏房一處隱蔽的房頂上張望脖咐。 院中可真熱鬧,春花似錦汇歹、人聲如沸文搂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煤蹭。三九已至,卻和暖如春取视,著一層夾襖步出監(jiān)牢的瞬間硝皂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工作谭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留稽物,地道東北人。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓折欠,卻偏偏與公主長得像贝或,于是被迫代替她去往敵國和親吼过。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內容