K8S Learning(3)——资源管理
一、資源
在kubernetes中,所有的內(nèi)容都抽象為資源,用戶需要通過(guò)操作資源來(lái)管理kubernetes。
kubernetes的本質(zhì)上就是一個(gè)集群系統(tǒng),用戶可以在集群中部署各種服務(wù),所謂的部署服務(wù),其實(shí)就是在kubernetes集群中運(yùn)行一個(gè)個(gè)的容器,并將指定的程序跑在容器中。
kubernetes的最小管理單元是pod而不是容器,所以只能將容器放在Pod中,而kubernetes一般也不會(huì)直接管理Pod,而是通過(guò)Pod控制器來(lái)管理Pod的。
Pod可以提供服務(wù)之后,就要考慮如何訪問(wèn)Pod中服務(wù),kubernetes提供了Service資源實(shí)現(xiàn)這個(gè)功能。
如果Pod中程序的數(shù)據(jù)需要持久化,kubernetes還提供了各種存儲(chǔ)系統(tǒng)。
二、資源管理
-
命令式對(duì)象管理:直接使用命令去操作kubernetes資源
kubectl run tomcat-deployment --image=tomcat:jre8-openjdk-slim-buster --port=8080 -n mk -
命令式對(duì)象配置:通過(guò)命令配置和配置文件去操作kubernetes資源
kubectl create/patch -f tomcat-pod.yaml -
聲明式對(duì)象配置:通過(guò)apply命令和配置文件去操作kubernetes資源
kubectl apply -f tomcat-pod.yaml
| 命令式對(duì)象管理 | k8s對(duì)象 | 測(cè)試 | 簡(jiǎn)單 | 只能操作活動(dòng)對(duì)象,無(wú)法審計(jì)、跟蹤 |
| 命令式對(duì)象配置 | 文件 | 開(kāi)發(fā) | 可以審計(jì)、跟蹤 | 項(xiàng)目大時(shí),配置文件多,操作麻煩 |
| 聲明式對(duì)象配置 | 目錄 | 開(kāi)發(fā) | 支持目錄操作 |
(1)命令式對(duì)象管理
kubectl命令
kubectl是kubernetes集群的命令行工具,通過(guò)它能夠?qū)罕旧磉M(jìn)行管理,并能夠在集群上進(jìn)行容器化應(yīng)用的安裝部署。
語(yǔ)法:
kubectl [command] [type] [name] [flags]comand:指定要對(duì)資源執(zhí)行的操作,例如create、get、delete
type:指定資源類型,比如deployment、pod、service
name:指定資源的名稱,名稱大小寫敏感
flags:指定額外的可選參數(shù)
注:資源類型
kubernetes中所有的內(nèi)容都抽象為資源,可以通過(guò)下面的命令進(jìn)行查看:
kubectl api-resources經(jīng)常使用的資源有下面這些:
| 集群級(jí)別資源 | nodes | no | 集群組成部分 |
| namespaces | ns | 隔離Pod | |
| pod資源 | pods | po | 裝載容器 |
| pod資源控制器 | replicationcontrollers | rc | 控制pod資源 |
| replicasets | rs | 控制pod資源 | |
| deployments | deploy | 控制pod資源 | |
| daemonsets | ds | 控制pod資源 | |
| jobs | 控制pod資源 | ||
| cronjobs | cj | 控制pod資源 | |
| horizontalpodautoscalers | hpa | 控制pod資源 | |
| statefulsets | sts | 控制pod資源 | |
| 服務(wù)發(fā)現(xiàn)資源 | services | svc | 統(tǒng)一pod對(duì)外接口 |
| ingress | ing | 統(tǒng)一pod對(duì)外接口 | |
| 存儲(chǔ)資源 | volumeattachments | 存儲(chǔ) | |
| persistentvolumes | pv | 存儲(chǔ) | |
| persistentvolumeclaims | pvc | 存儲(chǔ) | |
| 配置資源 | configmaps | cm | 配置 |
| secrets | 配置 |
操作命令
kubernetes允許對(duì)資源進(jìn)行多種操作,可以通過(guò)--help查看詳細(xì)的操作命令
kubectl --help經(jīng)常使用的操作有下面這些:
| 基本命令 | create | 創(chuàng)建 | 創(chuàng)建一個(gè)資源 |
| edit | 編輯 | 編輯一個(gè)資源 | |
| get | 獲取 | 獲取一個(gè)資源 | |
| patch | 更新 | 更新一個(gè)資源 | |
| delete | 刪除 | 刪除一個(gè)資源 | |
| explain | 解釋 | 展示資源文檔 | |
| 運(yùn)行和調(diào)試 | run | 運(yùn)行 | 在集群中運(yùn)行一個(gè)指定的鏡像 |
| expose | 暴露 | 暴露資源為Service | |
| describe | 描述 | 顯示資源內(nèi)部信息 | |
| logs | 日志輸出容器在 pod 中的日志 | 輸出容器在 pod 中的日志 | |
| attach | 纏繞進(jìn)入運(yùn)行中的容器 | 進(jìn)入運(yùn)行中的容器 | |
| exec | 執(zhí)行容器中的一個(gè)命令 | 執(zhí)行容器中的一個(gè)命令 | |
| cp | 復(fù)制 | 在Pod內(nèi)外復(fù)制文件 | |
| rollout | 首次展示 | 管理資源的發(fā)布 | |
| scale | 規(guī)模 | 擴(kuò)(縮)容Pod的數(shù)量 | |
| autoscale | 自動(dòng)調(diào)整 | 自動(dòng)調(diào)整Pod的數(shù)量 | |
| 高級(jí)命令 | apply | rc | 通過(guò)文件對(duì)資源進(jìn)行配置 |
| label | 標(biāo)簽 | 更新資源上的標(biāo)簽 | |
| 其他命令 | cluster-info | 集群信息 | 顯示集群信息 |
| version | 版本 | 顯示當(dāng)前Server和Client的版本 |
(2)命令式對(duì)象配置
命令式對(duì)象配置就是使用命令配合配置文件一起來(lái)操作kubernetes資源。
1) 創(chuàng)建一個(gè)tomact-pod.yaml,內(nèi)容如下:
apiVersion: v1 kind: Namespace metadata:name: mk ? --- ? apiVersion: v1 kind: Pod metadata:name: tomact-podnamespace: mk spec:containers:- name: tomcat-containerimage: tomcat:jre8-openjdk-slim-buster2)執(zhí)行create命令,創(chuàng)建資源:
[root@master ~]# kubectl create -f tomact-pod.yaml namespace/mk created pod/tomact-pod created此時(shí)創(chuàng)建了兩個(gè)資源對(duì)象,分別是namespace和pod
3)執(zhí)行g(shù)et命令,查看資源:
[root@master ~]# kubectl get -f tomact-pod.yaml NAME ? ? ? ? ? STATUS ? AGE namespace/mk ? Active ? 34s ? NAME ? ? ? ? ? READY ? STATUS ? RESTARTS ? AGE pod/tomact-pod ? ?1/1 ? ? Running ? 0 ? ? ? ?33s這樣就顯示了兩個(gè)資源對(duì)象的信息
4)執(zhí)行delete命令,刪除資源:
[root@master ~]# kubectl delete -f tomact-pod.yaml namespace "mk" deleted pod "tomact-pod" deleted此時(shí)兩個(gè)資源對(duì)象被刪除了
命令式對(duì)象配置的方式操作資源,可以理解為:命令 ?+ ?yaml配置文件(3)聲明式對(duì)象配置
聲明式對(duì)象配置跟命令式對(duì)象配置很相似,但是它只有一個(gè)命令apply。
# 首先執(zhí)行一次kubectl apply -f yaml文件,創(chuàng)建資源 [root@master ~]# kubectl apply -f tomact-pod.yaml namespace/mk created pod/tomact-pod created ? # 再次執(zhí)行一次kubectl apply -f yaml文件,資源更新 [root@master ~]# kubectl apply -f tomact-pod.yaml namespace/mk unchanged pod/tomact-pod unchangedapply操作資源:如果資源不存在,就創(chuàng)建,相當(dāng)于 kubectl create如果資源已存在,就更新,相當(dāng)于 kubectl patch擴(kuò)展:
kubectl可以在node節(jié)點(diǎn)上運(yùn)行
kubectl的運(yùn)行是需要進(jìn)行配置的,它的配置文件是$HOME/.kube,如果想要在node節(jié)點(diǎn)運(yùn)行此命令,需要將master上的.kube文件復(fù)制到node節(jié)點(diǎn)上,即在master節(jié)點(diǎn)上執(zhí)行下面操作:
scp ?-r ~/.kube ? node1: ~/總結(jié)
以上是生活随笔為你收集整理的K8S Learning(3)——资源管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 飞盘制作方法 飞盘如何制作
- 下一篇: K8S Learning(4)——Nam