K8S 入門

在學(xué)習(xí)本章前杯活,請確保你已經(jīng)掌握了Linux及docker的相關(guān)知識及操作

簡介

Kubernetes(簡稱K8S)是開源的容器集群管理系統(tǒng)狰腌,可以實現(xiàn)容器集群的自動化部署柳畔、自動擴縮容鼎姐、維護等功能哪雕。它既是一款容器編排工具船殉,也是全新的基于容器技術(shù)的分布式架構(gòu)領(lǐng)先方案。在Docker技術(shù)的基礎(chǔ)上热监,為容器化的應(yīng)用提供部署運行捺弦、資源調(diào)度、服務(wù)發(fā)現(xiàn)和動態(tài)伸縮等功能,提高了大規(guī)模容器集群管理的便捷性列吼。

基本術(shù)語
  • pod:的最小調(diào)度單元幽崩,一個pod中可以有多個容器,多個容器共享網(wǎng)絡(luò)和存儲卷
  • service:kubernetes抽象出來一個概念寞钥,可以理解為負載均衡器慌申,后端接pod
  • cluster ip:service在集群中的ip,相當(dāng)負載均衡器的ip
  • ingress: 對集群外部暴露集群內(nèi)部service的一種方式
  • nodeport: 對集群外部暴露服務(wù)的第二種方式理郑,跟隨service配置蹄溉,讓集群中的node節(jié)點都監(jiān)聽相應(yīng)的端口,可以通過node節(jié)點訪問集群內(nèi)部service
  • loadbalancer: 對集群外部暴露集群內(nèi)部service的一種方式您炉,一般只有在云平臺才能使用
  • deployment:封裝了pod/replicaset柒爵,可以實現(xiàn)指定pod副本數(shù)量,滾動更新赚爵,擴容pod棉胀,一般一個應(yīng)用(服務(wù))一個deployment
  • statefullSet:相當(dāng)于有狀態(tài)服務(wù)的deployment,重啟后冀膝,主機名和pod的名稱不會改變
  • daemonSet:在每個node節(jié)點都需要運行的pod可以使用daemonSet
  • job: 一次性任務(wù)
  • cronJob:類似于crontab定時執(zhí)行任務(wù)
  • dns:kube-dns/coredns提供集群中的dns服務(wù)唁奢,可以解析service到cluster ip,實現(xiàn)服務(wù)發(fā)現(xiàn)
  • pv:管理員用來提前創(chuàng)建好的存儲空間窝剖,供用戶申請使用
  • pvc:用戶用來申請存儲空間
  • storageClass:定義存儲類供pvc使用麻掸,當(dāng)用戶通過pvc并指定storageClass請求pv時kubernetes可以根據(jù)storageClass動態(tài)創(chuàng)建pv
基礎(chǔ)組件介紹
K8S系統(tǒng)架構(gòu)
  • etcd:etcd是kubernetes集群用來存儲集群相關(guān)數(shù)據(jù)的數(shù)據(jù)倉庫
master節(jié)點組件

master節(jié)點是主集群中的大腦,負責(zé)處理外部的api請求赐纱,分配調(diào)度任務(wù)以及管理容器的副本數(shù)等
kube-apiserver:kubernetes對外的服務(wù)入口脊奋,其他組件通信的紐帶,服務(wù)無狀態(tài)千所,可水平擴容
kube-scheduler:負責(zé)pod的任務(wù)調(diào)度
kube-controller-manager:處理node節(jié)點當(dāng)機情況狂魔、負責(zé)保證pod的副本數(shù)、管理endpoint淫痰,連接service和pod最楷、為新namespace創(chuàng)建默認api token和accounts

node節(jié)點組件

node節(jié)點負責(zé)干活,執(zhí)行master節(jié)點指派的相關(guān)任務(wù)

  • kubelet:負責(zé)啟動停止容器待错,保證容器運行籽孙。
  • kube-proxy:負責(zé)根據(jù)service生成網(wǎng)絡(luò)規(guī)則,生成路由規(guī)則

為什么需要 Pod


K8S 引入 Pod 主要基于下面兩個目的:
  • (1) 可管理性
    有些容器天生就是需要緊密聯(lián)系,一起工作火俄。Pod提供了比容器更高層次的抽象,將它們封裝到一個部署單元中犯建。Kubernetes以Pod為最小單位進行調(diào)度、擴展瓜客、共享資源适瓦、管理生命周期竿开。
  • (2) 通信和資源共享
    Pod中的所有容器使用同一個網(wǎng)絡(luò)namespace,即相同的IP地址和Port空間。它們可以直接用localhost通信玻熙。同樣的,這些容器可以共享存儲,當(dāng)Kubernetes掛載volume到Pod,本質(zhì)上是將volume掛載到 Pod中的每一個容器否彩。
容器五種共享資源
  • PID命名空間:Pod中的不同應(yīng)用程序可以看到其他應(yīng)用程序的進程ID。
  • 網(wǎng)絡(luò)命名空間:Pod中的多個容器能夠訪問同一個IP和端口范圍嗦随。
  • IPC命名空間:Pod中的多個容器能夠使用SystemV IPC或POSIX消息隊列進行通信列荔。
  • UTS命名空間:Pod中的多個容器共享一個主機名。
  • Volumes(共享存儲卷):Pod中的各個容器可以訪問在Pod級別定義的Volumes枚尼。

為什么需要 Service


Deployment 可以部署多個副本,每個 Pod 都有自己的IP,外界如何訪問這些副本呢? 通過 Pod 的IP嗎? 要知道 Pod 很可能會被頻繁地銷毀和重啟,它們的IP會發(fā)生變化,用IP來訪問不太現(xiàn)實贴浙。這個時候,Service 就出現(xiàn)了署恍。

k8s 中 Service 是一個面向微服務(wù)架構(gòu)的設(shè)計崎溃,它從k8s本身解決了容器集群的負載均衡,這些被服務(wù)標(biāo)記的 Pod 一般都是通過label selector選擇的盯质。

五種類型的 Service

ClusterIP

  • 創(chuàng)建一個 ClusterIP 來提供集群內(nèi)部訪問
  • 默認選項

NodePort
在每個節(jié)點 IP 上暴露一個端口(NodePort)來提供服務(wù)笨奠,集群外部通過這種方式來訪問:<NodeIP>:<NodePort>,同時會創(chuàng)建一個

ClusterIP

  • 這種類型使用較多
  • 默認暴露的隨機端口范圍:30000-32767
    可以通過 nodePort 字段來顯式的指定端口

LoadBalancer
通過和 cloud provider’s load balancer 關(guān)聯(lián)使用唤殴,此時 NodePort and ClusterIP 將自動創(chuàng)建

ExternalName
將 service 名稱映射到一個 externalName (例如一個域名),通過 kube-dns 來提供 DNS 到 CNAME 記錄

附A:排錯技巧

  • 查看日志 kubectl logs pod-name
  • 查看事件 kubectl describe pod-name
  • 查看docker日志
    通過kubectl get pod -o wide找到容器運行的node節(jié)點
    在node節(jié)點上通過docker ps -a找到出錯的容器
    docker logs container-id
  • 查看kubelet及其他組件日志:journalctl -u kubelet
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末到腥,一起剝皮案震驚了整個濱河市朵逝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乡范,老刑警劉巖配名,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異晋辆,居然都是意外死亡渠脉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門瓶佳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芋膘,“玉大人,你說我怎么就攤上這事霸饲∥螅” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵厚脉,是天一觀的道長习寸。 經(jīng)常有香客問我,道長傻工,這世上最難降的妖魔是什么霞溪? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任孵滞,我火速辦了婚禮,結(jié)果婚禮上鸯匹,老公的妹妹穿的比我還像新娘坊饶。我一直安慰自己,他們只是感情好忽你,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布幼东。 她就那樣靜靜地躺著,像睡著了一般科雳。 火紅的嫁衣襯著肌膚如雪根蟹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天糟秘,我揣著相機與錄音简逮,去河邊找鬼。 笑死尿赚,一個胖子當(dāng)著我的面吹牛散庶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凌净,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悲龟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冰寻?” 一聲冷哼從身側(cè)響起须教,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斩芭,沒想到半個月后轻腺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡划乖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年贬养,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琴庵。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡误算,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迷殿,到底是詐尸還是另有隱情尉桩,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布贪庙,位于F島的核電站蜘犁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏止邮。R本人自食惡果不足惜这橙,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一奏窑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屈扎,春花似錦埃唯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至模蜡,卻和暖如春漠趁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忍疾。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工闯传, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卤妒。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓甥绿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親则披。 傳聞我的和親對象是個殘疾皇子共缕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容