K8S Learning(3)——资源管理
一、資源
在kubernetes中,所有的內容都抽象為資源,用戶需要通過操作資源來管理kubernetes。
kubernetes的本質上就是一個集群系統,用戶可以在集群中部署各種服務,所謂的部署服務,其實就是在kubernetes集群中運行一個個的容器,并將指定的程序跑在容器中。
kubernetes的最小管理單元是pod而不是容器,所以只能將容器放在Pod中,而kubernetes一般也不會直接管理Pod,而是通過Pod控制器來管理Pod的。
Pod可以提供服務之后,就要考慮如何訪問Pod中服務,kubernetes提供了Service資源實現這個功能。
如果Pod中程序的數據需要持久化,kubernetes還提供了各種存儲系統。
二、資源管理
-
命令式對象管理:直接使用命令去操作kubernetes資源
kubectl run tomcat-deployment --image=tomcat:jre8-openjdk-slim-buster --port=8080 -n mk -
命令式對象配置:通過命令配置和配置文件去操作kubernetes資源
kubectl create/patch -f tomcat-pod.yaml -
聲明式對象配置:通過apply命令和配置文件去操作kubernetes資源
kubectl apply -f tomcat-pod.yaml
| 命令式對象管理 | k8s對象 | 測試 | 簡單 | 只能操作活動對象,無法審計、跟蹤 |
| 命令式對象配置 | 文件 | 開發 | 可以審計、跟蹤 | 項目大時,配置文件多,操作麻煩 |
| 聲明式對象配置 | 目錄 | 開發 | 支持目錄操作 |
(1)命令式對象管理
kubectl命令
kubectl是kubernetes集群的命令行工具,通過它能夠對集群本身進行管理,并能夠在集群上進行容器化應用的安裝部署。
語法:
kubectl [command] [type] [name] [flags]comand:指定要對資源執行的操作,例如create、get、delete
type:指定資源類型,比如deployment、pod、service
name:指定資源的名稱,名稱大小寫敏感
flags:指定額外的可選參數
注:資源類型
kubernetes中所有的內容都抽象為資源,可以通過下面的命令進行查看:
kubectl api-resources經常使用的資源有下面這些:
| 集群級別資源 | 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資源 | |
| 服務發現資源 | services | svc | 統一pod對外接口 |
| ingress | ing | 統一pod對外接口 | |
| 存儲資源 | volumeattachments | 存儲 | |
| persistentvolumes | pv | 存儲 | |
| persistentvolumeclaims | pvc | 存儲 | |
| 配置資源 | configmaps | cm | 配置 |
| secrets | 配置 |
操作命令
kubernetes允許對資源進行多種操作,可以通過--help查看詳細的操作命令
kubectl --help經常使用的操作有下面這些:
| 基本命令 | create | 創建 | 創建一個資源 |
| edit | 編輯 | 編輯一個資源 | |
| get | 獲取 | 獲取一個資源 | |
| patch | 更新 | 更新一個資源 | |
| delete | 刪除 | 刪除一個資源 | |
| explain | 解釋 | 展示資源文檔 | |
| 運行和調試 | run | 運行 | 在集群中運行一個指定的鏡像 |
| expose | 暴露 | 暴露資源為Service | |
| describe | 描述 | 顯示資源內部信息 | |
| logs | 日志輸出容器在 pod 中的日志 | 輸出容器在 pod 中的日志 | |
| attach | 纏繞進入運行中的容器 | 進入運行中的容器 | |
| exec | 執行容器中的一個命令 | 執行容器中的一個命令 | |
| cp | 復制 | 在Pod內外復制文件 | |
| rollout | 首次展示 | 管理資源的發布 | |
| scale | 規模 | 擴(縮)容Pod的數量 | |
| autoscale | 自動調整 | 自動調整Pod的數量 | |
| 高級命令 | apply | rc | 通過文件對資源進行配置 |
| label | 標簽 | 更新資源上的標簽 | |
| 其他命令 | cluster-info | 集群信息 | 顯示集群信息 |
| version | 版本 | 顯示當前Server和Client的版本 |
(2)命令式對象配置
命令式對象配置就是使用命令配合配置文件一起來操作kubernetes資源。
1) 創建一個tomact-pod.yaml,內容如下:
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)執行create命令,創建資源:
[root@master ~]# kubectl create -f tomact-pod.yaml namespace/mk created pod/tomact-pod created此時創建了兩個資源對象,分別是namespace和pod
3)執行get命令,查看資源:
[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這樣就顯示了兩個資源對象的信息
4)執行delete命令,刪除資源:
[root@master ~]# kubectl delete -f tomact-pod.yaml namespace "mk" deleted pod "tomact-pod" deleted此時兩個資源對象被刪除了
命令式對象配置的方式操作資源,可以理解為:命令 ?+ ?yaml配置文件(3)聲明式對象配置
聲明式對象配置跟命令式對象配置很相似,但是它只有一個命令apply。
# 首先執行一次kubectl apply -f yaml文件,創建資源 [root@master ~]# kubectl apply -f tomact-pod.yaml namespace/mk created pod/tomact-pod created ? # 再次執行一次kubectl apply -f yaml文件,資源更新 [root@master ~]# kubectl apply -f tomact-pod.yaml namespace/mk unchanged pod/tomact-pod unchangedapply操作資源:如果資源不存在,就創建,相當于 kubectl create如果資源已存在,就更新,相當于 kubectl patch擴展:
kubectl可以在node節點上運行
kubectl的運行是需要進行配置的,它的配置文件是$HOME/.kube,如果想要在node節點運行此命令,需要將master上的.kube文件復制到node節點上,即在master節點上執行下面操作:
scp ?-r ~/.kube ? node1: ~/總結
以上是生活随笔為你收集整理的K8S Learning(3)——资源管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞盘制作方法 飞盘如何制作
- 下一篇: fairy什么意思 fairy的解释及读