|NO.Z.00019|——————————|^^ 標準 ^^|——|KuberNetes&標準.V18|---------------------------------------------------------|常用操作.V04|更新資源|刪除資源|
阿新 • • 發佈:2022-03-29
[CloudNative:KuberNetes&書籤.V18] [Applications.KuberNetes] [|DevOps|kubernetes|k8s.二進位制1.20|網路規劃|常用操作|]
一、更新資源
### --- 更新資源 [root@k8s-master01 ~]# kubectl set image deployment/frontend www=image:v2 // 滾動更新 "frontend" Deployment 的 "www" 容器映象 [root@k8s-master01 ~]# kubectl rollout history deployment/frontend // 檢查 Deployment 的歷史記錄,包括版本 [root@k8s-master01 ~]# kubectl rollout undo deployment/frontend // 回滾到上次部署版本 [root@k8s-master01 ~]# kubectl rollout undo deployment/frontend --to-revision=2 // 回滾到特定部署版本 [root@k8s-master01 ~]# kubectl rollout status -w deployment/frontend // 監視 "frontend" Deployment 的滾動升級狀態直到完成 [root@k8s-master01 ~]# kubectl rollout restart deployment/frontend // 輪替重啟 "frontend" Deployment [root@k8s-master01 ~]# cat pod.json | kubectl replace -f - // 通過傳入到標準輸入的 JSON 來替換 Pod
~~~ # 強制替換,刪除後重建資源。會導致服務不可用。
[root@k8s-master01 ~]# kubectl replace --force -f ./pod.json
~~~ # 為多副本的 nginx 建立服務,使用 80 埠提供服務,連線到容器的 8000 埠。
[root@k8s-master01 ~]# kubectl expose rc nginx --port=80 --target-port=8000
二、部分更新資源~~~ # 將某單容器 Pod 的映象版本(標籤)更新到 v4 [root@k8s-master01 ~]# kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f - [root@k8s-master01 ~]# kubectl label pods my-pod new-label=awesome // 新增標籤 [root@k8s-master01 ~]# kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq // 添加註解 [root@k8s-master01 ~]# kubectl autoscale deployment foo --min=2 --max=10 // 對 "foo" Deployment 自動伸縮容
### --- 部分更新資源
~~~ # 部分更新某節點
[root@k8s-master01 ~]# kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
~~~ # 更新容器的映象;spec.containers[*].name 是必須的。因為它是一個合併性質的主鍵。 [root@k8s-master01 ~]# kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}' ~~~ # 使用帶位置陣列的 JSON patch 更新容器的映象 [root@k8s-master01 ~]# kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'
~~~ # 使用帶位置陣列的 JSON patch 禁用某 Deployment 的 livenessProbe
[root@k8s-master01 ~]# kubectl patch deployment valid-deployment --type json -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/livenessProbe"}]'
~~~ # 在帶位置陣列中新增元素
[root@k8s-master01 ~]# kubectl patch sa default --type='json' -p='[{"op": "add", "path": "/secrets/1", "value": {"name": "whatever" } }]'
三、刪除資源
### --- 刪除資源
[root@k8s-master01 ~]# kubectl delete -f ./pod.json // 刪除在 pod.json 中指定的型別和名稱的 Pod
[root@k8s-master01 ~]# kubectl delete pod,service baz foo // 刪除名稱為 "baz" 和 "foo" 的 Pod 和服務
[root@k8s-master01 ~]# kubectl delete pods,services -l name=myLabel // 刪除包含 name=myLabel 標籤的 pods 和服務
[root@k8s-master01 ~]# kubectl delete pods,services -l name=myLabel --include-uninitialized // 刪除包含 label name=myLabel 標籤的 Pods 和服務
[root@k8s-master01 ~]# kubectl -n my-ns delete po,svc --all // 刪除在 my-ns 名字空間中全部的 Pods 和服務
### --- 刪除所有與 pattern1 或 pattern2 awk 模式匹配的 Pods
[root@k8s-master01 ~]# kubectl get pods -n mynamespace --no-headers=true | awk '/pattern1|pattern2/{print $1}' | xargs kubectl delete -n mynamespace pod
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)