《Kubernetes權(quán)威指南第2版》學(xué)習(xí)(一) Kubernetes是什么 - 劉大飛 - 博客園
總結(jié):
1.Kubernetes作為當(dāng)前唯一被廣泛認(rèn)可和看好的Docker分布式解決方案
2.它不局限于任何一種語言用JAVA翎猛、Go关霸、C++還是用Python編寫的服務(wù)兰粉,都可以映射為Kubernetes的service
3.一個(gè)節(jié)點(diǎn)運(yùn)行幾百個(gè)Pod氨淌,Pod里運(yùn)行一個(gè)Pause容器菲茬,將一組密切相關(guān)的服務(wù)進(jìn)程放入同一個(gè)Pod娱俺。給每個(gè)Pod貼上一個(gè)標(biāo)簽,給相應(yīng)的Service定義標(biāo)簽選擇器(Label Selector),解決了Service與Pod的關(guān)聯(lián)問題。
4. Service是分布式集群的核心井濒,一個(gè)Service有唯一指定的名字灶似,有一個(gè)虛擬IP和端口號,被映射到一組容器上
《Kubernetes權(quán)威指南第2版》學(xué)習(xí)(三)RC學(xué)習(xí) - 劉大飛 - 博客園
總結(jié):
1.ReplicationController(RC)創(chuàng)建集群
#kubectl? create -f mysql-rc.yaml
查看創(chuàng)建的RC:
# kubectl get rc
查看pod運(yùn)行情況:
# kubectl get pods
查看docker運(yùn)行情況:
# docker ps | grep mysql
2.Service(svc)創(chuàng)建服務(wù) ? ?
?# kubectl create -f mysql-svc.yaml
查看創(chuàng)建的Service:
# kubectl get svc
3.參數(shù)詳情
《Kubernetes權(quán)威指南第2版》學(xué)習(xí)(四)kubernetes基本概念和術(shù)語 - 劉大飛 - 博客園
總結(jié):
1.etcd是鍵-值存儲(chǔ)倉庫瑞你,用來配置共享和服務(wù)發(fā)現(xiàn)酪惭。將Node, pod, Services通過K8s提供的kubectl工具進(jìn)行增者甲、刪春感、改、查等操作將其保存在etcd中持久化存儲(chǔ)虏缸,實(shí)現(xiàn)自動(dòng)控制鲫懒,糾錯(cuò)的高級功能。
2.Label是Key=value鍵值對寇钉。Label可以附加到各種資源上刀疙,例如Node, Pod扫倡, Service谦秧, RC等。
Label + Label selector共同構(gòu)成K8S中最核心的應(yīng)用模型撵溃,使得被管理對象精確的分組管理疚鲤。
3.是K8s的最重要也是最基本的概念。每個(gè)Pod有一個(gè)特殊的被稱為“根容器”的Pause容器和若干個(gè)業(yè)務(wù)容器缘挑。
Pod的定義如下:
查看資源使用情況
#kubectl describe pod XXX
第五章 運(yùn)行應(yīng)用 - 劉大飛 - 博客園
這里必須說明一下Deployment 和RC不一樣
K8S中RC與Deployment的區(qū)別 - 波神 - 博客園
總結(jié):
Deployment
kubectl create namespace liufei?#? 創(chuàng)建namespace
kubectl run nginx-deployment -n liufei? --image=nginx:1.7.9 --replicas=2??# 運(yùn)行deployment?
kubectl get deployment -n liufei?#? 查看deployment
kubectl describe deployment -n liufei?# 查看deployment更詳細(xì)的信息
kubectl get replicaset -n liufei?#? 查看副本控制器
kubectl describe replicaset -n liufei? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#? ?副本控制器詳細(xì)信息
kubectl apply -f nignx.yml? ?
?DaemonSet每個(gè)Node上最多只能運(yùn)行一個(gè)副本集歇。
Deployment部署的副本Pod會(huì)分布在各個(gè)Node上,每個(gè)node都可能運(yùn)行好幾個(gè)副本语淘。
Job
一次性任務(wù)诲宇,比如批處理,運(yùn)行完就銷毀惶翻,定期執(zhí)行的任務(wù)姑蓝, 比如Cronjob。
第七章 Rolling update - 劉大飛 - 博客園
kubectl get deployment httpd -o wide
kubectl describe deployment httpd
apply -f httpd.v1.yml --record
apply -f httpd.v2.yml --record
apply -f httpd.v3.yml --record
查看歷史部署版本
kubectl rollout history deployment httpd deployments "httpd"
回退
kubectl rollout undo deployment httpd --to-revision=3 ?# 回退到revision=3的那個(gè)版本
第八章 Health Check - 劉大飛 - 博客園
Health Check
Liveness探測
總結(jié)
通過用戶自定義來檢查機(jī)器的健康性
例如:判斷文件是否存在來判斷容器是否出現(xiàn)故障吕粗。
Readiness探測
Readiness探測:告訴k8s什么時(shí)候可以將容器加入到Service負(fù)載均衡池中纺荧,對外提供服務(wù)。
liveness 和 Readiness 比較:
(1)默認(rèn)情況二者都是看容器退出時(shí)返回值是否為0,來判斷是否失敗宙暇。
(2)二者的配置方法完全相同输枯,不同的是探測失敗后的處理:Liveness重啟容器;Readiness將容器設(shè)置為不可用占贫。
? ?(3) 二者獨(dú)立執(zhí)行桃熄,沒有依賴。Liveness探測判斷容器是否需要重啟來自愈靶剑; Readiness探測容器是否已經(jīng)準(zhǔn)備好對外提供服務(wù)蜻拨。
Volume
持久化保存pod容器中的的數(shù)據(jù),可以使用K8s Volume桩引。
emptyDIr Volume:?對于容器來說是持久的,對于Pod不是收夸。當(dāng)Pod從節(jié)點(diǎn)刪除時(shí)坑匠,Volume的內(nèi)容也會(huì)被刪除。但是如果只是容器被銷毀而Pod存在卧惜,則volume不受影響厘灼。生命周期與Pod一致。
Pod中的所有容器都可以共享Volume,例如Pod有兩個(gè)容器: producer 和 consumer咽瓷,它們共享一個(gè)Volume. Producer 寫设凹, consumer 讀。
Secret
敏感信息茅姜,比如用戶名闪朱、密碼等。Secret會(huì)以Volume的形式被mount到Pod钻洒,容器可通過文件的方式使用