K8S資源管理方式
文章目錄
- K8S資源管理方式
- 一、陳述式資源管理
- 1.基礎(chǔ)命令操作
- 2.創(chuàng)建pod
- 3.查看資源狀態(tài)
- 4.查看pod中的容器日志
- 5.進(jìn)入pod中的容器
- 6.刪除pod資源
- 7.pod擴(kuò)容
- 8.項(xiàng)目生命周期管理(創(chuàng)建-->發(fā)布-->更新-->回滾-->刪除)
- 8.1創(chuàng)建service
-
- 8.2發(fā)布
- 8.3更新
- 8.4回滾
- 8.5刪除
- 二、聲明式資源管理
-
一、陳述式資源管理
1.基礎(chǔ)命令操作
//查看版本信息
kubectl version//查看資源對(duì)象簡(jiǎn)寫(xiě)
kubectl api-resources//查看集群信息
kubectl cluster-info//配置kubectl自動(dòng)補(bǔ)全
在/etc/bashrc 添加 然后su
source <(kubectl completion bash)//node節(jié)點(diǎn)查看日志
journalctl -u kubelet -f
2.創(chuàng)建pod
kubectl create <資源類(lèi)型> <資源名稱(chēng)> -n 命名空間 [選項(xiàng)]--image=鏡像 --replicas=副本數(shù) --port=容器端口
3.查看資源狀態(tài)
kubectl get <資源類(lèi)型|all> [資源名稱(chēng)] -n 命名空間 -o wide|yaml|json -w(跟蹤pod資源狀態(tài))kubectl describe <資源類(lèi)型> <資源名稱(chēng)> -n 命名空間
4.查看pod中的容器日志
kubectl logs -n 命名空間 <Pod資源名稱(chēng)> [-c 容器名稱(chēng)]
kubectl logs -n 命名空間 <Pod資源名稱(chēng)> -p ***查看重啟之前的容器日志
5.進(jìn)入pod中的容器
kubectl exec -it -n 命名空間 <Pod資源名稱(chēng)> [-c 容器名稱(chēng)] sh|bash
6.刪除pod資源
kubectl delete <資源類(lèi)型> <資源名稱(chēng)>|--all(刪除所有資源) -n 命名空間 kubectl delete <資源類(lèi)型> <資源名稱(chēng)>|--all -n 命名空間 --force --grace-period=0 ###立即終止Pod運(yùn)行,強(qiáng)制刪除資源
7.pod擴(kuò)容
kubectl scale -n 命名空間 deployment <資源名稱(chēng)> --replicas=副本數(shù)
8.項(xiàng)目生命周期管理(創(chuàng)建–>發(fā)布–>更新–>回滾–>刪除)
8.1創(chuàng)建service
kubectl expose -n 命名空間 deployment <資源名稱(chēng)> --name <自定義svc資源名稱(chēng)> --port <clusterIP的端口> --target-port <容器的端口> --type <svc的類(lèi)型>kubectl create svc <svc資源類(lèi)型> <資源名稱(chēng)> --tcp=<clusterIP的端口>:<容器的端口>
service類(lèi)型
ClusterIP:默認(rèn)的service資源的類(lèi)型,提供clusterIP供K8S集群內(nèi)部訪(fǎng)問(wèn)NodePort:會(huì)在每個(gè)Node節(jié)點(diǎn)上開(kāi)啟一個(gè)端口,K8S集群內(nèi)部和外部的用戶(hù)都可以通過(guò)NodeIP:NodePort訪(fǎng)問(wèn)service以及其關(guān)聯(lián)的PodLoadBalancer:使用公有云的SLB服務(wù)和service做映射,用戶(hù)可以使用公有云SLB服務(wù)的IP地址即可將請(qǐng)求轉(zhuǎn)發(fā)到Node節(jié)點(diǎn),再通過(guò)NodeIP:NodePort訪(fǎng)問(wèn)service以及其關(guān)聯(lián)的PodExternalName:相當(dāng)于給一個(gè)域名或IP做別名,Pod可以通過(guò)這個(gè)service訪(fǎng)問(wèn)相關(guān)的外部服務(wù)
service端口
port :service 資源的 clusterIP 所使用的端口
nodePort :在NodePort類(lèi)型的service所定義的,在每個(gè)Node節(jié)點(diǎn)上開(kāi)啟的端口(默認(rèn)范圍為30000~32767)
targetPort :service 將發(fā)送給 port 或 nodePort 的請(qǐng)求轉(zhuǎn)發(fā)到后端的 Pod 的容器端口containerPort :創(chuàng)建 Pod 時(shí)所指定的容器端口K8S集群內(nèi)部 http://clusterIP:port --> podIP:containerPort
K8S集群外部 http://nodeIP:nodePort --> podIP:containerPort
8.2發(fā)布
應(yīng)用的發(fā)布策略:
藍(lán)綠發(fā)布
滾動(dòng)發(fā)布
灰度發(fā)布/金絲雀發(fā)布
kubectl set image deployment <資源名稱(chēng)> <容器名>=<鏡像名> && kubectl rollout pause deployment <資源名稱(chēng)>
kubectl rollout resume deployment <資源名稱(chēng)>25% max unavailable 滾動(dòng)更新過(guò)程中,銷(xiāo)毀的Pod數(shù)量不超過(guò)期望副本數(shù)的25%,向下取整
25% max surge 滾動(dòng)更新過(guò)程中,新增的Pod數(shù)量不超過(guò)期望副本數(shù)的25%,向上取整期望的Pod副本數(shù)是10個(gè),銷(xiāo)毀的數(shù)量2,新增3 整個(gè)更新過(guò)程中Pod的數(shù)量會(huì)一致保持在 8 ~ 13
8.3更新
kubectl set image -n 命名空間 deployment <資源名稱(chēng)> <容器名>=<鏡像名>
8.4回滾
kubectl rollout -n 命名空間 history deployment <資源名稱(chēng)>
kubectl rollout -n 命名空間 undo deployment <資源名稱(chēng)>(回滾到上一個(gè)版本) [--to-revision= ](回滾到指定版本)
kubectl rollout -n 命名空間 status deployment <資源名稱(chēng)> (查看回滾狀態(tài))
8.5刪除
kubectl get all -n 命名空間先刪控制器kubectl delete -n 命名空間 資源名稱(chēng)在刪service
kubectl delete -n 命名空間svc service資源名稱(chēng)
二、聲明式資源管理
kubectl apply|create -f XXX.yaml ##根據(jù)yaml文件創(chuàng)建pod
kubectl delete -f XXX.yaml ##根據(jù)yaml文件刪除podkubectl edit <資源類(lèi)型> <資源名稱(chēng)> ##在線(xiàn)編輯yaml文件kubectl explain <資源類(lèi)型>.<一級(jí)字段>.<二級(jí)字段>... ##解釋指定字段的含義
如何獲取資源配置清單文件模板(yaml配置文件)
1)手撕yaml配置文件,可根據(jù) kubectl explain 命令獲取字段信息
2)無(wú)中生有的方式:kubectl create|run|expose .... --dry-run=client -o yaml > XXX.yaml
3)查看已存在的資源配置方式:kubectl get <資源類(lèi)型> <資源名稱(chēng)> -n 命令空間 -oyaml > XXX.yamlkubectl edit <資源類(lèi)型> <資源名稱(chēng)> 手動(dòng)復(fù)制資源配置,再粘貼到文件中
4)復(fù)制官方文檔的資源配置案例