Kubernets的资源管理
Kubernets的資源管理
- 資源
- yaml
- namespace
- Pod
- Label
- deployment
- service
- 數(shù)據(jù)存儲
- EmptyDir
- HostPath
- NFS
- PV
資源
學習kubernets的核心,就是學習如何對集群中的Pod、Pod控制器、Service、存儲等各種資源進行操作。
kubectl api-resources
| 集群 | nodes | no | 集群組成部分 |
| namespaces | ns | 隔離pod | |
| pod資源 | pods | po | 裝載容器 |
| pod資源控制器 | replication controllers | rc | 控制pod資源 |
| replicasets | rs | 控制pod資源 | |
| deployments | deploy | 控制pod資源 | |
| daemonsets | ds | 控制pod資源 | |
| jobs | 控制pod資源 | ||
| cronjobs | cj | 控制pod資源 | |
| horizontal pod auto saclers | hpa | 控制pod資源 | |
| statefulsets | sts | 控制pod資源 | |
| 服務(wù)發(fā)現(xiàn) | services | svc | 統(tǒng)一pod對外接口 |
| ingress | ing | 統(tǒng)一pod對外接口 | |
| 存儲資源 | volume attachments | 存儲 | |
| persistent volumes | pv | 存儲 | |
| persistent volume claims | pvc | 存儲 | |
| 配置資源 | config maps | cm | 配置 |
| secrets | 配置 | ||
yaml
1 使用kubectl create命令生成yaml文件kubectl create deployment nginx --image=nginx:1.17.1 --dry-run=client -n dev -o yaml kubectl create deployment nginx --image=nginx:1.17.1 --dry-run=client -n dev -o yaml > test.yaml #此種方式適用于沒有真正部署資源 -------- 2 使用kubectl get命令導出yaml文件 kubectl get deployment nginx -n dev -o yaml --export > test2.yamlnamespace
- Namespace是kubernetes系統(tǒng)中一種非常重要的資源,它的主要作用是用來實現(xiàn)多套系統(tǒng)的資源隔離或者多租戶的資源隔離。
Pod
-
Pod是kubernetes集群進行管理的最小單元,程序要運行必須部署在容器中,而容器必須存在于Pod中。
-
Pod可以認為是容器的封裝,一個Pod中可以存在一個或多個容器。
Label
-
Label是kubernetes的一個重要概念。它的作用就是在資源上添加標識,用來對它們進行區(qū)分和選擇。
-
Label的特點:
-
- 一個Label會以key/value鍵值對的形式附加到各種對象上,如Node、Pod、Service等。
-
- 一個資源對象可以定義任意數(shù)量的Label,同一個Label也可以被添加到任意數(shù)量的資源對象上去。
-
- Label通常在資源對象定義時確定,當然也可以在對象創(chuàng)建后動態(tài)的添加或刪除。
-
可以通過Label實現(xiàn)資源的多緯度分組,以便靈活、方便地進行資源分配、調(diào)度、配置和部署等管理工作。
一些常用的Label標簽示例如下:
-
版本標簽:“version”:”release”,”version”:”stable”。。。
-
環(huán)境標簽:“environment”:”dev”,“environment”:”test”,“environment”:”pro”。。。
-
架構(gòu)標簽:“tier”:”frontend”,”tier”:”backend”。。。
deployment
● 在kubernetes中,Pod是最小的控制單元,但是kubernetes很少直接控制Pod,一般都是通過Pod控制器來完成的。 ● Pod控制器用于Pod的管理,確保Pod資源符合預(yù)期的狀態(tài),當Pod的資源出現(xiàn)故障的時候,會嘗試進行重啟或重建Pod。 ● 在kubernetes中Pod控制器的種類有很多,本章節(jié)只介紹一種:Deploymentkubectl create deployment xxx [-n 命名空間] kubectl create deployment nginx --image=nginx:1.17.1 -n testkubectl scale deployment xxx [--replicas=正整數(shù)] [-n 命名空間] kubectl scale deployment nginx --replicas=4 -n devkubectl create -f deploy-nginx.yaml kubectl delete -f deploy-nginx.yaml kubectl get pods -n dev kubectl get deployment [-n 命名空間] kubectl get deployment -n devservice
- Service可以看做是一組同類的Pod對外的訪問接口,借助Service,應(yīng)用可以方便的實現(xiàn)服務(wù)發(fā)現(xiàn)和負載均衡。
數(shù)據(jù)存儲
-
kubernetes的Volume支持多種類型,比較常見的有下面的幾個:
-
- 簡單存儲:EmptyDir、HostPath、NFS。
-
- 高級存儲:PV、PVC。
-
- 配置存儲:ConfigMap、Secret。
EmptyDir
-
EmptyDir是最基礎(chǔ)的Volume類型,一個EmptyDir就是Host上的一個空目錄。
-
EmptyDir是在Pod被分配到Node時創(chuàng)建的,它的初始內(nèi)容為空,并且無須指定宿主機上對應(yīng)的目錄文件,因為kubernetes會自動分配一個目錄,當Pod銷毀時,EmptyDir中的數(shù)據(jù)也會被永久刪除。
-
EmptyDir的用途如下:
-
- 臨時空間,例如用于某些應(yīng)用程序運行時所需的臨時目錄,且無須永久保留。
-
- 一個容器需要從另一個容器中獲取數(shù)據(jù)的目錄(多容器共享目錄)。
-
接下來,通過一個容器之間的共享案例來使用描述一個EmptyDir。
-
在一個Pod中準備兩個容器nginx和busybox,然后聲明一個volume分別掛載到兩個容器的目錄中,然后nginx容器負責向volume中寫日志,busybox中通過命令將日志內(nèi)容讀到控制臺。
HostPath
- HostPath就是將Node主機中的一個實際目錄掛載到Pod中,以供容器使用,這樣的設(shè)計就可以保證Pod銷毀了,但是數(shù)據(jù)依舊可以保存在Node主機上。
NFS
PV
-
PV(Persistent Volume)是持久化卷的意思,是對底層的共享存儲的一種抽象。一般情況下PV由kubernetes管理員進行創(chuàng)建和配置,它和底層具體的共享存儲技術(shù)有關(guān),并通過插件完成和共享存儲的對接。
-
PVC(Persistent Volume Claim)是持久化卷聲明的意思,是用戶對于存儲需求的一種聲明。換言之,PVC其實就是用戶向kubernetes系統(tǒng)發(fā)出的一種資源需求申請。
-
使用了PV和PVC之后,工作可以得到進一步的提升:
-
- 存儲:存儲工程師維護。
-
- PV:kubernetes管理員維護。
-
- PVC:kubernetes用戶維護。
總結(jié)
以上是生活随笔為你收集整理的Kubernets的资源管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cmd连局域网mysql_cmd连接局域
- 下一篇: 六个好用的在线代码编辑器,你选哪个?